Referencia de XML para el inventario de precios y habitaciones (transacciones)

Esta página proporciona una referencia para los mensajes Transaction basados en XML.

<Transaction>

El elemento raíz de un mensaje Transaction es <Transaction>. Es un contenedor para información descriptiva sobre habitaciones y paquetes, así como precios y disponibilidad de habitaciones y paquetes.

El elemento <Transaction> aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Los mensajes que utilizan <Transaction> como elemento raíz requieren al menos un elemento hijo. Los mensajes de transacción pueden tener cualquier número de elementos secundarios, siempre que el tamaño total del mensaje no supere los 100 MB.

Sintaxis

El elemento <Transaction> usa la siguiente sintaxis:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">

  <!-- Defines data about a room or package (Room Bundle) -->
  <PropertyDataSet>
    ...
  </PropertyDataSet>

  <!-- Updates/sets prices and availability for rooms and Room Bundles -->
  <!-- (Also removes itineraries from inventory) -->
  <Result>
    ...
  </Result>

</Transaction>

Atributos

El elemento <Transaction> tiene los siguientes atributos:

Atributo ¿Es obligatorio? Tipo Descripción
id Required string Un identificador único para cada mensaje de transacción.
partner Optional string La cuenta del socio a la que corresponde el mensaje de transacción. Normalmente se utiliza esta opción si su sistema backend proporciona feeds de precios para múltiples cuentas de socios. Este valor de cadena es el valor de "Clave de socio" que aparece en la página de configuración de la cuenta en Hotel Center.
timestamp Required DateTime

Es el momento en que se envió el mensaje de Transaction.

Cualquier mensaje enviado con una marca de tiempo dentro de las últimas 24 horas será procesado, y aquellos que no la tengan serán descartados.

Los mensajes se procesan en el orden de timestamp y no en el orden en que se reciben. Por ejemplo, una actualización de precio con una marca de tiempo de 2019-05-03 14:09:00 que se recibe después de un mensaje con una marca de tiempo de 2019-05-03 14:10:00 se seguirá procesando en orden, y se usará el precio del mensaje con la marca de tiempo de 2019-05-03 14:10:00.

Elementos secundarios

El elemento <Transaction> tiene los siguientes elementos secundarios:

Elemento hijo ¿Obligatorio? Tipo Description
<PropertyDataSet> Optional* <PropertyDataSet>

Describe una habitación específica y paquetes de habitaciones. Normalmente, este elemento se utiliza en un mensaje de transacción separado para definir valores compartidos para los paquetes de salas y reducir el tamaño de los mensajes de transacción.

<Result> Optional* <Result>

Datos de precios para el itinerario de una habitación o un elemento <RoomBundle> que define los paquetes de habitaciones y tipos adicionales de habitaciones para la propiedad. El elemento <Result> también se puede utilizar para eliminar itinerarios del inventario.

* Se requiere al menos uno de <PropertyDataSet> o <Result>.

Ejemplos

Datos de la habitación

El siguiente ejemplo define los datos de una sala en un mensaje de transacción:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Datos de precios

El siguiente ejemplo define los datos de precios en un mensaje de transacción:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
    <MilesIncluded>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines"/>
      </Provider>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
</Transaction>

Tarifas por noche

El siguiente ejemplo define los datos de precios para estancias de 1 a 7 noches a partir del 7 de junio de 2023:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">209.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">419.98</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>3</Nights>
    <Baserate currency="USD">614.97</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>4</Nights>
    <Baserate currency="USD">819.96</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>5</Nights>
    <Baserate currency="USD">999.95</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>6</Nights>
    <Baserate currency="USD">1193.94</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>7</Nights>
    <Baserate currency="USD">1259.93</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
</Transaction>


Tasas base y condicionales

En el siguiente ejemplo, se muestra un mensaje de Transaction que contiene una tarifa base y una tarifa condicional:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Eliminar inventario

El siguiente ejemplo elimina varios inventarios (estancias de 1 noche para varias fechas diferentes) de un hotel del inventario:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-23</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-24</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <!---Sending <Baserate> is optional with <Unavailable> -->
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-25</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
</Transaction>

<PropertyDataSet>

Un contenedor para información de habitación y paquete (o Paquete de habitación) en un mensaje <Transaction>. Los valores establecidos en un hotel tienen prioridad sobre los valores establecidos en un socio. Google almacena esta información para que no tengas que definirla cada vez que envíes actualizaciones de precios.

El elemento <PropertyDataSet> aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>  // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Para obtener más información, consulte los metadatos del paquete de habitaciones .

Sintaxis

El elemento <PropertyDataSet> usa la siguiente sintaxis:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    <!-- (Required) ID that matches the Hotel List Feed -->
    <Property>hotel_ID</Property>

    <!-- (Optional) Defines metadata about a room -->
    <RoomData>
      ...
    </RoomData>

    <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) -->
    <PackageData>
      ...
    </PackageData>
  </PropertyDataSet>
  ...
</Transaction>

Atributos

El elemento <PropertyDataSet> no tiene atributos.

Elementos secundarios

El elemento <PropertyDataSet> tiene los siguientes elementos secundarios:

Elemento hijo ¿Obligatorio? Tipo Description
<PackageData> Optional* <PackageData> Describe un paquete de habitación. Estos datos están asociados a un socio y un hotel, pero no a un itinerario. Este elemento es similar a <RoomData>, pero describe servicios y términos que no forman parte de la descripción física de la habitación.

En tus actualizaciones de precios, haces referencia al ID del paquete.

Para obtener más información, consulte los metadatos del paquete de habitaciones .

<Property> Required string El identificador del hotel al que se aplican los datos asociados. El valor de este elemento debe ser una cadena que coincida con la lista <id> en su feed de lista de hoteles.
<RoomData> Optional* <RoomData> Describe una habitación. Estos datos están asociados a un socio y un hotel, pero no a un itinerario.

En tus actualizaciones de precios, haces referencia al ID de la habitación.

* Se requiere al menos uno de <PackageData> o <RoomData>.

Ejemplos

Datos de la habitación y del paquete

El siguiente ejemplo muestra datos tanto de habitaciones como de paquetes en un <PropertyDataSet>:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Cuando envíes precios y disponibilidad para esta habitación y paquete de habitaciones, debes hacer referencia a los identificadores de la habitación y del paquete en tus mensajes de precios. El resultado es que reduces considerablemente el tamaño de tus mensajes y también la cantidad de errores que podrías encontrar debido a datos duplicados. Para obtener más información, consulte los metadatos del paquete de habitaciones .

<RoomData>

Define metadatos independientes del itinerario sobre las habitaciones y, por extensión, sobre los Paquetes de Habitaciones (ya que los Paquetes de Habitaciones son habitaciones más servicios adicionales). Utilice <RoomData> para reducir la repetición de datos descriptivos en su feed de precios.

El elemento <RoomData> aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Los elementos <RoomData> contienen información asociada a un socio y un hotel, pero no a un itinerario. El propósito previsto es para todos los datos no relacionados con el itinerario.

El elemento <RoomData> es similar a <PackageData>, pero describe la habitación física en lugar de las comodidades y los términos de un paquete. Utiliza <RoomData> y <PackageData> en combinación para proporcionar detalles sobre los Paquetes de Habitaciones. Para habitaciones individuales que no forman parte de un paquete, utilice simplemente <RoomData>.

Puedes definir los elementos <RoomData> y <PackageData> para la misma habitación o Room Bundle. Cuando Google muestre esa habitación o paquete en los resultados de búsqueda, incluirá las descripciones de ambos, separadas por un guion.

Para obtener más información, consulte los metadatos del paquete de habitaciones .

Sintaxis

El elemento <RoomData> usa la siguiente sintaxis:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    ...
    <RoomData>
      <RoomID>room_ID</RoomID>

      <Name>
        <Text text="room_name" language="language_code"/>
        ...
      </Name>

      <Description>
        <Text text="room_description" language="language_code"/>
        ...
      </Description>

      <Capacity>max_number_of_occupants</Capacity>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults, children, or seniors --></OccupancyDetails>
      <OccupancySettings>
        <MinOccupancy>min_number_of_occupants</MinOccupancy>
        <MinAge>min_age_of_occupants</MinAge>
      </OccupancySettings>

      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      <RoomFeatures>
        ...
      </RoomFeatures>
    </RoomData>
    ...
  </PropertyDataSet>
</Transaction>

Atributos

El elemento <RoomData> no tiene atributos.

Elementos secundarios

El elemento <RoomData> tiene los siguientes elementos secundarios:

Elemento secundario ¿Obligatorio? Tipo Description
<Capacity> Optional integer Es la cantidad máxima de huéspedes que una habitación puede alojar físicamente. En el caso de una habitación, la capacidad debe ser mayor o igual que la ocupación.

Cuando se especifica, este valor debe ser igual o mayor que el valor del elemento <Occupancy>, que es el número de huéspedes previsto para una habitación en particular. Por ejemplo, el <Capacity> de una suite grande podría ser 6, pero el <Occupancy> para ella es 4.

El valor de <Capacity> debe ser un entero positivo entre 1 y 20, inclusive.

<Description> Optional Object Una descripción detallada de la habitación. Este elemento debe contener información no descrita por otros elementos o por el elemento <Name>. No se deben usar mayúsculas al describir la habitación.

El elemento <Description> toma un único elemento hijo, <Text>, que tiene los siguientes dos atributos obligatorios:

  • text: Es una descripción detallada de la habitación.
  • language: Un código de idioma de dos letras; por ejemplo, fr.

Usa un elemento <Text> independiente para cada idioma en el que puedan aparecer tu anuncio o vínculo para reservar sin cargo (con diferentes valores para los atributos language).

El siguiente ejemplo muestra las versiones en francés e inglés de la descripción de la habitación:

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string El nombre de la categoría de habitación. Este valor debe coincidir con el que aparece en la página de inicio del hotel (anteriormente punto de venta). No asigne a este elemento el valor de letras mayúsculas.

Este elemento toma un único elemento hijo, <Text>, que tiene los siguientes dos atributos obligatorios:

  • text: El nombre de la habitación.
  • language: Un código de idioma de dos letras; por ejemplo, fr.

Utilice un elemento <Text> separado para cada idioma en el que pueda aparecer su anuncio o enlace de reserva gratuita (con diferentes valores para los atributos language).

El siguiente ejemplo muestra las versiones en francés e inglés del nombre de la sala:

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer Es la cantidad máxima de huéspedes para los que está destinada una habitación. Por ejemplo, una suite grande podría alojar físicamente a 6 huéspedes (capacidad = 6), pero está diseñada para un máximo de 4.

Este valor debe ser menor o igual que el elemento <Capacity>, que es el número de personas que la habitación puede acomodar físicamente.

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

<Occupancy> puede estar acompañado de <OccupancyDetails>, que especifica el tipo de invitados (adultos o niños). Consulta <OccupancyDetails> para obtener la sintaxis y la descripción de los elementos secundarios.

<OccupancySettings> Optional Object Es la configuración que puede restringir o modificar los requisitos de ocupación de una habitación.

El elemento <OccupancySettings> toma los siguientes elementos secundarios:

  • <MinOccupancy>: Es la cantidad mínima de huéspedes que pueden hospedarse en una habitación. Por ejemplo, si se establece en 2, esta habitación no se puede reservar para un solo huésped.

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

  • <MinAge>: Es la edad mínima para todos los huéspedes que se hospedan en una habitación. Por ejemplo, si se establece en 18, esta habitación solo se puede reservar para grupos en los que todos los huéspedes sean mayores de 18 años.

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

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

No es necesario incluir todos los elementos secundarios.

<PhotoURL> Optional Object Es una URL y un título opcional para una foto de la habitación o el paquete de habitaciones determinado. Puedes especificar más de un <PhotoURL> para una habitación o un paquete de habitaciones. Cada URL de foto debe estar en su propio objeto <PhotoURL>.

Este elemento toma los siguientes elementos secundarios:

  • <URL>: Especifica la ubicación de la foto. La ubicación debe ser pública (no estar protegida por un firewall) y debe incluir el protocolo (por ejemplo, https://). Usa solo un <URL> por <PhotoURL>.
  • <Caption>: Define el título de la foto. Este elemento toma un único elemento hijo, <Text>, que tiene dos atributos obligatorios: text y language. El atributo text es el título y el atributo language especifica un código de idioma de dos letras como en.

Ejemplo:

<PhotoURL>
  <URL>https://www.example.com/static/bar/image1234.jpg</URL>
  <Caption>
    <Text text="A bright and breezy way to enjoy your mornin'
      cuppa tea." language="en"/>
    <Text text="Une façon lumineuse et aérée pour profiter
      de votre journée tasse de thé." language="fr"/>
  </Caption>
</PhotoURL>
<PhotoURL>
  <URL>https://www.foo.com/static/bar/image5678.jpg</URL>
  <Caption>
    <Text text="Or, perhaps you prefer coffee." language="en"/>
    <Text text="Ou peut-être préférez-vous le café." language="fr"/>
  </Caption>
</PhotoURL>
<RoomFeatures> Optional <RoomFeatures> Contiene información sobre las características de la habitación.
<RoomID> Required string El identificador único de la habitación. Utilice este ID para relacionar los datos de la habitación con los bloques <Result> en sus actualizaciones de precios. Para obtener más información, consulte los metadatos del paquete de habitaciones . (También puede utilizar este ID para hacer referencia a una definición de sala común en un único mensaje de transacción al definir datos de sala en línea).

Ejemplos

Datos de la habitación

El siguiente ejemplo define los datos de la habitación:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Metadatos de habitaciones y paquetes

El siguiente ejemplo define los metadatos de la sala y del paquete:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Paquetes de varias habitaciones

En el siguiente ejemplo, se definen los metadatos de la habitación y el paquete para varios Room Bundles:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<RoomFeatures>

Define las características que se encuentran en la habitación.

El elemento <RoomFeatures> aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
            + <RoomFeatures>

Sintaxis

El elemento <RoomFeatures> usa la siguiente sintaxis:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    ...
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="width"/>
             <Length unit="cm" number="length"/>
           </Bed>
           <!-- Include with any additional beds. -->
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>[shared|private]</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>[smoking|non_smoking]</Smoking>
        <BathAndToilet relation="[together|separate]">
          <Bath bathtub="[false|true]" shower="[false|true]"/>
          <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <!-- (Optional) Defines the type of views from the room. -->
          <!-- Example: <OceanView/> -->
        </Views>

      </RoomFeatures>
      ...
    </RoomData>
    ...
  </PropertyDataSet>
</Transactions>

Atributos

El elemento <RoomFeatures> no tiene atributos.

Elementos secundarios

El elemento <RoomFeatures> tiene los siguientes elementos secundarios:

Elemento hijo ¿Obligatorio? Tipo Description
<JapaneseHotelRoomStyle> Optional 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 camas futón.
  • japanese_western: Una habitación de estilo occidental japonés con camas de estilo occidental y futones de estilo japonés.
<Beds> Optional Object Contiene tantos <Bed> como tiene la habitación. Ten en cuenta que los futones japoneses no deben contarse 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 hijos:
  • <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>
<Suite> Optional empty Proporcione este elemento cuando esta habitación sea una suite.
<Capsule> Optional empty Proporcione este elemento cuando esta habitación sea una habitación cápsula.
<Roomsharing> Optional enum Si esta habitación se comparte con otros ocupantes, como propietarios u otros huéspedes. Los valores válidos son shared y private.
<Outdoor> Optional empty Proporcione este elemento cuando esta habitación sea un alojamiento al aire libre que no tenga paredes fijas, fontanería ni climatización. Por ejemplo, las habitaciones de hotel no son alojamientos al aire libre, mientras que los campings donde los huéspedes se alojan en tiendas de campaña y los parques de caravanas donde los huéspedes traen su propia caravana sí lo son.
<MobilityAccessible> Optional empty Incluya este elemento cuando esta habitación sea accesible para personas con movilidad reducida.
<Smoking> Optional enum Si esta habitación es para no fumadores o para fumadores. Los valores válidos son non_smoking y smoking.
<BathAndToilet> Optional Object Contiene información sobre la bañera y el inodoro de la habitación.

El atributo es:

  • relation (opcional): Indica cómo se colocan la bañera y el inodoro uno frente al otro. Los valores válidos son together (tanto la bañera como el inodoro están ubicados juntos en la misma habitación (por ejemplo, el baño) uno al lado del otro) y separate (la bañera y el inodoro tienen espacios dedicados cada uno). Este atributo no debe configurarse cuando la habitación no tenga ni bañera ni inodoro.

El elemento puede tomar opcionalmente los siguientes elementos secundarios:

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

    Los atributos son los siguientes:

    • bathtub (opcional): Indica que el baño tiene 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 la habitación tiene un inodoro.

    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 inodoro 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>
<OpenAirBath> Optional empty Incluya este elemento cuando esta habitación tenga un baño privado al aire libre.
<AirConditioning> Optional empty Proporcione este elemento cuando esta habitación tenga aire acondicionado.
<Balcony> Optional empty Incluya este elemento cuando la habitación tenga balcón o terraza.
<Views> Optional Object Las opciones válidas incluyen:

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

Ejemplos

JapaneseHotelRoomStyle no tiene un valor predeterminado. Omitir un valor no genera un error XML, pero su anuncio no se muestra en los resultados de búsqueda cuando el usuario filtra por tipo de habitación o número de 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>
      <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>

Dos camas dobles

El siguiente es un ejemplo de una habitación japonesa 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>
      <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>


Estilo japonés sin cama

El siguiente es un ejemplo de una habitación de estilo japonés sin cama. No se requiere información sobre la cama para la habitación 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>
      <RoomID>RoomID_1</RoomID>
      <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>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Si el socio no dispone de la información sobre el número de camas en las habitaciones japanese_western, siga el ejemplo:

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

<PackageData>

Define metadatos independientes del itinerario sobre los paquetes de habitaciones para una propiedad. Este elemento contiene información asociada a un socio y un hotel, pero no a un itinerario. El objetivo es definir una sola vez todos los datos no relacionados con el itinerario y hacer referencia a ellos desde los datos del itinerario.

El elemento <PackageData> aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

El elemento <PackageData> es similar a <RoomData>, pero describe características y términos de tarifas que no forman parte de la descripción física de la habitación. Utiliza <RoomData> y <PackageData> en combinación para proporcionar detalles sobre los paquetes de habitaciones y las características de tarifas. Para habitaciones individuales que no forman parte de un paquete, utilice simplemente <RoomData>.

Puedes definir los elementos <RoomData> y <PackageData> para la misma habitación o Room Bundle. Cuando Google muestre esa habitación o paquete en los resultados de búsqueda, incluirá las descripciones de ambos, separadas por un guion.

Si actualizas un solo elemento <PackageData> para una propiedad, debes actualizar todos los elementos <PackageData> y <RoomData> de la propiedad. Cada <PropertyDataSet> se considera como todos los datos sobre la propiedad y sobrescribe cualquier dato existente.

Para obtener más información, consulte los metadatos del paquete de habitaciones .

Sintaxis

El elemento <PackageData> usa la siguiente sintaxis:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    <PackageData>
      <PackageID>package_ID</PackageID>
      <Name>
        <Text text="package_name" language="language_code"/>
        ...
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
        ...
      </Description>
      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails><!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
      <!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>
      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      ...
      <Meals>
        <Breakfast
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
        <Dinner
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
      </Meals>
      <CheckinTime>checkin_time</CheckinTime>
      <CheckoutTime>checkout_time</CheckoutTime>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Special Rewards">
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum">
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <!-- a PackageID with a MilesIncluded rate feature -->
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
       <Text text="Room with Bundled Miles" language="en">
      </Name>
      <ChargeCurrency>hotel </ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <!-- Add Loyalty point information -->
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

Atributos

El elemento <PackageData> no tiene atributos.

Elementos secundarios

El elemento <PackageData> tiene los siguientes elementos secundarios:

Elemento hijo ¿Obligatorio? Tipo Description
<BreakfastIncluded> Optional boolean Especifica si este paquete incluye el desayuno en la tarifa. Los valores válidos son 0 (o false) y 1 (o true).

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

<ChargeCurrency> Optional enum Cuándo y dónde paga el usuario por una reserva. Este elemento utiliza la misma sintaxis que <ChargeCurrency> en un <Result>.

El valor predeterminado es web.

<CheckinTime> Optional Time Hora de llegada más temprana posible. La hora debe ser anterior a las 24:00 en la hora local del hotel.
<CheckoutTime> Optional Time Es la hora de salida más tardía posible en la hora local del hotel.
<Description> Optional Object Es una descripción detallada del paquete. Este elemento debe contener información no descrita por otros elementos o por el elemento <Name>. No debes usar todas las letras en mayúsculas cuando especifiques la descripción de la habitación.

El elemento <Description> toma un único elemento hijo, <Text>, que tiene dos atributos obligatorios, text y language. El atributo text es la descripción, y el atributo language especifica un código de idioma de dos letras, como se muestra en el siguiente ejemplo:

<Description>
  <Text text="Two breakfast buffet certificates for
    each night of stay." language="en"/>
  <Text text="Deux certificats petit-déjeuner buffet
    pour chaque nuit de séjour." language="fr"/>
</Description>
<InternetIncluded> Optional boolean Si un paquete incluye acceso a Internet sin cargo, mientras que otros paquetes no incluyen ese servicio. No configure este elemento para los paquetes de habitaciones en un hotel que ofrece internet gratuito en todas las habitaciones. Este elemento no se aplica al acceso a internet por cable en la habitación ni al acceso a internet inalámbrico que no esté disponible en las habitaciones de los huéspedes. Los valores válidos son 0 (o false) y 1 (o true).
<Meals> Optional Object Contiene información sobre las comidas de este paquete.

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

  • included (obligatorio): Establézcalo en 1 (o true) si la tarifa incluye desayuno/cena; de lo contrario, establézcalo en 0 o false.
  • in_room (opcional): Establezca en 1 (o true) si los huéspedes tienen la opción de desayunar/cenar en la habitación en la que se hospedan; de lo contrario, establezca en 0 (o false).
  • in_private_space (opcional): Establezca en 1 (o true) si los huéspedes tienen la opción de desayunar/cenar en un espacio (excepto la habitación en la que se alojan) donde pueden evitar el contacto con otros huéspedes; de lo contrario, establezca en 0 (o false).
  • buffet (opcional): Establezca en 1 (o true) si el desayuno/cena se sirve como buffet; de lo contrario, establezca en 0 (o false).

Los atributos opcionales se utilizan solo cuando included es verdadero.

Para que funcionen los filtros de comidas (no meals, breakfast only, dinner only y breakfast and dinner), tanto <Breakfast> como <Dinner> deben recibir el atributo included.

<Name> Required string El nombre del paquete. Este valor debe coincidir con el que aparece en la página de destino del hotel. No asigne a este elemento el valor de letras mayúsculas.

Este elemento toma un solo elemento secundario, <Text>, que tiene dos atributos, text y language. El atributo text es la descripción, y el atributo language especifica un código de idioma de dos letras, como se muestra en el siguiente ejemplo:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer Es la cantidad máxima de huéspedes para los que está destinado un paquete de habitaciones. Por ejemplo, una suite grande podría alojar físicamente a 6 huéspedes, pero está diseñada para un máximo de 4.

Este valor debe ser menor o igual que el elemento <Capacity>, que es el número de personas que la habitación puede acomodar físicamente.

El valor de <Occupancy> debe ser un entero positivo entre 1 y 99, inclusive.

Si especifica este elemento tanto en <RoomBundle> como en <PackageData>, el valor en <RoomBundle> tiene prioridad.

Nota:

<Occupancy> puede estar acompañado de <OccupancyDetails>,que especifica el tipo de invitados (adultos o niños). Consulte <OccupancyDetails> para obtener la sintaxis y la descripción de los elementos secundarios.
<PackageID> Required string

El identificador único del paquete. Utilice este ID para relacionar los datos del paquete de habitaciones con los bloques <Result> en sus actualizaciones de precios. Para obtener más información, consulte los metadatos del paquete de habitaciones .

(También puedes usar este ID para hacer referencia a una definición común de paquete de habitaciones que se usa en un solo mensaje de Transaction cuando se definen datos de paquetes de habitaciones intercalados).

<ParkingIncluded> Optional boolean Si el paquete de habitación incluye estacionamiento gratuito, cuando en este hotel el estacionamiento sería un servicio de pago. No especifique un valor para este elemento en el caso de un hotel que ofrece aparcamiento gratuito.

Los valores válidos son 0 (o false) y 1 (o true). El valor predeterminado es false.

<PhotoURL> Optional Object (Igual que <PhotoURL> en <RoomData>, pero para el paquete [p.ej., fotos de comidas]).
<Refundable> Optional Object Permite indicar que una tarifa es totalmente reembolsable o que ofrece cancelación gratuita. Si no se proporciona, no se mostrará ninguna información sobre el reembolso. Una política de reembolso en el nivel <PackageData> anula la política de reembolso en el nivel <Result>. Una política de reembolso en el nivel <Rates> anula la política de reembolso en el nivel <PackageData>. También se puede destacar la opción de reembolso para los usuarios mediante alternativas, sin modificar directamente el esquema del mensaje de transacción. Obtenga más información sobre estas opciones Política de tarifas reembolsables.

En el siguiente ejemplo, se muestra el elemento <Refundable> con todos sus atributos establecidos:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Nota: Recomendamos configurar todos los atributos. Se genera un mensaje de advertencia sobre el estado del feed cuando uno o más atributos no están configurados.

Si no se configura ningún atributo, la tarifa no se mostrará como reembolsable. Los atributos son los siguientes:

  • available: (Obligatorio) Establezca en 1 o true para indicar si la tarifa permite un reembolso completo; de lo contrario, establezca en 0 o false.
  • refundable_until_days: (Obligatorio si available es true) Especifica el número de días antes del check-in en que se puede solicitar un reembolso completo. El valor de refundable_until_days debe ser un número entero entre 0 y 330, inclusive.
  • refundable_until_time: (Muy recomendable si available es true) Especifica la hora del día más reciente, en la hora local del hotel, en la que se aceptará una solicitud de reembolso total. Se puede combinar con refundable_until_days para especificar, por ejemplo, que "los reembolsos están disponibles hasta las 4 p.m. dos días antes del registro de entrada". Si no se establece refundable_until_time, el valor predeterminado es la medianoche.

    El valor de este atributo usa el formato Time.

Al configurar los atributos, tenga en cuenta lo siguiente:

  • Si no se establece available o refundable_until_days, la tarifa no se mostrará como reembolsable.
  • Si available es 0 o false, se ignoran los demás atributos. La tarifa no se muestra como reembolsable, incluso si se configuran uno o ambos atributos.
<MembershipBenefits Included> Optional boolean La tarifa incluye los beneficios de la categoría élite durante la estadía. Incluye los siguientes parámetros:
  • ProgramName: Nombre del programa de estado élite
  • ProgramLevel: Nivel del programa. Por ejemplo: "Oro".
  • NightlyValue (optional): Valor nocturno de los beneficios.
<CarRentalIncluded> Optional boolean La tarifa incluye el alquiler de un automóvil sin costo adicional durante la estadía.
<MilesIncluded> Optional boolean La tarifa incluye millas de viajero frecuente. Entre los parámetros, se incluyen los siguientes:
  • NumberOfMiles: Es la cantidad de millas por itinerario.
  • Provider: Proveedor de millas de viajero frecuente.
  • LoyaltyCampaignID: Es un ID único que identifica la campaña de lealtad específica que se configuró y actualizó con Google. Agrega puntos de lealtad al precio del hotel.

    Para incluir el elemento <MilesIncluded>, se debe configurar el ID de la campaña en la configuración de la campaña de lealtad. Los detalles específicos sobre cómo Google usa los puntos de lealtad en los resultados se determinan según la configuración de la campaña de lealtad.

    El elemento <MilesIncluded> tiene un elemento hijo, <NumberOfMiles>, que calcula el número de puntos ganados. Si no se establece <NumberOfMiles>, los puntos ganados se determinan según la configuración de la Campaña de Lealtad.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • Nota: <NumberOfMiles> y <Provider> son opcionales.

<OnPropertyCredit> Optional boolean La tarifa incluye crédito para consumo en el establecimiento (alimentos y bebidas, resort, spa, etc.). Parámetro:
  • Amount: Es el valor del crédito por itinerario, en moneda local.
<AirportTransportationIncluded> Optional Object La tarifa incluye transporte gratuito desde/hacia un aeropuerto cercano. El atributo opcional direction especifica la direccionalidad del transporte. Los valores válidos incluyen:
    from: Se proporciona transporte desde el aeropuerto hasta la propiedad. Este es el valor predeterminado si no se especifica ninguna dirección. to: Se proporciona transporte al aeropuerto desde la propiedad. round_trip: Se proporciona transporte tanto desde como hacia el aeropuerto.

Ejemplos

Paquete de habitación individual

En el siguiente ejemplo, se define un solo paquete de habitación, con una ocupación de 2 (un adulto y un niño) y desayuno incluido:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>1</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <PackageID>P54321</PackageID>
      <Name>
         <Text text="Breakfast Included" language="en"/>
         <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Two certificates for continental
          breakfast will be provided." language="en"/>
        <Text text="Deux certificats pour le petit déjeuner
          continental seront fournis." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Metadatos de habitaciones y paquetes

El siguiente ejemplo define los metadatos de la sala y del paquete:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Paquetes de varias habitaciones

En el siguiente ejemplo, se definen los metadatos de la habitación y el paquete para varios Room Bundles:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>


Paquete de habitación con tarifas

El siguiente ejemplo define los metadatos de sala y paquete para un paquete de sala con características de tarifa:

<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
     ...
    </RoomData>
<!-- definitions of PackageData types including rate features -->
    <PackageData>
      <PackageID>room_with_addl_benefits</PackageID>
      <Name>
        <Text text="Acme Hotels 2017 Promotion Package" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <BreakfastIncluded>1</BreakfastIncluded>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Marriott Rewards"/>
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum"/>
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
        <Text text="Room with Bundled Miles" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000</NumberOfMiles>
        <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      </MilesIncluded>
      <AirportTransportationIncluded direction="from"/>
    </PackageData>
  </PropertyDataSet>

<!-- The actual list of prices -->
  <Result>
…
  </Result>
</Transaction>

Comidas y fotos

En el siguiente ejemplo, se definen los metadatos de la habitación y el paquete para las comidas, las fotos y los horarios 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>
      <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>

Desayuno

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <Breakfast included="true"/>
        <!-- Dinner not included needs to be explicitly specified -->
        <Dinner included="false"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<Result>

Un contenedor para actualizaciones de precios y disponibilidad en un mensaje <Transaction>.

El elemento <Result> aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Utilice <Result> para establecer o actualizar los precios de las habitaciones y definir el inventario disponible. Los elementos definidos en este elemento normalmente hacen referencia a metadatos independientes del itinerario sobre una habitación o paquete (como una descripción o un conjunto de servicios) definidos en <PackageData> y <RoomData>.

Por lo general, envías mensajes de transacción con actualizaciones de precios con mucha frecuencia. La forma exacta y la frecuencia con que lo hagas dependerá de tu modo de entrega.

Puedes usar <Result> en un mensaje de Transacción para quitar itinerarios, como se describe en Cómo quitar inventario. Para obtener más información sobre cómo usar los mensajes de transacción para actualizar los precios y la disponibilidad, consulta Cómo agregar y actualizar el inventario.

Un único mensaje de transacción puede incluir cualquier número de elementos <Result>, siempre que el tamaño del mensaje no supere los 100 MB.

Sintaxis

El elemento <Result> usa la siguiente sintaxis:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <!-- Required -->
    <Property>hotel_ID</Property>
    <!-- Required -->
    <Checkin>YYYY-MM-DD</Checkin>
    <!-- Required -->
    <Nights>number_of_nights</Nights>

    <Baserate currency="currency_code">price</Baserate>
    <!-- Only required when <Baserate> contains a real price -->
    <Tax currency="currency_code">tax_amount</Tax>
    <!-- Only required when <Baserate> contains a real price  -->
    <OtherFees currency="currency_code">fee_amount</OtherFees>
    <Refundable available="[false|true]" refundable_until_days="number_of_days"
      refundable_until_time="time"/>

    <RoomID>room_ID</RoomID>
    <PackageID>package_ID</PackageID>
    <ExpirationTime>expiration_time</ExpirationTime>
    <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>

    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <!-- For Baserate, occupancy value must be greater than or equal to 2.
         If a value is not provided for occupancy, it defaults to 2. -->
    <!-- Child occupancy rates should only be sent through Live pricing
         with context and not through Pull or Changed pricing -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

    <AllowablePointsOfSale>
      <PointOfSale id="landing_page_identifier"/>
      ...
    </AllowablePointsOfSale>

    <MilesIncluded>
      <NumberOfMiles>integer</NumberOfMiles>
      <Provider>
        <Text language="en" text="provider-name">
      </Provider>
      <!-- Add Loyalty point information -->
      <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
  ...
  </Transaction>

Atributos

El elemento <Result> tiene los siguientes atributos:

Atributo ¿Es obligatorio? Tipo Description
mergeable Optional boolean De forma predeterminada, los precios nuevos para un par específico de hotel e itinerario reemplazarán los precios anteriores (no vencidos) presentes en la caché de Google. El atributo combinable te permite almacenar precios adicionales en la caché de Google sin borrar la información de precios anterior. Las respuestas de Live Pricing Query with Context siempre tendrán este atributo establecido en true (independientemente de la respuesta del mensaje de transacción).

Elementos secundarios

El elemento <Result> tiene los siguientes elementos secundarios:

Elemento hijo ¿Obligatorio? Tipo Description
<AllowablePointsOfSale> Optional Object Una o más páginas de destino que sean elegibles para el hotel. Una página de destino es un sitio web que puede gestionar el proceso de reserva para el usuario final. Para incluir explícitamente ciertas páginas de destino (y excluir otras), agregue uno o más elementos <AllowablePointsOfSale> que coincidan con el atributo id del elemento <PointOfSale> en el archivo de páginas de destino.

Si no incluye este elemento, todas las páginas de destino definidas en el archivo de páginas de destino se considerarán aptas para ser utilizadas para reservar la habitación. Para obtener más información, consulte Sintaxis del archivo de páginas de destino.

<Baserate> Optional float

Es el precio de la habitación para la estadía. El valor de este elemento debe reflejar lo siguiente:

  • Para una habitación privada, establezca la tarifa más económica que ofrezca para dos personas. Aquí se permiten ocupaciones más altas si no tiene una tarifa de ocupación doble y su cuenta tiene habilitadas tarifas de ocupación no doble. Por favor contacta con nosotros para habilitar tarifas de ocupación no doble. Aquí no se permiten tarifas de ocupación individual; deben establecerse por debajo de <Rates>.
  • En el caso de una habitación compartida, deja el campo vacío y usa <RoomBundle>.
  • Este valor debe ser el precio base total para todas las noches, no la tarifa promedio por noche.

Cuando la habitación no esté disponible para el itinerario, <Baserate> debe omitirse o establecerse en -1, y se debe especificar <Unavailable>, junto con cualquier razón conocida de la indisponibilidad.

Para eliminar un paquete de habitación, utilice las instrucciones en Eliminar un paquete de habitación.

El <Baserate> no debe contener ningún símbolo de agrupación de dígitos, como una coma (,) o un punto (.). Separe siempre las fracciones con un punto (.) como separador decimal. Por ejemplo, represente $1,200.40 como:

<Baserate currency="USD">1200.40</Baserate>

El elemento <Baserate> acepta los siguientes atributos opcionales:

  • all_inclusive: Un valor booleano que indica si esta tarifa incluye impuestos y tasas. En general, establezca este valor en false para los usuarios finales de EE. UU. y Canadá y proporcione valores para los elementos <Tax> y <OtherFees>. Si utiliza precios con todo incluido, es posible que no pueda aparecer en los listados si sus precios no desglosan los impuestos y las tasas para los usuarios canadienses.

    Ahora se muestran los precios con todo incluido a los usuarios de EE.UU.

    Para todos los demás usuarios finales, normalmente se incluyen los impuestos y las tasas en la tarifa base y se establece el valor del atributo all_inclusive en true. Para obtener más información, consulte la Política de impuestos y tasas.

    El valor predeterminado es false.

  • currency: El código de moneda de tres letras . Por ejemplo, USD para dólares estadounidenses.
<ChargeCurrency> Optional enum Cuándo y dónde paga el usuario por una reserva. Este elemento se puede utilizar en un mensaje de transacción en el elemento <Result> para el precio del hotel o en el bloque <PackageData> para un paquete de habitación.

Estos son los valores válidos:

  • web: El usuario paga en línea al momento de la reserva. Este es el valor predeterminado. La página de destino real está definida por el archivo de página de destino y puede verse afectada por la moneda, la ubicación, el idioma u otros factores del usuario.
  • hotel: Se cobra al usuario al registrarse en el hotel. Si el pago siempre debe realizarse en la moneda del hotel, establezca el valor de <ChargeCurrency> en hotel. La página de destino real no se ve afectada por la moneda del usuario.
  • deposit: Al usuario se le cobra una parte inmediatamente y el resto se le cobra en un momento posterior, normalmente cuando el usuario hace el check-out del hotel.
  • installments: Se le cobra al usuario una fracción inicial del importe total adeudado y se espera que pague de forma rutinaria un saldo establecido durante un período fijo.

El valor predeterminado es web.

<Checkin> Required Date La fecha de entrada para un itinerario que utiliza el formato Fecha. La combinación del elemento <Nights> y el elemento <Checkin> conforman un itinerario.
Optional string Obsoleto: Define un campo personalizado que puedes usar para pasar datos adicionales asociados con un hotel. Puedes pasar hasta cinco valores personalizados con los siguientes nombres de elementos:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

Los elementos <Custom> te permiten pasar datos arbitrarios. Por ejemplo, puedes especificar un valor en este campo que luego utilizará el archivo de páginas de destino para construir una URL personalizada para una página de destino. Hay un límite de 200 caracteres por campo personalizado. Para obtener más información, consulta archivos de páginas de destino . Los elementos <Custom> proporcionados en el elemento <Rate> no se heredan en el elemento <RoomBundle>. Debes definir el atributo <Custom> por separado en cada <RoomBundle>.

Importante: Póngase en contacto con su gestor de cuenta técnica (TAM) si desea utilizar variables CUSTOM.

<ExpirationTime> Optional DateTime Fecha y hora en que se considera que el precio ha caducado (mínimo 3 horas).

Recomendamos no proporcionar fechas de vencimiento si no es fundamental para su estructura de precios.

Google no publica precios vencidos, y cualquier itinerario que tenga un precio vencido será apto para la consulta de precios en tiempo real.

<MilesIncluded> Optional boolean La tarifa incluye millas de viajero frecuente. Entre los parámetros, se incluyen los siguientes:
  • NumberOfMiles: Es la cantidad de millas por itinerario.
  • Provider: Proveedor de millas de viajero frecuente.
  • LoyaltyCampaignID: Un ID único que identifica la campaña de fidelización específica que se configuró y actualizó con Google. Añade puntos de fidelidad al precio del hotel.

    Para incluir el elemento <MilesIncluded>, se debe configurar el ID de campaña en la configuración de la Campaña de Fidelización. Los detalles específicos sobre cómo Google utiliza los puntos de fidelidad en los resultados están determinados por la configuración de la Campaña de Fidelización.

    El elemento <MilesIncluded> tiene un elemento secundario, <NumberOfMiles>, que calcula la cantidad de puntos obtenidos. Si no se establece <NumberOfMiles>, los puntos ganados se determinan según la configuración de la Campaña de Lealtad.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • Nota: <NumberOfMiles> y <Provider> son opcionales.

<Nights> Required integer Cantidad de noches de un itinerario. El valor del elemento <Nights> debe ser un número entero positivo. La combinación de <Nights> y <Checkin> conforman un itinerario.
<OtherFees> Optional float Son las comisiones que influyen en el precio final de una habitación, además de la tarifa base y los impuestos. El elemento <OtherFees> toma un único atributo obligatorio, currency, que define el código de moneda de tres letras para las tarifas. Por ejemplo, USD.

El elemento <OtherFees> es obligatorio si <Baserate> es mayor que cero.

<Occupancy> Optional integer Especifica la cantidad máxima de ocupantes permitidos para esta tarifa. Cuando <Occupancy> aparece directamente debajo de <Result>, debe especificar 2 o más. <Occupancy> puede estar acompañado de <OccupancyDetails>, que especifica el tipo de huéspedes (adultos o niños). Si no se especifican los tipos de huéspedes, se supone que son adultos. Consulta <OccupancyDetails> para obtener la sintaxis y la descripción de los elementos secundarios. Si no se proporciona el elemento <Occupancy>, la ocupación se establece de forma predeterminada como 2.

Punto clave: Los porcentajes de ocupación infantil solo se deben enviar a través de Precios en vivo con contexto y no a través de Solicitud de precios a terceros ni Precios modificados.

Nota: Póngase en contacto con su equipo de soporte para habilitar la función que permite enviar precios para habitaciones que no sean de doble ocupación.

<PackageID> Optional string Es el ID único del paquete para asignarlo a los datos del paquete predefinidos. También se utiliza para rellenar la variable de la página de destino PACKAGE-ID. Para obtener más información, consulte los metadatos del paquete de habitaciones .

Es obligatorio incluir <RoomBundle> para definir <PackageID> y <RoomID> en el elemento <Result>. Sin embargo, se recomienda que especifiques los IDs de paquete y de habitación solo dentro del elemento <RoomBundle>, en lugar del elemento <Result>.

<Property> Required string El identificador de un hotel afectado por los datos asociados (precio, itinerario, paquete de habitación o metadatos). El valor de este elemento debe ser una cadena de texto. El valor de este elemento debe coincidir con la lista <id> que definió en su feed de lista de hoteles.
<Rates> Optional <Rates> Un contenedor para uno o más bloques <Rate>. Cada <Rate> en <Rates> define un precio diferente para la combinación de habitación/itinerario.

Utilice el elemento <Rates> cuando haya varias tarifas para la misma combinación de habitación/itinerario o cuando no se permita especificar una tarifa en el nivel <Result>. Por ejemplo, puede definir varias tarifas para tarifas condicionales, tarifas privadas, tarifas condicionales en paquetes de habitaciones o diferentes ocupaciones.

Nota: Dentro de <Result>, las tarifas de ocupación individual solo se pueden especificar en <Rates>. Por favor contacta con nosotros para permitir precios de ocupación no doble.

<Refundable> Optional Object Permite indicar que una tarifa es totalmente reembolsable o que ofrece una cancelación gratuita. Si no se proporciona, no se muestra información sobre el reembolso. Una política de reembolsos a nivel de <PackageData> anula la política de reembolsos a nivel de <Result>. Una política de reembolsos a nivel de <Rates> anula la política de reembolsos a nivel de <PackageData>. Los precios reembolsables también se pueden destacar para los usuarios a través de opciones alternativas sin modificar directamente el esquema de mensajes de transacción. Obtén más información sobre la política de tarifas reembolsables.

El siguiente ejemplo muestra el elemento <Refundable> con todos sus atributos configurados:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Nota: Recomendamos configurar todos los atributos. Se genera un mensaje de advertencia sobre el estado del feed cuando uno o más atributos no están configurados.

Si no se configura ningún atributo, la tarifa no se mostrará como reembolsable. Los atributos son los siguientes:

  • available: (Obligatorio) Establezca en 1 (o true) para indicar si la tarifa permite un reembolso completo; de lo contrario, establezca en 0 (o false).
  • refundable_until_days: (Obligatorio si available es true) Especifica la cantidad de días de anticipación al registro de entrada con los que se puede solicitar un reembolso total. El valor de refundable_until_days debe ser un número entero entre 0 y 330, inclusive.
  • refundable_until_time: (Muy recomendable si available es true) Especifica la hora más tardía del día, en la hora local del hotel, en que se aceptará una solicitud de reembolso completo. Esto se puede combinar con refundable_until_days para especificar, por ejemplo, que "los reembolsos están disponibles hasta las 4:00 PM dos días antes del check-in". Si no se establece refundable_until_time, el valor predeterminado es medianoche.

    El valor de este atributo usa el formato Time.

Cuando establezcas los atributos, ten en cuenta lo siguiente:

  • Si no se establece available o refundable_until_days, la tarifa no se mostrará como reembolsable.
  • Si available es 0 (o false), los demás atributos se ignoran. La tarifa no se muestra como reembolsable aunque se haya configurado uno o ambos de los otros atributos.
<RoomBundle> Optional <RoomBundle> Un contenedor para información sobre descripciones físicas y precios de la habitación, paquetes de servicios y algunos detalles sobre la política de compras del hotel y el itinerario indicados.

En general, utilice este elemento para definir los precios de la habitación base y de los diferentes tipos de habitaciones dentro de la misma propiedad. Si bien es posible definir las descripciones de los paquetes de habitaciones en línea, debe utilizar un mensaje de transacción separado para definir esa información. Google almacenará los metadatos para que puedas hacer referencia a ellos, en lugar de repetirlos, en todas las futuras actualizaciones de precios.

<RoomID> Optional string El identificador único de la habitación para relacionarlo con los datos de habitación predefinidos. También se utiliza para rellenar la variable de página de destino PARTNER-ROOM-ID. Para obtener más información, consulte los metadatos del paquete de habitaciones .

Es obligatorio incluir <RoomBundle> para definir <PackageID> y <RoomID> en el elemento <Result>. Sin embargo, es preferible que especifique los ID de paquete y de habitación solo dentro del elemento <RoomBundle> en lugar del elemento <Result>.

<Tax> Optional float Los impuestos que se calculan sobre el precio final de una habitación. El elemento <Tax> toma un único atributo obligatorio, currency, que define el código de moneda de tres letras para los impuestos. Por ejemplo, USD. El elemento <Tax> es obligatorio si <Baserate> es mayor que cero.

Si el atributo "all_inclusive" del elemento <Baserate> está explícitamente establecido en verdadero, entonces establecer este valor es opcional.

<Unavailable> Optional Object Indica que el itinerario no está disponible para reservar. Sirve como contenedor para explicar con más detalle por qué el itinerario no estaba disponible. Una o más de las siguientes razones de indisponibilidad pueden estar anidadas bajo la etiqueta <Unavailable>:
  • <NoVacancy/>: No hay más habitaciones disponibles para la venta para una o más noches de la estadía.
  • <MinNightStay value=N/>: El itinerario fue inferior a la estancia mínima de N noches para las fechas de estancia.
  • <MaxNightStay value=N/>: El itinerario superó la estadía máxima de N noches para las fechas de estadía.
  • <MinAdvancePurchase value=N/>: El itinerario estuvo por debajo del plazo mínimo de reserva anticipada de N para las fechas de la estancia.
  • <MaxAdvancePurchase value=N/>: El itinerario superó el plazo máximo de reserva anticipada de N para las fechas de estancia.
  • <ClosedToArrival/>: La propiedad no permite el registro de entrada en la fecha de llegada del itinerario.
  • <ClosedToDeparture/>: La propiedad no permite el check-out en la fecha de salida del itinerario.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: La propiedad está cerrada durante parte o la totalidad de la estadía. Los atributos recomendados first_open y first_closed especifican las primeras fechas mayores o iguales a la fecha de llegada para las que la propiedad está abierta o cerrada, respectivamente. Para una propiedad que se cierra después de la fecha de llegada, first_open debe ser igual a la fecha de llegada y first_closed debe ser la fecha en que se cierra la propiedad. En el caso de una propiedad que está cerrada en la fecha de llegada, first_closed debe ser igual a la fecha de llegada, y first_opened debe ser la siguiente fecha en la que la propiedad esté abierta.
  • <NotFetched/>: Las fuentes de datos posteriores no proporcionaron un precio para el itinerario.
  • <InvalidProperty/>: No se reconoció el identificador de propiedad solicitado.
  • <InvalidOccupancy/>: La ocupación solicitada no es compatible con la propiedad.
  • <PriceIssue/>: Un problema con el precio impidió que se enviara.
  • <InternalError reason=""/>: Se produjo un error no enumerado. El atributo de motivo opcional puede informar el error como texto.
  • <OtherRestriction restriction=""/>: El itinerario no estaba disponible debido a alguna restricción de reserva no enumerada. El atributo de restricción opcional permite informar la restricción como texto.

Ejemplos

Ejemplo de propiedad múltiple

El siguiente ejemplo define un itinerario y su precio para dos propiedades:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
    <MilesIncluded>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines"/>
      </Provider>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
</Transaction>

En este ejemplo no se muestran detalles sobre la habitación, como una descripción, una imagen y un pie de foto, el nombre de la habitación y su capacidad.

Puedes definir esa información una vez en un mensaje Transaction independiente que Google almacena. Posteriormente, podrá utilizarlo como referencia en todas las actualizaciones de precios e inventario subsiguientes. Para obtener más información, consulte los metadatos del paquete de habitaciones .

Ejemplo de tasa múltiple

El siguiente ejemplo define un único itinerario y una propiedad con múltiples tarifas para diversas ocupaciones. El elemento <Rates> se puede utilizar para proporcionar precios de múltiples tarifas para una propiedad específica. El siguiente ejemplo también resulta útil para propiedades de alquiler vacacional (VR):

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2021-01-13</Checkin>
    <Nights>9</Nights>
    <Baserate currency="USD">3196.1</Baserate>
    <Tax currency="USD">559.49</Tax>
    <OtherFees currency="USD">543.34</OtherFees>
    <Occupancy>2</Occupancy>
    <Rates>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>1</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>3</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>4</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>5</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>6</Occupancy>
      </Rate>
    </Rates>
  </Result>
</Transaction>

Ejemplo no disponible

El siguiente ejemplo define un itinerario cuya disponibilidad no pudo recuperarse de los canales posteriores, un segundo que es inferior a la estancia mínima de noches y ya está reservado para las fechas especificadas, y un tercero cuya propiedad está cerrada en la fecha de llegada, pero que abre durante el transcurso de la estancia:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NotFetched/>
    </Unavailable>
  </Result>
  <Result>
    <Property>073313</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NoVacancy/>
      <MinNightStay value=3/>
    </Unavailable>
  </Result>
  <Result>
    <Property>052213</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>10</Nights>
    <Unavailable>
      <PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
    </Unavailable>
  </Result>
</Transaction>

<Rates>

Un contenedor para uno o más bloques <Rate>. Cada <Rate> en <Rates> define un precio diferente para la combinación de habitación o itinerario.

Utilice el elemento <Rates> solo cuando haya varias tarifas para la misma habitación o combinación de itinerario. Por ejemplo, puede definir varias tarifas para tarifas condicionales, tarifas privadas o tarifas condicionales en Paquetes de habitaciones.

El elemento <Rates> aparece en el siguiente lugar de la jerarquía XML del mensaje de Transaction:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>         // Pricing and availability
        + <Rates>
        + <RoomBundle> (Can also contain <Rates>)
        + ...

Los valores establecidos en un <Rate> anulan los valores relacionados con los precios en el elemento padre <Result> o <RoomBundle>. Si no están definidos en <Rate>, heredan su valor del elemento padre. Solo <AllowablePointsofSale> se hereda al elemento <RoomBundle>.

Sintaxis

El elemento <Rates> usa la siguiente sintaxis:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <Rates>
      <Rate rate_rule_id="rate_rule_id">
        <Baserate currency="currency_code">price</Baserate>
        <Tax currency="currency_code">tax_amount</Tax>
        <OtherFees currency="currency_code">fee_amount</OtherFees>
        <ExpirationTime>expiration_time</ExpirationTime>
        <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
        <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
        <AllowablePointsOfSale>
          <PointOfSale id="landing_page_identifier"/>
        </AllowablePointsOfSale>
        <Occupancy>max_number_of_intended_occupants</Occupancy>
        <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
          ...
        <MilesIncluded>
          <NumberOfMiles>integer</NumberOfMiles>
          <Provider>
            <Text language="en" text="provider-name">
          </Provider>
          <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
        </MilesIncluded>
          ...
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

Atributos

El elemento <Rates> tiene los siguientes atributos:

Atributo ¿Es obligatorio? Description
rate_rule_id Optional Para tasas condicionales, este ID hace coincidir una tasa con una definición en su archivo de definición de regla de tasa. El límite de caracteres para este campo es de 40 caracteres. Este ID no puede ser una cadena vacía.

Elementos secundarios

El elemento <Rates> tiene los siguientes elementos secundarios:

Elemento secundario ¿Obligatorio? Tipo Description
<AllowablePointsOfSale> Optional Object Una o más páginas de destino que sean elegibles para el hotel. Este elemento utiliza la misma sintaxis que <AllowablePointsOfSale> en <Result>.
<Baserate> Required float El precio de la habitación para la estancia. Este elemento utiliza la misma sintaxis que <Baserate> en <Result>.

Nota: El elemento hijo <Baserate> bajo <Rate> no puede definirse como no disponible.

<ChargeCurrency> Optional enum Cuándo y dónde el usuario paga una reserva. Este elemento usa la misma sintaxis que un <ChargeCurrency> en un <Result>.
Optional string Obsoleto: Campos personalizados que puede usar para pasar datos adicionales asociados con un hotel a una página de destino. Este elemento utiliza la misma sintaxis que un <Custom[1‑5]> en un <Result>. Existe un límite de 200 caracteres por campo personalizado. Para obtener más información, consulte los archivos de la página de destino . Si se proporcionan elementos <Custom> en el elemento <Result>, entonces no se heredan en el elemento <RoomBundle> y deben definirse por separado para cada <RoomBundle> o se pueden incluir en <PackageData> si es necesario.

Importante: Comunícate con tu administrador técnico de cuentas (TAM) si deseas usar variables de CUSTOM.

<ExpirationTime> Optional DateTime La fecha y hora en que se considera vencida la tarifa. Este elemento utiliza la misma sintaxis que un <ExpirationTime> en un <Result>.
<MilesIncluded> Optional boolean La tarifa incluye millas de viajero frecuente. Los parámetros incluyen:
  • NumberOfMiles: Es la cantidad de millas por itinerario.
  • Provider: Proveedor de millas de viajero frecuente.
  • LoyaltyCampaignID: Un ID único que identifica la campaña de fidelización específica que se configuró y actualizó con Google. Añade puntos de fidelidad al precio del hotel.

    Para incluir el elemento <MilesIncluded>, se debe configurar el ID de campaña en la configuración de la Campaña de Fidelización. Los detalles específicos sobre cómo Google utiliza los puntos de fidelidad en los resultados están determinados por la configuración de la Campaña de Fidelización.

    El elemento <MilesIncluded> tiene un elemento secundario, <NumberOfMiles>, que calcula la cantidad de puntos obtenidos. Si no se establece <NumberOfMiles>, los puntos ganados se determinan según la configuración de la Campaña de Lealtad.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • Nota: <NumberOfMiles> y <Provider> son opcionales.

<Occupancy> Optional integer

Especifica la cantidad máxima de ocupantes permitidos para esta tarifa. Si no se especifica, se supone que es la misma que la tarifa principal. <Occupancy> puede estar acompañado de <OccupancyDetails>, que especifica el tipo de invitados (adultos o niños). Consulta <OccupancyDetails> para conocer la sintaxis y la descripción de los elementos secundarios.

<OtherFees> Required float Cargos adicionales a la tarifa base y los impuestos que influyen en el precio final de una habitación. Este elemento utiliza la misma sintaxis que <OtherFees> en un <Result>.

Si el atributo "all_inclusive" del elemento <Baserate> está explícitamente establecido en verdadero, entonces establecer este valor es opcional.

<Refundable> Optional Object Permite indicar que una tarifa es totalmente reembolsable o que ofrece una cancelación gratuita. Si no se proporciona, no se muestra información sobre el reembolso. Una política de reembolsos a nivel de <PackageData> anula la política de reembolsos a nivel de <Result>. Una política de reembolsos a nivel de <Rates> anula la política de reembolsos a nivel de <PackageData>. Los precios reembolsables también se pueden destacar para los usuarios a través de opciones alternativas sin modificar directamente el esquema de mensajes de transacción. Obtén más información sobre estas opciones en la política de tarifas reembolsables.

El siguiente ejemplo muestra el elemento <Refundable> con todos sus atributos configurados:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Nota: Recomendamos configurar todos los atributos. Se genera un mensaje de advertencia sobre el estado del feed cuando uno o más atributos no están configurados.

Si no se configura ningún atributo, la tarifa no se mostrará como reembolsable. Los atributos son los siguientes:

  • available: (Obligatorio) Establezca en 1 (o true) para indicar si la tarifa permite un reembolso completo; de lo contrario, establezca en 0 (o false).
  • refundable_until_days: (Obligatorio si available es true) Especifica la cantidad de días de anticipación al registro de entrada con los que se puede solicitar un reembolso total. El valor de refundable_until_days debe ser un número entero entre 0 y 330, inclusive.
  • refundable_until_time: (Muy recomendable si available es true) Especifica la hora más tardía del día, en la hora local del hotel, en que se aceptará una solicitud de reembolso completo. Esto se puede combinar con refundable_until_days para especificar, por ejemplo, que "los reembolsos están disponibles hasta las 4:00 PM dos días antes del check-in". Si no se establece refundable_until_time, el valor predeterminado es la medianoche.

    El valor de este atributo utiliza el formato Time.

Al configurar los atributos, tenga en cuenta lo siguiente:

  • Si no se establece available o refundable_until_days, la tarifa no se mostrará como reembolsable.
  • Si available es 0 (o false), se ignoran los demás atributos. La tarifa no se muestra como reembolsable, incluso si se configuran uno o ambos atributos.
<Tax> Required float Son los impuestos que se calculan para el precio final de una habitación. Este elemento usa la misma sintaxis que un <Tax> en un <Result>.

Ejemplos

Tasa base y tasa condicional

El siguiente ejemplo muestra un mensaje de transacción que contiene una tasa base y una tasa condicional :

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Varias tarifas condicionales

En el siguiente ejemplo, se definen una tarifa base y varias tarifas condicionales dentro de un objeto <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL and it should be within 50 characters in length for optimal
      performance. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>

      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<RoomBundle>

Define los precios y la disponibilidad de los paquetes de habitaciones como un elemento secundario de <Result> en un mensaje <Transaction>. Define un elemento separado para cada combinación de paquete o itinerario. Para definir el paquete y las condiciones de los paquetes de habitación, usa <RoomData>.

El elemento <RoomBundle> aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Para obtener más información, consulte Uso de paquetes de habitaciones.

Sintaxis

El elemento <RoomBundle> usa la siguiente sintaxis:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <RoomBundle>
      <!-- Required unless specified inline under <RoomData> -->
      <RoomID>room_ID</RoomID>
      <!-- Required  <PackageData> -->
      <PackageID>package_ID</PackageID>

      <!-- Add Loyalty point information -->
      <MilesIncluded>
        <NumberOfMiles>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>>
      </MilesIncluded>

      <!-- Required -->
      <Baserate currency="currency_code">price</Baserate>
      <!-- Required -->
      <Tax currency="currency_code">taxes</Tax>
      <!-- Required -->
      <OtherFees currency="currency_code">other_fees</OtherFees>

      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <!-- Required -->
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>

      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

    </RoomBundle>
    ...
  </Result>
</Transaction>

Atributos

El elemento <RoomBundle> no tiene atributos.

Elementos secundarios

El elemento <RoomBundle> tiene los siguientes elementos secundarios:

Elemento hijo ¿Obligatorio? Tipo Description
<Baserate> Required float Define el precio del paquete de habitación para la estadía. Este elemento usa la misma sintaxis que <Baserate> en <Result>, con la siguiente excepción:
  • Cuando la habitación no esté disponible para el itinerario, quita el elemento <RoomBundle> para indicar que ya no está en el inventario. Para obtener más información, consulta Cómo quitar un paquete de habitación.
<BreakfastIncluded> Optional boolean Especifica si este paquete de habitación incluye el desayuno en la tarifa.
<ChargeCurrency> Optional enum Cuándo y dónde paga el usuario por una reserva. Este elemento utiliza la misma sintaxis que <ChargeCurrency> en un <Result>.

El valor predeterminado es web.

Optional string Obsoleto: Campos personalizados para pasar datos adicionales a las páginas de destino del paquete de habitaciones. Estos elementos usan la misma sintaxis que <Custom[1-5]> en <Result>. Hay un límite de 200 caracteres por campo personalizado. Para obtener más información, consulta los archivos de páginas de destino. Las variables personalizadas solo se enumeran cuando envías los precios en el mensaje de transacción. Si se proporcionan elementos <Custom> en el elemento <Result>, no se heredan en el elemento <RoomBundle> y se deben definir por separado para cada <RoomBundle>, o bien se pueden incluir en <PackageData> si es necesario.

Importante: Póngase en contacto con su gestor de cuenta técnica (TAM) si desea utilizar variables CUSTOM.

<InternetIncluded> Optional boolean Si un paquete de habitación incluye acceso a internet sin cargo, mientras que otros paquetes no incluirían ese servicio. No configure este elemento para los paquetes de habitaciones en un hotel que ofrece internet gratuito en todas las habitaciones. Este elemento no se aplica al acceso a internet por cable en la habitación ni al acceso a internet inalámbrico que no esté disponible en las habitaciones de los huéspedes.
<MilesIncluded> Optional boolean La tarifa incluye millas de viajero frecuente. Los parámetros incluyen:
  • NumberOfMiles: Es la cantidad de millas por itinerario.
  • Provider: Proveedor de millas de viajero frecuente.
  • LoyaltyCampaignID: Es un ID único que identifica la campaña de lealtad específica que se configuró y actualizó con Google. Agrega puntos de lealtad al precio del hotel.

    Para incluir el ID de la campaña <MilesIncluded>, se debe configurar en la configuración de la campaña de lealtad. Los detalles específicos sobre cómo Google utiliza los puntos de fidelidad en los resultados están determinados por la configuración de la Campaña de Fidelización.

    El elemento <MilesIncluded> tiene un elemento hijo, <NumberOfMiles>, que calcula el número de puntos ganados. Si no se establece <NumberOfMiles>, los puntos ganados se determinan según la configuración de la Campaña de Lealtad.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • Nota: <NumberOfMiles> y <Provider> son opcionales.

<Occupancy> Required integer Especifica el número máximo de ocupantes permitidos para esta tarifa. Por ejemplo, una suite grande podría alojar físicamente a 6 huéspedes, pero el "Paquete Luna de Miel" solo permite 2 huéspedes.

Este valor debe ser menor o igual que <Capacity>, que es el número de personas que la habitación puede acomodar físicamente.

Cuando definas la ocupación en la URL de tu página de destino, usa las variables NUM-ADULTS y NUM-CHILDREN, como se describe en Cómo usar variables y condiciones. El valor predeterminado es 2 adultos y 0 niños.

El valor de <Occupancy> debe ser un entero positivo entre 1 y 99, inclusive.

Notas:

  • Se recomienda usar <Occupancy> para <RoomBundle>, por lo que se marca como obligatorio y, si se omite, se arrojará un error 1097.
  • <Occupancy> proviene del objeto de datos en este orden: <RoomBundle>, <PackageData> y, luego, <RoomData>. Si no hay ningún valor presente en ninguno de estos, el valor predeterminado es 2.
  • <Occupancy> puede ir acompañado de <OccupancyDetails>, que especifica el tipo de invitados (adultos o niños). Si no se especifican los tipos de invitados, se asume que son adultos. Consulte <OccupancyDetails> para obtener la sintaxis y la descripción de los elementos secundarios.
  • Cuando estableces <Occupancy> en <RoomBundle> y <PackageData>, el valor de <RoomBundle> tiene prioridad.
<OtherFees> Required float Cargos adicionales a la tarifa base y los impuestos que influyen en el precio final de una habitación. El elemento <OtherFees> toma un único atributo obligatorio, currency, que define el código de moneda de tres letras para las tarifas. Por ejemplo, utilice USD para dólares estadounidenses.
<PackageID> Optional (recommended) string Es el ID único de los datos del paquete. Usa este ID para correlacionar los datos del paquete de Room con los que se enviaron en <PackageData>. Para obtener más información, consulta Metadatos de Room Bundle. (También puedes usar este ID para hacer referencia a una definición común de paquete de habitaciones que se usa en un solo mensaje de Transaction cuando defines datos de paquetes de habitaciones intercalados).
<ParkingIncluded> Optional boolean Indica si un paquete de habitaciones incluye estacionamiento sin cargo, cuando, de lo contrario, el estacionamiento sería un servicio pagado en este hotel. 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.

<RatePlanID> Optional string El ID del plan tarifario representa el identificador único para una combinación de habitación y paquete. Por ejemplo, dado un valor <RoomID> de 5 y un valor <PackageID> de ABC, podría usar un valor de 5-ABC para <RatePlanID>. Recomendamos encarecidamente utilizar RatePlanID como variable para construir la URL de su página de destino dinámica (anteriormente punto de venta).

Nota: El RatePlanID debe tener una longitud máxima de 50 caracteres para un rendimiento óptimo.

Para obtener más información, consulte Uso de variables y condiciones.

<Rates> Optional <Rates> Tarifas que modifican las tarifas predeterminadas para este paquete de habitaciones. Este elemento utiliza la misma sintaxis que <Rates> en <Result>.
<Refundable> Optional Object Permite indicar que una tarifa es totalmente reembolsable o que ofrece una cancelación gratuita. Si no se proporciona, no se muestra información sobre el reembolso. Una política de reembolso en el nivel <PackageData> anula la política de reembolso en el nivel <Result>. Una política de reembolso en el nivel <Rates> anula la política de reembolso en el nivel <PackageData>. Los precios reembolsables también se pueden destacar para los usuarios a través de opciones alternativas sin modificar directamente el esquema de mensajes de transacción. Obtenga más información sobre estas opciones Política de tarifas reembolsables.

El siguiente ejemplo muestra el elemento <Refundable> con todos sus atributos configurados:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Nota: Recomendamos configurar todos los atributos. Se genera un mensaje de advertencia sobre el estado del feed cuando uno o más atributos no están configurados.

Si no se configura ningún atributo, la tarifa no se mostrará como reembolsable. Los atributos son los siguientes:

  • available: (Obligatorio) Establezca en 1 (o true) para indicar si la tarifa permite un reembolso completo; de lo contrario, establezca en 0 (o false).
  • refundable_until_days: (Obligatorio si available es true) Especifica la cantidad de días de anticipación al registro de entrada con los que se puede solicitar un reembolso total. El valor de refundable_until_days debe ser un número entero entre 0 y 330, inclusive.
  • refundable_until_time: (Muy recomendable si available es true) Especifica la hora del día más reciente, en la hora local del hotel, en la que se aceptará una solicitud de reembolso total. Esto se puede combinar con refundable_until_days para especificar, por ejemplo, que "los reembolsos están disponibles hasta las 4:00 PM dos días antes del check-in". Si no se establece refundable_until_time, el valor predeterminado es la medianoche.

    El valor de este atributo usa el formato Time.

Al configurar los atributos, tenga en cuenta lo siguiente:

  • Si no se establece available o refundable_until_days, la tarifa no se muestra como reembolsable.
  • Si available es 0 (o false), se ignoran los demás atributos. La tarifa no se muestra como reembolsable, incluso si se configuran uno o ambos atributos.
<RoomID> Required string Es el ID único de los datos de la habitación. Usa este ID para correlacionar los datos del paquete de habitación con los que enviaste en <RoomData>. Para obtener más información, consulta Metadatos de Room Bundle. (También puedes usar este ID para hacer referencia a una definición de habitación común en un solo mensaje de Transaction cuando definas datos de la habitación de forma intercalada).
<Tax> Required float Son los impuestos que se calculan para el precio final de una habitación. El elemento <Tax> toma un solo atributo obligatorio, currency, que define el código de moneda de tres letras para los impuestos. Por ejemplo, usa USD para dólares estadounidenses.

Ejemplos

Paquete de ocupación individual

El siguiente ejemplo define una respuesta con un único paquete de ocupación. Cuando un usuario selecciona 1 en el selector de ocupación, Google muestra el precio elegible más bajo independientemente de la ocupación.

Si no hay disponible un precio para una sola persona, Google mostrará el precio más bajo para dos personas. Ten en cuenta que los precios de ocupación individual no se consultan en tiempo real si se almacenan en caché precios de ocupación doble o más para un itinerario.

Este ejemplo hace referencia a metadatos de sala y paquete predefinidos con los elementos <RoomID> y <PackageID>. Usa los elementos <RoomData> y <PackageData> para definir esa información.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note:  Once defined it does not have to be repeated for future
              Transaction Messages.
              PropertyDataSets can also be defined and sent in their own
              Transaction Message separately from pricing. Google can be
              configured to pull just PropertyDataSets once per day
              (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P11111</PackageID>
      <Occupancy>1</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <!-- Single occupancy pricing will be specified in a room bundle below -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P11111</PackageID>
      <!-- Price for 1 ("occupancy") is the lowest price and will be
           displayed -->
      <Baserate currency="USD">174.99</Baserate>
      <Tax currency="USD">22.08</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P11111</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
           occupancy will be displayed-->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>436233-P12345</RatePlanID>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 1 or more occupancies..-->
  </Result>
</Transaction>


Dos o más ocupaciones

El siguiente ejemplo define una respuesta que contiene dos o más ocupaciones.

Este ejemplo hace referencia a metadatos de sala y paquete predefinidos con los elementos <RoomID> y <PackageID>. Utilice los elementos <RoomData> y <PackageData> para definir esa información.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Efficient method of defining Room Bundles-->
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P33333</PackageID>
      <Occupancy>3</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
    <!-- Base Room Bundle -->
    <RoomBundle>
      <!-- Baserate above and attributes must match atleast one room bundle
           below -->
      <RoomID>060773</RoomID>
      <PackageID>P33333</PackageID>
      <Baserate currency="USD">499.99</Baserate>
      <Tax currency="USD">55.12</Tax>
      <OtherFees currency="USD">22.00</OtherFees>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
      <Baserate currency="USD">598.88</Baserate>
      <Tax currency="USD">62.12</Tax>
      <OtherFees currency="USD">30.00</OtherFees>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 2 or more occupancies..-->
  </Result>
</Transaction>


Paquetes de varias habitaciones

El siguiente ejemplo establece la ocupación en varios paquetes de habitaciones para demostrar los posibles precios de las habitaciones de un hostal.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <!-- Suite Room Bundle -->
    <RoomBundle>
      <RoomID>suite1</RoomID>
      <PackageID>standard</PackageID>
      <Occupancy>2</Occupancy>
      <!-- Price for room -->
      <Baserate currency="USD">80.00</Baserate>
      <Tax currency="USD">5.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="Suite for 2" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Small Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>small_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">35.00</Baserate>
      <Tax currency="USD">3.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in small dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Large Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>large_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">20.00</Baserate>
      <Tax currency="USD">2.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in large dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>
    ...
  </Result>
</Transaction>

Múltiples tasas condicionales

El siguiente ejemplo define una tasa base y múltiples tasas condicionales dentro de una<RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL and it should be within 50 characters in length for optimal
      performance. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>

      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

<Occupancy> en un mensaje de transacción especifica el número máximo de huéspedes para una habitación o paquete. <OccupancyDetails> puede contener información adicional como el número y tipo de invitados (adultos o niños).

Cuando <Occupancy> y <OccupancyDetails> aparecen dentro del elemento <Rates> de <Result> o <RoomBundle>, significa que la tasa está restringida por los detalles de ocupación.

Si incluyes <OccupancyDetails> en un <RoomBundle>, junto con un elemento <Rate> anidado, no puedes enviar un <Occupancy> básico dentro del <Rate>; en su lugar, se recomienda una de las siguientes opciones:

  • Omitir ocupación de <Rate>: En este caso, <Rate> hereda <OccupancyDetails> directamente de <RoomBundle>

o

  • Duplicado <OccupancyDetails>: En este caso, envíe <OccupancyDetails> idéntico adicional tanto en el elemento <RoomBundle> como en el elemento <Rate> anidado.

Sintaxis

Cuando aparece <OccupancyDetails>, siempre está precedido por <Occupancy>. Ten en cuenta la siguiente sintaxis:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
  ...
    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <OccupancyDetails>
      <NumAdults>number_of_adults</NumAdults>
      <Children>
        <Child age=age_of_one_child_guest/>
        <Child age=age_of_one_child_guest/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

Elementos secundarios

El elemento <OccupancyDetails> tiene los siguientes elementos secundarios:

Elemento secundario ¿Obligatorio? Tipo Description
<NumAdults> Required integer Es la cantidad de huéspedes adultos. Mín.: 1, máx.: 20.
<Children> Optional Object Un contenedor para uno o más elementos <Child>.
<Child age> Optional integer La edad máxima para este niño—por ejemplo, <Child age="17">.

Ejemplos

En los siguientes ejemplos, se muestra cómo puede aparecer <OccupancyDetails> dentro de <Results>, <RoomBundle> o el elemento secundario <Rates>.

Respuesta al resultado

En el siguiente ejemplo, se define un itinerario y su precio para una propiedad en respuesta a una búsqueda de precios en tiempo real en la que el usuario especificó la cantidad y los tipos de huéspedes. Aquí, los <OccupancyDetails> (2 adultos y un niño) se devuelven en <Result>.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
    <Occupancy>3</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
      <Children>
        <Child age="17"/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

Respuesta de tarifas

El siguiente ejemplo define un itinerario y su precio para 1 adulto y 1 niño. Aquí, los <OccupancyDetails> se devuelven en el elemento <Rates> de <Result>.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
  <Result>
    <Property>8251</Property>
    <Checkin>2018-06-20</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">62.18</Baserate>
    <Tax currency="USD">2.45</Tax>
    <OtherFees currency="USD">0.00</OtherFees>
    <Rates>
      <Rate rate_rule_id="rule-951">
        <Occupancy>2</Occupancy>
        <OccupancyDetails>
          <NumAdults>1</NumAdults>
          <Children>
            <Child age="17"/>
          </Children>
        </OccupancyDetails>
        <Baserate currency="USD">42.61</Baserate>
        <Tax currency="USD">5.70</Tax>
        <OtherFees currency="USD">0.00</OtherFees>
        <AllowablePointsOfSale>
          <PointOfSale id="yourhotelpartnersite.com"/>
        </AllowablePointsOfSale>
      </Rate>
    </Rates>
  </Result>
</Transaction>

Paquete de habitación

En el siguiente ejemplo, se define una ocupación de 2 adultos y 1 niño o niña para dos noches, con una tarifa reembolsable. Aquí, los <OccupancyDetails> aparecen dentro de <RoomBundle>.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>6781291</Property>
    <Checkin>2017-08-05</Checkin>
    <Nights>2</Nights>
    ...
    <RoomBundle>
      <RoomID>10291</RoomID>
      <RatePlanID>564739</RatePlanID>
      <PackageID>564739</PackageID>
      <Occupancy>3</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
      <Baserate currency="USD">185.34</Baserate>
      <Tax currency="USD">37.06</Tax>
      <OtherFees currency="USD">2.22</OtherFees>
    </RoomBundle>
  </Result>
</Transaction>

Paquetes de varias habitaciones

En el siguiente ejemplo, se definen varias tarifas de <RoomBundle> que se restringen a una ocupación de 2 adultos y 2 niños. Aquí, los <OccupancyDetails> aparecen en el elemento <Rates> de <RoomBundle>.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">275.00</Baserate>
    <Tax currency="USD">27.50</Tax>
    <OtherFees currency="USD">0</OtherFees>
    <RoomBundle>
      <RoomID>5</RoomID>
      <PackageID>STD</PackageID>
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">0</OtherFees>
      <InternetIncluded>1</InternetIncluded>
      <ChargeCurrency>web</ChargeCurrency>
      <Occupancy>4</Occupancy>
      <OccupancyDetails>
          <NumAdults>2</NumAdults>
          <Children>
              <Child age="17"/>
              <Child age="17"/>
          </Children>
      </OccupancyDetails>
      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <ChargeCurrency>hotel</ChargeCurrency>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>