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

En esta página, se proporciona una referencia para los mensajes de transacción basados en XML.

<Transaction>

Es el elemento raíz de un mensaje de transacción. es <Transaction>. Es un contenedor de información descriptiva sobre las habitaciones y paquetes, así como los precios y la disponibilidad de habitaciones y paquetes.

El elemento <Transaction> aparece en el siguiente lugar de la Jerarquía XML de mensajes de transacción:

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

Los mensajes que usen <Transaction> como elemento raíz requieren al menos uno secundario. Los mensajes de transacción pueden tener cualquier cantidad de elementos secundarios, como 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 de socio a la que corresponde el mensaje de transacción. Tú generalmente se usa si el backend proporciona feeds de precios para varios cuentas de socios. Este valor de cadena es la "clave de socio" valor que aparece en el Página Configuración de la cuenta en Hotel Center.
timestamp Required DateTime

El momento en que el mensaje de transacción se enviado.

Todos los mensajes enviados con una marca de tiempo dentro de las 24 horas anteriores se que no se procesaron y se descartarán las que no lo hagan.

Los mensajes se procesan en orden de timestamp y no en el orden en el que se reciben. Por ejemplo, una actualización de precio con un 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 procesarán en orden, y el precio del mensaje con el y la marca de tiempo de 2019-05-03 14:10:00.

Elementos secundarios

El elemento <Transaction> tiene los siguientes elementos secundarios:

Elemento secundario ¿Obligatorio? Tipo Descripción
<PropertyDataSet> Optional* <PropertyDataSet>

Describe una habitación y paquetes de habitaciones específicos. Suelen utilizar este en un mensaje Transaction independiente para definir valores compartidos para Room agrupa y reduce el tamaño de tus mensajes Transaction.

<Result> Optional* <Result>

Los datos de precios del itinerario de una habitación o una Elemento <RoomBundle> que define paquetes de habitaciones y tipos adicionales de habitaciones de la propiedad. El También se puede usar el elemento <Result> para quitar itinerarios del inventario.

* Al menos uno de los valores <PropertyDataSet> o <Result> es obligatorio.

Ejemplos

Datos de la habitación

En el siguiente ejemplo, se definen los datos de las habitaciones en un mensaje Transaction:

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

En el siguiente ejemplo, se definen los datos de precios en un mensaje Transaction:

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

Tarifas por noche

En el siguiente ejemplo, se definen los datos de precios para un período de 1 a 7 noches a partir de 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>


Base y tarifas condicionales

En el siguiente ejemplo, se muestra un mensaje Transaction que contiene una 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>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Quitar inventario

En el siguiente ejemplo, se quitan varios inventarios (estadías 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>

Es un contenedor de información de habitación y paquete (o paquete de habitación) en un <Transaction> mensaje. Los valores establecidos en un hotel anulan los valores establecidos en un socio. Google almacena esta información para que no tengas que definirla cada vez cuando envías actualizaciones de precios.

El elemento <PropertyDataSet> aparece en el siguiente lugar de la Jerarquía XML de mensajes de transacción:

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

Para obtener más información, consulta los metadatos del paquete de habitación.

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 secundario ¿Obligatorio? Tipo Descripción
<PackageData> Optional* <PackageData> Describe un paquete de habitación. Estos datos se asocian con un socio y hotel, pero no con un itinerario. Este elemento es similar a <RoomData>, pero describe los servicios y las condiciones que no forman parte de la descripción de la sala física.

Puedes hacer referencia al ID de paquete en tus actualizaciones de precios.

Para obtener más información, consulta Metadatos del paquete de habitaciones.

<Property> Required string Es el ID de un hotel al que se aplican los datos asociados. El el valor de este elemento debe ser una cadena que coincida con la ficha <id> en tu feed de lista de hoteles.
<RoomData> Optional* <RoomData> Describe una habitación. Estos datos se asocian a un socio y a un hotel. pero no con un itinerario.

Debes hacer referencia al ID de la habitación en las actualizaciones de precios.

* Al menos uno de los valores <PackageData> o <RoomData> es obligatorio.

Ejemplos

Datos de habitaciones y paquetes

El siguiente ejemplo muestra datos de habitaciones y 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>

Si envías los precios y la disponibilidad de este paquete de habitación y de habitación, no podrás hacer referencia a los IDs de habitaciones y paquetes en tus mensajes de precios. El resultado es reducir en gran medida el tamaño de los mensajes y el tiempo la cantidad de errores que podrías encontrar debido a los datos duplicados. Para ver más consulta los metadatos del paquete de habitación.

<RoomData>

Define metadatos independientes del itinerario sobre las habitaciones y, por extensión, Room. Paquetes (ya que los paquetes de habitación son habitaciones y comodidades adicionales) Usa <RoomData> para reducir la repetición de datos descriptivos en tu precio. Feed.

El elemento <RoomData> aparece en el siguiente lugar de la Jerarquía XML de mensajes de transacción:

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

Los elementos <RoomData> contienen información que se asocia con un socio y hotel, pero no con un itinerario. El propósito previsto es para todos datos no itinerarios.

El elemento <RoomData> es similar a <PackageData>, pero describe la habitación física en lugar de las comodidades y las condiciones del paquete. Usas <RoomData> y <PackageData> en combinación para proporcionar detalles sobre Paquetes de habitación. Para habitaciones individuales que no formen parte de un paquete, usa solo <RoomData>

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

Para obtener más información, consulta los metadatos del paquete de habitación.

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 Descripción
<Capacity> Optional integer Es la cantidad máxima de huéspedes que una sala de reuniones puede estar físicamente. adaptar. Para una habitación, la capacidad es mayor o igual que y la ocupación.

Cuando se especifica, este valor debe ser igual o mayor que el valor del elemento <Occupancy>, que es el elemento la cantidad de huéspedes de una habitación en particular. Por ejemplo, la interfaz de usuario <Capacity> puede ser 6, pero <Occupancy> es 4.

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

<Description> Optional Object Corresponde a una descripción detallada de la sala. Este elemento debe contienen información no descrita por otros elementos o las <Name>. No debes usar mayúsculas al especificar la descripción de la habitación.

El elemento <Description> toma un solo elemento secundario elemento, <Text>, que tiene los siguientes dos atributos obligatorios:

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

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

En el siguiente ejemplo, se muestran las versiones en inglés y francés de la sala. descripción:

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

Este elemento toma un solo elemento secundario, <Text>, que tiene los siguientes dos atributos obligatorios:

  • text: Es el nombre de la sala.
  • language: Es un código de idioma de dos letras. por ejemplo, fr

Usa un elemento <Text> independiente para cada idioma en los que podría aparecer tu anuncio o vínculo gratuito para reservar (con diferentes para los atributos language).

En el siguiente ejemplo, se muestran las versiones en inglés y francés de la sala. nombre:

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

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

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

Es posible que <Occupancy> incluya <OccupancyDetails>, que especifica el tipo de invitados (adultos o niños). Consulta <OccupancyDetails> para ver la sintaxis. y la descripción de los elementos secundarios.

<OccupancySettings> Optional Object Parámetros de configuración que pueden restringir o modificar los requisitos de ocupación de un en la sala de espera.

El elemento <OccupancySettings> toma lo siguiente: los siguientes elementos secundarios:

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

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

  • <MinAge>: La edad mínima de todos los invitados se queden en una habitación. Por ejemplo, si se establece en 18, esta habitación solo se puede reservar para grupos que tengan más de 18 años de edad o más antiguos.

    El valor de <MinAge> debe ser un número 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 Una URL y una leyenda opcional para una foto de la habitación en cuestión o Paquete de habitación. Puedes especificar más de un <PhotoURL> por una habitación o un paquete de habitación. La URL de cada foto debe tener su propia extensión <PhotoURL>

Este elemento toma los siguientes elementos secundarios:

  • <URL>: Especifica la ubicación de la foto. El ubicación debe ser pública (no detrás de un firewall) y debe incluir el protocolo (por ejemplo, https://). Usa solo una. <URL> por <PhotoURL>.
  • <Caption>: Define el subtítulo de la foto. Este elemento toma un solo elemento secundario, <Text>, que tiene dos atributos obligatorios: text y language El atributo text es la leyenda, y el atributo language especifica un símbolo código de idioma, 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 Es el ID único de la sala. Usa este ID para hacer coincidir los datos de la habitación con los bloques <Result> en tus actualizaciones de precios. Para para obtener más información, consulta los metadatos del paquete de habitaciones. (Usted también puedes usar este ID para hacer referencia a la definición de una sala común en una sola Mensaje de transacción al definir los datos de la sala de forma intercalada).

Ejemplos

Datos de la habitación

En el siguiente ejemplo, se definen los datos de las habitaciones:

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

Habitación & metadatos de paquetes

En el siguiente ejemplo, se definen los metadatos de habitaciones y paquetes:

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

Varios paquetes de habitaciones

En el siguiente ejemplo, se definen los metadatos de habitaciones y paquetes para varias salas de reuniones Paquetes:

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

El elemento <RoomFeatures> aparece en el siguiente lugar de la Jerarquía XML de mensajes 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 secundario ¿Obligatorio? Tipo Descripción
<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 tipo futón.
  • japanese_western: Una habitación de estilo japonés occidental con camas de estilo occidental y futones de estilo japonés.
<Beds> Optional Object Contiene la cantidad de <Bed> que tenga la habitación. Nota que los futones japoneses no deberían contarse aquí.

Cada <Bed> tiene los siguientes atributos:

  • size (opcional): Los valores válidos son single, semi_double, double y queen y king.
Cada <Bed> tiene los siguientes elementos secundarios:
  • <Width> (opcional): Especifica el ancho de la cama. Indispensable tienen el atributo unit con el valor cm y el atributo number con el ancho de la cama en número entero centímetros.
  • <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 Proporciona este elemento cuando esta habitación sea una suite.
<Capsule> Optional empty Proporciona este elemento cuando esta sala sea una cápsula.
<Roomsharing> Optional enum Si esta habitación se comparte con otros ocupantes, como propietarios o algún otro invitados. Los valores válidos son shared y private.
<Outdoor> Optional empty Proporciona este elemento cuando esta habitación sea de un alojamiento al aire libre que no tenga tener paredes fijas, tuberías y control de clima. Por ejemplo, habitaciones de hoteles no son alojamientos al aire libre, mientras que los campamentos donde los huéspedes se hospedan en carpas y Los parques para autocaravanas, donde los huéspedes traen su propia casa rodante, son alojamientos al aire libre.
<MobilityAccessible> Optional empty Proporciona este elemento cuando la sala sea accesible para personas con movilidad reducida.
<Smoking> Optional enum Indica si esta habitación es para no fumadores o para fumadores. Valores válidos son non_smoking y smoking.
<BathAndToilet> Optional Object Contiene información sobre un baño y un inodoro en la habitación.

El atributo es:

  • relation (opcional): Indica cómo el baño y el inodoro se colocan una frente a otra. Los valores válidos son together (la bañera y el inodoro se encuentran juntos en la misma habitación) (p.ej., baño) uno al lado del otro) y separate (cada uno tiene un espacio exclusivo para el baño y el inodoro). Este atributo no debe ser se establece cuando la habitación no tiene baño ni baño.

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

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

    Los atributos son los siguientes:

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

    Los atributos son los siguientes:

    • electronic_bidet (opcional): Indica que el elemento inodoro tiene un bidet electrónico. Los valores válidos son 0 (o false) y 1 (o true).
    • mobility_accessible (opcional): Indica que el elemento inodoro sea 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 Proporciona este elemento cuando esta habitación tenga baño privado al aire libre.
<AirConditioning> Optional empty Proporciona este elemento cuando esta habitación tenga aire acondicionado.
<Balcony> Optional empty Proporciona este elemento cuando esta habitación tenga balcón o terraza.
<Views> Optional Object Entre las opciones válidas, se incluyen las siguientes:

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

Ejemplos

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

Dos camas individuales

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

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

<?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. Cama no se requiere información para la habitación de estilo japanese.

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

Wéstern japonés con cama

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

<?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 la pareja no tiene la información sobre la cantidad de camas en japanese_western salas y, luego, sigue 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 los metadatos independientes del itinerario sobre los paquetes de habitaciones de una propiedad. Este elemento contiene información asociada con un socio y un hotel pero no con un itinerario. El propósito previsto es definir todas las actividades datos una vez y hacer referencia a ellos a partir de los datos de itinerarios.

El elemento <PackageData> aparece en el siguiente lugar de la Jerarquía XML de mensajes 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 tiene Describe las funciones y los términos de las tarifas que no forman parte de la habitación física. descripción. Usas <RoomData> y <PackageData> en combinación para lo siguiente: proporcionar detalles sobre los paquetes de habitaciones y las funciones de las tarifas. Para habitaciones individuales que no son parte de un paquete, usa solo <RoomData>.

Puedes definir los elementos <RoomData> y <PackageData> para la misma habitación o paquete de habitación. Cuando Google muestre esa habitación o paquete en el en los resultados de la búsqueda, incluirá las descripciones de ambas, separadas por una y 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 todos los datos sobre la propiedad. reemplaza los datos existentes.

Para obtener más información, consulta los metadatos del paquete de habitación.

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>1000 </NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines">
        </Provider>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

Atributos

El elemento <PackageData> no tiene atributos.

Elementos secundarios

El elemento <PackageData> tiene los siguientes elementos secundarios:

Elemento secundario ¿Obligatorio? Tipo Descripción
<BreakfastIncluded> Optional boolean Especifica si este paquete incluye desayuno con la tarifa. Los valores válidos son 0 (o false) y 1 (o true).

Es preferible que utilices <Meals> en lugar de <BreakfastIncluded>

<ChargeCurrency> Optional enum Indica cuándo y dónde el usuario paga una reserva. Este elemento usa el mismo la sintaxis como <ChargeCurrency> en un <Result>.

El valor predeterminado es web.

<CheckinTime> Optional Time Hora de entrada más temprana posible. La hora debe ser inferior a las 24:00 en la hora local del hotel.
<CheckoutTime> Optional Time Es la hora de salida más reciente posible en la hora local del hotel.
<Description> Optional Object Es una descripción detallada del paquete. Este elemento debe contienen información no descrita por otros elementos o las <Name>. No debes usar mayúsculas al especificar la descripción de la habitación.

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

<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 incluirían ese servicio. No configurar de paquetes de habitaciones en un hotel que ofrece Internet gratis a todos salas de reuniones. Este elemento no se aplica a la conexión a Internet por cable ni a la conexión inalámbrica en la habitación a Internet que no está disponible en las habitaciones de huéspedes. Los valores válidos son 0 (o false) y 1 (o true).
<Meals> Optional Object Contiene información sobre las comidas en este paquete.

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

  • included (obligatorio): establecer en 1 (o true) si la tarifa incluye desayuno o cena; De lo contrario, se establecerá en 0 o false.
  • in_room (opcional): Configúralo en 1 (o true) Si los huéspedes tienen la opción de desayunar o cenar en la habitación, se hospedan in; De lo contrario, se establecerá en 0 (o false).
  • in_private_space (opcional): Establece el valor en 1 (o true) si los huéspedes tienen la opción de desayunar o cenar en el lugar un espacio (excepto la habitación en la que se queden) en el que puedan evitar el contacto otros invitados; De lo contrario, se establecerá en 0 (o false).
  • buffet (opcional): Configúralo en 1 (o true) si el desayuno o la cena se sirve como buffet. De lo contrario, se establecerá en 0 (o false).

Los atributos opcionales se usan solo cuando included es true.

Para los filtros de comida (no meals, breakfast only, dinner only y breakfast and dinner) al trabajo, tanto <Breakfast> como <Dinner> necesitan que se proporcionará con el atributo included.

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

Este elemento toma un solo elemento secundario, <Text>, que tiene dos atributos, text y language. El atributo text es la descripción, y el 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 Indica la cantidad máxima de huéspedes para los que está diseñado un paquete de habitación. Por ejemplo, un paquete grande podría alojar físicamente 6 huéspedes, pero está destinado solo para 4 huéspedes.

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

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

Si especificas este elemento en <RoomBundle> y <PackageData>, el valor en <RoomBundle> tiene prioridad.

Nota:

Es posible que <Occupancy> incluya <OccupancyDetails>,que especifica el tipo de invitados (adultos o niños). Consulta <OccupancyDetails> para ver la sintaxis y descripción de los elementos secundarios.
<PackageID> Required string

Es el ID único del paquete. Usa este ID para hacer coincidir el Los datos del paquete de habitación con los bloques <Result> en tu las actualizaciones de precios. Para obtener más información, consulta Sala Metadatos del paquete.

(También puedes usar este ID para hacer referencia a una definición de paquete de habitación común se usa en un solo mensaje Transaction cuando se definen los datos del paquete de habitación inline.)

<ParkingIncluded> Optional boolean Si un paquete de habitación incluye estacionamiento sin cargo y en qué lugar el estacionamiento sería un servicio pagado en este hotel. No especificar un valor de este elemento para un hotel que ofrece estacionamiento gratuito.

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

<PhotoURL> Optional Object (Al igual que <PhotoURL> en <RoomData>, pero para el paquete (por ejemplo, fotos de comidas).
<Refundable> Optional Object Permite publicar una tarifa como completamente reembolsable o proporcionar una tarifa cancelación. De lo contrario, no se mostrará información sobre el reembolso. Una política de reembolso a nivel de <PackageData> anula la política de reembolso en el nivel <Result>. Se anulará una política de reembolso a nivel <Rates> la política de reembolso a nivel de <PackageData> Los precios reembolsables pueden también deben destacarse para los usuarios a través de opciones alternativas sin tener que modificar tu esquema de mensaje de transacción. Más información sobre estas opciones Política de tarifas reembolsables.

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

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

Nota: Te recomendamos configurar todos los atributos. Un feed se genera un mensaje de advertencia de estado cuando uno o más atributos sin establecer.

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

  • available: (Obligatorio) establecido en 1 o true para indicar si la tarifa permite una refund; De lo contrario, se establecería en 0 o false.
  • refundable_until_days: (obligatorio si available es true). Especifica la cantidad de días antes del registro de entrada en los que se puede obtener un reembolso total solicitado. El valor de refundable_until_days debe ser un número entero entre 0 y 330, ambos incluidos.
  • refundable_until_time: (Es muy recomendable si available es true). Especifica la última hora del día, en la hora local del hotel, que se requiere de reembolso se respetará. Esto se puede combinar con refundable_until_days para especificar, por ejemplo, "los reembolsos están disponibles hasta las 4:00 p.m. dos días antes check-in". Si no se establece refundable_until_time, el valor se establece de forma predeterminada en la medianoche.

    El valor de este atributo usa el formato Time.

Cuando configures los atributos, ten en cuenta lo siguiente:

  • Si available o refundable_until_days no es establecido, 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 de los otros atributos.
<MembershipBenefits Included> Optional boolean La tarifa incluye los beneficios de nivel élite por la duración de la estadía. Incluye los siguientes parámetros:
  • ProgramName: Nombre del programa de estado élite
  • ProgramLevel: Es el nivel del programa. Por ejemplo: "Oro".
  • NightlyValue (optional): Valor por noche de la y muchos beneficios más.
<CarRentalIncluded> Optional boolean La tarifa incluye el alquiler de autos gratuito por la duración de la estadía.
<MilesIncluded>> Optional boolean La tarifa incluye las millas de viajero frecuente. Se incluyen los siguientes parámetros:
  • NumberofMiles: Cantidad de millas por itinerario.
  • Provider: Las millas de viajero frecuente son proporcionadas.
<OnPropertyCredit> Optional boolean La tarifa incluye crédito en la propiedad (F&B, complejo turístico, spa, etcétera). Parámetro:
  • Amount: Es el valor del crédito por itinerario, expresado en moneda local. moneda.
<AirportTransportationIncluded> Optional Object La tarifa incluye transporte gratuito desde y hacia un aeropuerto cercano. La fase opcional El atributo direction especifica la direccionalidad de la transporte. Entre los valores válidos, se incluyen los siguientes:
    from: Se ofrece transporte del aeropuerto al propiedad. Este es el valor predeterminado si no se especifica ninguna dirección. to: Se ofrece transporte al aeropuerto desde la propiedad. round_trip: se proporciona transporte desde y hacia el aeropuerto.

Ejemplos

Paquete de habitación individual

En el siguiente ejemplo, se define un paquete de habitación individual, con una ocupación de 2 (un adulto y un niño), con 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 paquetes y habitaciones

En el siguiente ejemplo, se definen los metadatos de habitaciones y paquetes:

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

Varios paquetes de habitaciones

En el siguiente ejemplo, se definen los metadatos de habitaciones y paquetes para varias salas de reuniones Paquetes:

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

En el siguiente ejemplo, se definen los metadatos de habitaciones y paquetes para un paquete de Room con las funciones de tarifas:

<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>
        <Provider>
          <Text language="en" text="United Airlines"/>
        </Provider>
      </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 habitaciones y paquetes de comidas, 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 las actualizaciones de precios y disponibilidad en un <Transaction> mensaje.

El elemento <Result> aparece en el siguiente lugar de la Jerarquía XML de mensajes de transacción:

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

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

Por lo general, envías mensajes de Transaction con actualizaciones de precios con mucha frecuencia. La manera y la frecuencia exactas en las que lo hagas dependerá de tu modo de entrega.

Puedes usar <Result> en un mensaje de transacción para quitar itinerarios, como se muestra a continuación: que se describe en Cómo quitar inventario. Si quieres obtener más información sobre el uso de los mensajes de transacción para actualizar precios y disponibilidad, y Cómo agregar y actualizar inventario.

Un solo mensaje de transacción puede incluir cualquier cantidad de elementos <Result>. en él, 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. -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

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

    <Custom[1-5]>custom_value</Custom[1-5]>
  </Result>
  ...
  </Transaction>

Atributos

El elemento <Result> tiene los siguientes atributos:

Atributo ¿Es obligatorio? Tipo Descripción
mergeable Optional boolean De forma predeterminada, se aplicarán a los precios nuevos los precios nuevos para un par específico de itinerario y hotel se reemplazarán todos los precios anteriores (no vencidos) presentes en la caché de Google. El El atributo combinable le permite almacenar precios adicionales en la caché de Google. sin borrar la información de precios anterior. Consulta de precios en vivo con Las respuestas contextuales siempre tendrán este atributo establecido en true. (independientemente de la respuesta al mensaje de transacción).

Elementos secundarios

El elemento <Result> tiene los siguientes elementos secundarios:

Elemento secundario ¿Obligatorio? Tipo Descripción
<AllowablePointsOfSale> Optional Object Una o más páginas de destino aptas para el hotel. Una página de destino es un sitio web que puede realizar el proceso de reserva de para el usuario final. Para incluir explícitamente determinadas páginas de destino otros), agrega uno o varios <AllowablePointsOfSale> que coincidan con la del elemento <PointOfSale> id en el archivo de páginas de destino.

Si no incluye este elemento, todas las páginas de destino definidas en archivos de páginas de destino se consideran aptos para utilizarse en la reserva de en la sala de espera. Para obtener más información, consulta Sintaxis del archivo de las páginas de destino.

<Baserate> Optional float

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

  • Para una habitación privada, establece la tarifa menos costosa de habitación doble que ofreces. Se permiten las ocupaciones más altas si no tienes una tarifa de ocupación doble y tu cuenta no tiene ocupación doble tarifas habilitadas. Comunícate con nosotros para habilitar las tarifas que no son de ocupación doble. No se permiten tarifas de ocupación única aquí, ya que se debe establecer en <Rates>.
  • Para una habitación compartida, deja el campo en blanco y úsalo <RoomBundle>
  • Este valor debe ser el precio base total para todas las noches, no el tarifa promedio por noche.

Si la habitación no está disponible para el itinerario, <Baserate> debe omitirse o establecerse en -1 y <Unavailable> deben ser que se especificó, junto con los motivos conocidos de la falta de disponibilidad.

Para quitar un paquete de habitación, sigue las instrucciones que se indican en Cómo quitar un paquete de habitación.

El elemento <Baserate> no debe contener ninguna agrupación de dígitos. a símbolos, como una coma (,) o un punto (.). Separar siempre fracciones con un punto (.) como marca decimal. Por ejemplo: representan $1,200.40 como:

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

El elemento <Baserate> toma lo siguiente: atributos opcionales:

  • all_inclusive: un valor booleano que indica si esta tasa incluye impuestos y tarifas. En general, establece este valor como false para usuarios finales de EE.UU. y Canadá, y valores de suministro para <Tax> y <OtherFees> o de terceros. Si usas precios todo incluido, es posible que no cumplas con los requisitos aparezcan en las fichas si los precios no separan los impuestos y tarifas para los usuarios canadienses.

    Los precios todo incluido ahora se muestran a los usuarios de EE.UU.

    Para los demás usuarios finales, por lo general, debes incluir los impuestos y las tarifas. en la tarifa base y establece el valor de all_inclusive a true. Para obtener más información, consulta Política de Impuestos y Tarifas.

    El valor predeterminado es false.

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

Estos son los valores válidos:

  • web: Se le cobra al usuario en línea al momento de la reserva. Este es el valor predeterminado. La página de destino real es definido por el de la página de destino y pueden verse afectadas por la moneda del usuario la ubicación, el idioma y otros factores.
  • hotel: Se le cobra al usuario cuando se registra en el hotel. Si el pago siempre debe realizarse en la moneda del hotel, configura el valor de <ChargeCurrency> como hotel La página de destino real no se ve afectada por el la moneda del usuario.
  • deposit: Al usuario se le cobra una parte de inmediato. y el resto se cobra más adelante, por lo general, cuando el usuario registra su salida del hotel.
  • installments: se le cobra al usuario una fracción inicial. del total adeudado y se espera que pague periódicamente un saldo fijo durante un período determinado.

El valor predeterminado es web.

<Checkin> Required Date La fecha de entrada de un itinerario con el valor Date de un conjunto de datos tengan un formato común. La combinación del elemento <Nights> y el Los elementos <Checkin> conforman un itinerario.
<Custom[1‑5]> Optional string Define un campo personalizado que puedes usar para pasar datos adicionales. asociada con un hotel. Puedes pasar hasta cinco valores personalizados con el 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 se que el archivo de páginas de destino usa para crear una URL personalizada para una página de destino . Hay un límite de 200 caracteres por campo personalizado. Para más información, consulta Archivos de páginas de destino

&lt;Custom&gt; elementos proporcionados en el <Rate> no se heredan al elemento <RoomBundle>. Deberías definir <Custom> por separado en cada <RoomBundle>.

<ExpirationTime> Optional DateTime La fecha y hora en la que el precio se considera vencido (3 horas mínimo).

Te recomendamos que no proporciones marcas de tiempo de vencimiento si no es fundamental para la estructura de precios.

Google no publica precios vencidos ni ningún itinerario que tiene un precio vencido, se considerará Consulta de precios en tiempo real.

<Nights> Required integer Indica la cantidad de noches de un itinerario. El valor del El elemento <Nights> debe ser un número entero positivo. La combinación de <Nights> y <Checkin> conforman un itinerario.
<OtherFees> Optional float Tarifas distintas de 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 la el código de moneda de tres letras de 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 va acompañado de <OccupancyDetails>, que especifica el tipo de huéspedes (adultos o niños) Si no se especifican los tipos de invitados, se da por sentado que son adultos. Consulta <OccupancyDetails> para sintaxis y descripción de elementos secundarios. Si el botón No se proporcionó el elemento <Occupancy>, la ocupación es se estableció de forma predeterminada como 2.

Nota: Comunícate con el equipo de asistencia al cliente para habilitar la función para lo siguiente: envía precios que no sean de ocupación doble.

<PackageID> Optional string Es el ID único del paquete que se asignará a los datos de paquetes predefinidos. También se usa para propagar la variable de la página de destino PACKAGE-ID. Para obtener más información, consulta Sala Metadatos del paquete.
<Property> Required string El ID 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. El valor de este elemento debe coincidir con la ficha <id> que definiste en tu feed de lista de hoteles.
<Rates> Optional <Rates> Es un contenedor para uno o más bloques <Rate>. Cada <Rate> en <Rates> define un precio diferente para la habitación o el itinerario. combinación.

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

Nota: Dentro de <Result>, las tarifas de ocupación individual pueden solo se puede especificar en <Rates>. Comunícate con nosotros para permitir precios que no son de ocupación doble.

<Refundable> Optional Object Permite publicar una tarifa como completamente reembolsable o proporcionar una tarifa cancelación. De lo contrario, no se mostrará información sobre el reembolso. Una política de reembolso a nivel de <PackageData> anula la política de reembolso en el nivel <Result>. Se anulará una política de reembolso a nivel <Rates> la política de reembolso a nivel de <PackageData> Los precios reembolsables pueden también deben destacarse para los usuarios a través de opciones alternativas sin tener que modificar tu esquema de mensaje de transacción. Obtén más información sobre Política de tarifas reembolsables.

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

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

Nota: Te recomendamos configurar todos los atributos. Un feed se genera un mensaje de advertencia de estado cuando uno o más atributos sin establecer.

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

  • available: (Obligatorio) establecido en 1 (o true) para indicar si la tarifa permite una refund; De lo contrario, se establecerá en 0 (o false).
  • refundable_until_days: (obligatorio si available es true). Especifica la cantidad de días antes del registro de entrada en los que se puede obtener un reembolso total solicitado. El valor de refundable_until_days debe ser un número entero entre 0 y 330, ambos incluidos.
  • refundable_until_time: (Es muy recomendable si available es true). Especifica la última hora del día, en la hora local del hotel, que se requiere de reembolso se respetará. Esto se puede combinar con refundable_until_days para especificar, por ejemplo, "los reembolsos están disponibles hasta las 4:00 p.m. dos días antes check-in". Si no se establece refundable_until_time, el valor se establece de forma predeterminada en la medianoche.

    El valor de este atributo usa el formato Time.

Cuando configures los atributos, ten en cuenta lo siguiente:

  • Si available o refundable_until_days no es establecido, 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 de los otros atributos.
<RoomBundle> Optional <RoomBundle> Es un contenedor con información sobre las descripciones físicas de una habitación, cualquier empaquetado de comodidades y algunos detalles de la política de compra para el el hotel y el itinerario determinados.

En general, usa este elemento para definir el precio de la habitación base y diferentes tipos de habitaciones dentro de la misma propiedad. Si bien es posible para definir las descripciones del paquete de habitación intercaladas, debes usar un Mensaje de transacción para definir esa información. Google almacenará metadatos para que puedas hacer referencia a ellos, en lugar de repetirlos, en todos futuras actualizaciones de precios.

<RoomID> Optional string Es el ID único de la sala para asignarla a datos predefinidos. También que se usa para completar la variable de la página de destino PARTNER-ROOM-ID. Para obtener más información, consulta Sala Metadatos del paquete.
<Tax> Optional float Son los impuestos que se calculan sobre 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 por los impuestos. Por ejemplo, USD. El El elemento <Tax> es obligatorio si <Baserate> es mayor que cero.

Si el elemento <Baserate> “todo_incluido” se establece explícitamente en “true” y, luego, de salida es opcional.

<Unavailable> Optional Object Indica que el itinerario no está disponible para reservas. Sirve como contenedor para conocer los motivos más detallados por los que el itinerario no estaba disponible. Uno o más de los siguientes motivos de falta de disponibilidad pueden estar anidados en la sección Etiqueta <Unavailable>:
  • <NoVacancy/>: No hay más habitaciones disponibles para la venta por una o más noches de estadía.
  • <MinNightStay value=N/>: El itinerario estaba por debajo del estadía mínima por noche de N para las fechas de la estadía.
  • <MaxNightStay value=N/>: El itinerario estaba por encima del estadía máxima por noche de N para las fechas de la estadía.
  • <MinAdvancePurchase value=N/>: El itinerario era por debajo del período mínimo de reserva anticipada de N para la estadía fechas.
  • <MaxAdvancePurchase value=N/>: El itinerario era por encima del período máximo de reserva anticipada de N para la estadía fechas.
  • <ClosedToArrival/>: La propiedad no permite check-in en la fecha de llegada del itinerario.
  • <ClosedToDeparture/>: La propiedad no permite check-out en la fecha de salida del itinerario.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: La propiedad está cerrada para algunos o durante toda la estadía. Los atributos recomendados first_open y first_closed especifica las primeras fechas superiores o iguales a la fecha de llegada en la que la propiedad está abierta o cerrada, respectivamente. En el caso de una propiedad que se cierre 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 la que se cierra la propiedad. En el caso de una propiedad que se cerró el la fecha de llegada (first_closed) debe ser igual a la de llegada fecha y first_opened debe ser la próxima fecha en la que está abierta.
  • <NotFetched/>: No se efectuó un precio para el itinerario. que brindan las fuentes de datos downstream.
  • <InvalidProperty/>: Es el identificador de propiedad solicitado. no se reconoció.
  • <InvalidOccupancy/>: La ocupación solicitada no es compatibles con la propiedad.
  • <PriceIssue/>: Se produjo un problema con el precio no se enviará.
  • <InternalError reason=""/>: Algunos errores no enumerados o para analizar cómo ocurrió el incidente. El atributo opcional del motivo puede informar el error como texto.
  • <OtherRestriction restriction=""/>: El itinerario era no está disponible debido a alguna restricción de reservas no enumerada. Opcional el atributo de restricción permite informar la restricción como texto.

Ejemplos

Ejemplo de varias propiedades

En el siguiente ejemplo, se 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>
  </Result>
</Transaction>

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

Puedes definir esa información una vez en una transacción independiente. que almacena Google. Luego, puedes hacer referencia a ella en todos las posteriores actualizaciones de precios y de inventario. Para obtener más información, consulta Metadatos del paquete de habitaciones.

Ejemplo de tarifas múltiples

En el siguiente ejemplo, se define un solo itinerario y una propiedad con varios para las distintas ocupaciones. El elemento <Rates> se puede usar para lo siguiente: proporcionan precios de tarifas múltiples para una propiedad específica. El siguiente ejemplo es también es útil para las propiedades de Alquileres de vacaciones (RV):

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

En el siguiente ejemplo, se define un itinerario cuya disponibilidad no se pudo recuperados de canales downstream, un segundo que esté por debajo del mínimo estadía y que ya reservó para las fechas especificadas, y un tercero cuya La propiedad está cerrada en la fecha de llegada, pero se abre durante el transcurso de la estadía:

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

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

Usa el elemento <Rates> solo cuando haya varias tarifas para la misma habitación o combinación de itinerario. Por ejemplo, puedes definir varios para las tarifas condicionales tarifas privadas tarifas condicionales en paquetes de habitación

El elemento <Rates> aparece en el siguiente lugar de la Jerarquía XML de mensajes de transacción:

+ <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 el precio en el elemento superior <Result> o <RoomBundle>. Si no están configurados en <Rate>, heredan su valor del elemento superior. Solo &lt;AllowablePointsofSale&gt; 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>
          ...
        <Custom[1-5]>custom_value</Custom[1-5]>
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

Atributos

El elemento <Rates> tiene los siguientes atributos:

Atributo ¿Es obligatorio? Descripción
rate_rule_id Optional Para tarifas condicionales, este ID coincide con una tarifa con una definición de archivo de definición de reglas de tarifas. El límite de caracteres para este campo es de 40 caracteres.

Elementos secundarios

El elemento <Rates> tiene los siguientes elementos secundarios:

Elemento secundario ¿Obligatorio? Tipo Descripción
<AllowablePointsOfSale> Optional Object Una o más páginas de destino aptas para el hotel. Este elemento usa la misma sintaxis que el <AllowablePointsOfSale> en <Result>
<Baserate> Required float Es el precio de la habitación de la estadía. Este elemento usa el mismo como <Baserate> en <Result>.

Nota: El elemento secundario <Baserate> en No se puede definir que <Rate> no esté disponible.

<ChargeCurrency> Optional enum Indica cuándo y dónde el usuario paga una reserva. Este elemento usa el la misma sintaxis que <ChargeCurrency> en una <Result>
<Custom[1‑5]> Optional string Son campos personalizados que puedes usar para pasar datos adicionales asociados con un hotel a una página de destino. Este elemento usa la misma sintaxis que un <Custom[1‑5]> en un objeto <Result>. Hay un límite de 200 caracteres por campo personalizado. Para obtener más información, consulta archivos de páginas de destino.

Si está <Custom> se proporcionan en la <Result>, no se heredan en el <RoomBundle> y debe definirse por separado para cada <RoomBundle> o se puede incluir en <PackageData> si según tus necesidades.

<ExpirationTime> Optional DateTime La fecha y hora en que la tarifa se considera vencida. Esta usa la misma sintaxis que un <ExpirationTime> en un objeto <Result>.
<Occupancy> Optional integer

Especifica la cantidad máxima de ocupantes permitidos para esta tarifa. Si no es así especificada, se supone que es la misma que la tarifa superior. Es posible que <Occupancy> incluya <OccupancyDetails>, que especifica el tipo de huéspedes (adultos o secundarios). Consulta <OccupancyDetails> para conocer la sintaxis y la descripción de elementos secundarios.

<OtherFees> Required float Tarifas que no sean la tarifa base y los impuestos que influyen en el precio final de una habitación. Este elemento usa la misma sintaxis que <OtherFees> en un objeto <Result>.

Si el elemento <Baserate> “todo_incluido” se establece explícitamente en “true” y, luego, de salida es opcional.

<Refundable> Optional Object Permite publicar una tarifa como completamente reembolsable o proporcionar una tarifa cancelación. De lo contrario, no se mostrará información sobre el reembolso. Una política de reembolso a nivel de <PackageData> anula la política de reembolso al nivel <Result>. Se anulará una política de reembolso a nivel <Rates> la política de reembolso a nivel de <PackageData> Los precios reembolsables pueden también deben destacarse para los usuarios a través de opciones alternativas sin tener que modificar tu esquema de mensaje de transacción. Más información sobre estas opciones Política de tarifas reembolsables.

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

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

Nota: Te recomendamos configurar todos los atributos. Un feed se genera un mensaje de advertencia de estado cuando uno o más atributos sin establecer.

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

  • available: (Obligatorio) establecido en 1 (o true) para indicar si la tarifa permite una refund; De lo contrario, se establecerá en 0 (o false).
  • refundable_until_days: (obligatorio si available es true). Especifica la cantidad de días antes del registro de entrada en los que se puede obtener un reembolso total solicitado. El valor de refundable_until_days debe ser un número entero entre 0 y 330, ambos incluidos.
  • refundable_until_time: (Es muy recomendable si available es true). Especifica la última hora del día, en la hora local del hotel, que se requiere de reembolso se respetará. Esto se puede combinar con refundable_until_days para especificar, por ejemplo, "los reembolsos están disponibles hasta las 4:00 p.m. dos días antes check-in". Si no se establece refundable_until_time, el valor se establece de forma predeterminada en la medianoche.

    El valor de este atributo usa el formato Time.

Cuando configures los atributos, ten en cuenta lo siguiente:

  • Si available o refundable_until_days no es establecido, 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 de los otros atributos.
<Tax> Required float Son los impuestos que se calculan sobre el precio final de una habitación. Esta usa la misma sintaxis que <Tax> en una <Result>

Ejemplos

Tarifa base y tarifa condicional

En el siguiente ejemplo, se muestra un mensaje 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>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Varias tarifas condicionales

En el siguiente ejemplo, se define una tarifa base y varias tarifas condicionales en un <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. 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>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <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>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </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>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<RoomBundle>

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

El elemento <RoomBundle> aparece en el siguiente lugar de la Jerarquía XML de mensajes de transacción:

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

Para obtener más información, consulta Cómo usar los paquetes de habitación.

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>

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

      <Custom1>custom_value_1</Custom1>
      <Custom2>custom_value_2</Custom2>
      <Custom3>custom_value_3</Custom3>
      <Custom4>custom_value_4</Custom4>
      <Custom5>custom_value_5</Custom5>
    </RoomBundle>
    ...
  </Result>
</Transaction>

Atributos

El elemento <RoomBundle> no tiene atributos.

Elementos secundarios

El elemento <RoomBundle> tiene los siguientes elementos secundarios:

Elemento secundario ¿Obligatorio? Tipo Descripción
<Baserate> Required float Define el precio del paquete de habitación de la estadía. Este elemento usa la misma sintaxis que <Baserate> en <Result>, con el siguiente excepción:
  • Si la habitación no está disponible para el itinerario, quita la <RoomBundle> para indicar que una habitación no está más tiempo 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 desayuno con la tarifa.
<ChargeCurrency> Optional enum Indica cuándo y dónde el usuario paga una reserva. Este elemento usa el mismo la sintaxis como <ChargeCurrency> en un <Result>.

El valor predeterminado es web.

<Custom[1‑5]> Optional string Campos personalizados para pasar datos adicionales a las páginas de destino para el paquete de habitación. Estos elementos utilizan la misma sintaxis que <Custom[1-5]> en <Result>. El límite es de 200 caracteres por campo personalizado. Para obtener más información, consulta Archivos de páginas de destino.

Si está <Custom> se proporcionan en la <Result>, no se heredan en el <RoomBundle> y debe definirse por separado para cada <RoomBundle> o se puede incluir en <PackageData> si según tus necesidades.

<InternetIncluded> Optional boolean Si un paquete de habitación incluye acceso a Internet sin cargo, mientras que otros paquetes no incluyen ese servicio. No configurar de paquetes de habitaciones en un hotel que ofrece Internet gratis a todos salas de reuniones. Este elemento no se aplica a la conexión a Internet por cable ni a la conexión inalámbrica en la habitación a Internet que no está disponible en las habitaciones de huéspedes.
<Occupancy> Required integer Especifica la cantidad máxima de ocupantes permitidos para esta tarifa. Por ejemplo, un un paquete grande podría alojar físicamente hasta 6 huéspedes, pero el “Paquete de luna de miel” solo se permiten 2 huéspedes.

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

Cuando definas la ocupación en tu URL de página de destino, usa el atributo Variables NUM-ADULTS y NUM-CHILDREN, como que 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 positivo Es un número entero entre 1 y 99, ambos incluidos.

Notas:

  • <Occupancy> para <RoomBundle> se recomienda, así que se marcará como obligatorio y, si se omite, arroja un error 1097.
  • <Occupancy> proviene del objeto de datos de esta pedido: <RoomBundle>, <PackageData> y, luego, = <RoomData> Si no hay ningún valor presente en ninguno de estos, el valor predeterminado es 2.
  • Es posible que <Occupancy> incluya <OccupancyDetails>, que especifica el tipo de invitados (adultos o niños). Si el invitado escribe no se especifican, se supone que son adultos. Consulta <OccupancyDetails> para la sintaxis y la descripción de elementos secundarios
  • Cuando estableces <Occupancy> en ambos, <RoomBundle> y <PackageData>, el valor en <RoomBundle> tiene prioridad.
<OtherFees> Required float Tarifas distintas de 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 la el código de moneda de tres letras de las tarifas. Por ejemplo, usa USD para dólares estadounidenses.
<PackageID> Optional (recommended) string Es el ID único de los datos del paquete. Usa este ID para hacer coincidir el Datos del paquete de habitación con lo que se envió en <PackageData>. Para más información, consulta Sala Metadatos del paquete. (Usted también puedes usar este ID para hacer referencia a una definición de paquete de habitación común utilizada en un solo mensaje Transaction cuando defines los datos del paquete de habitación inline.)
<ParkingIncluded> Optional boolean Si un paquete de habitación incluye estacionamiento sin cargo y en qué lugar el estacionamiento sería un servicio pagado en este hotel. No especificar un valor de este elemento para 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 de tarifas representa el identificador único de un habitación y paquete. Por ejemplo, con un Valor <RoomID> de 5 y un <PackageID> de ABC, podrías usar un valor de 5-ABC para <RatePlanID>. Te recomendamos que utilices RatePlanID como una variable para crear tu página de destino dinámica (antes conocido como punto de venta).

Para obtener más información, consulta Usar variables y Condiciones.

<Rates> Optional <Rates> Tarifas que anulan los valores predeterminados de este paquete de habitación. Esta usa la misma sintaxis que <Rates> en <Result>.
<Refundable> Optional Object Permite publicar una tarifa como completamente reembolsable o proporcionar una tarifa cancelación. De lo contrario, no se mostrará información sobre el reembolso. Una política de reembolso a nivel de <PackageData> anula la política de reembolso en el nivel <Result>. Se anulará una política de reembolso a nivel <Rates> la política de reembolso a nivel de <PackageData> Los precios reembolsables pueden también deben destacarse para los usuarios a través de opciones alternativas sin tener que modificar tu esquema de mensaje de transacción. Más información sobre estas opciones Política de tarifas reembolsables.

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

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

Nota: Te recomendamos configurar todos los atributos. Un feed se genera un mensaje de advertencia de estado cuando uno o más atributos sin establecer.

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

  • available: (Obligatorio) establecido en 1 (o true) para indicar si la tarifa permite una refund; De lo contrario, se establecerá en 0 (o false).
  • refundable_until_days: (obligatorio si available es true). Especifica la cantidad de días antes del registro de entrada en los que se puede obtener un reembolso total solicitado. El valor de refundable_until_days debe ser un número entero entre 0 y 330, ambos incluidos.
  • refundable_until_time: (Es muy recomendable si available es true). Especifica la última hora del día, en la hora local del hotel, que se requiere de reembolso se respetará. Esto se puede combinar con refundable_until_days para especificar, por ejemplo, "los reembolsos están disponibles hasta las 4:00 p.m. dos días antes check-in". Si no se establece refundable_until_time, el valor se establece de forma predeterminada en la medianoche.

    El valor de este atributo usa el formato Time.

Cuando configures los atributos, ten en cuenta lo siguiente:

  • Si es available o refundable_until_days no se establece, 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 de los otros atributos.
<RoomID> Required string Es el ID único de los datos de la habitación. Usa este ID para hacer coincidir el Datos del paquete de habitación con lo que enviaste en <RoomData>. Para obtener más información, consulta Metadatos del paquete de habitación. (También puedes usar este ID para hacer referencia a un la definición de la sala común en un solo mensaje Transaction cuando defines los datos de la habitación están intercalados).
<Tax> Required float Son los impuestos que se calculan sobre 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 por los impuestos. Por ejemplo, usa USD para dólares estadounidenses.

Ejemplos

Paquete de ocupación individual

En el siguiente ejemplo, se define una respuesta con un solo paquete de ocupación. Cuando un usuario selecciona 1 en el selector de ocupación, Google muestra el valor más bajo precio apto sin importar la ocupación.

Si no hay un precio de ocupación único disponible, Google mostrará el el precio más bajo de las habitaciones dobles. Ten en cuenta que los precios de habitaciones individuales no son se consulta en vivo si se almacenan en caché más precios de ocupación doble o más itinerario.

En este ejemplo, se hace referencia a los metadatos predefinidos de habitaciones y paquetes con el Elementos <RoomID> y <PackageID>. Usa <RoomData> y elementos <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

En el siguiente ejemplo, se define una respuesta que contiene dos o más ocupaciones.

En este ejemplo, se hace referencia a los metadatos predefinidos de habitaciones y paquetes con el Elementos <RoomID> y <PackageID>. Usa <RoomData> y elementos <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>


Varios paquetes de habitaciones

En el siguiente ejemplo, se configura la ocupación en varios paquetes de habitaciones para demostrar lo siguiente: 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>

Varias tarifas condicionales

En el siguiente ejemplo, se define una tarifa base y varias tarifas condicionales en un <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. 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>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <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>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </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>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

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

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

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 Descripción
<NumAdults> Required integer Indica la cantidad de huéspedes adultos. Min:1, Máx.:20.
<Children> Optional Object Un contenedor para uno o más elementos <Child>.
<Child age> Optional integer Es 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> en <Results>, <RoomBundle> o el elemento secundario <Rates>.

Respuesta de resultado

En el siguiente ejemplo, se define un itinerario y su precio para un en respuesta a una consulta de precios en tiempo real en la que el usuario especificó el la cantidad y los tipos de invitados. En este caso, el <OccupancyDetails>: 2 adultos y un elemento secundario se muestran 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>

Califica la respuesta

En el siguiente ejemplo, se define un itinerario y su precio para 1 adulto y 1 hijo o hija. Aquí, los <OccupancyDetails> se muestran en <Rates>. elemento 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>
        <Custom1>abc4</Custom1>
        <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 para dos noches, con una tarifa reembolsable. Aquí, aparecen los elementos (<OccupancyDetails>) en <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>

Varios paquetes de habitaciones

En el siguiente ejemplo, se definen varias tarifas de <RoomBundle> que se restringido a una ocupación de 2 adultos y 2 niños. Aquí, la <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>
      <Custom1>ratebasic</Custom1>
      <Custom2>ratebasic</Custom2>
      <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>
          <Custom1>ratecode321</Custom1>
        </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>
          <Custom1>ratecode432</Custom1>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>