Promotions

Solicitudes

Sintaxis

En el mensaje Promotions se utiliza la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="partner_account_name"
            id="message_ID"
            timestamp="timestamp">
  <HotelPromotions hotel_id="HotelID" action="[overlay]">
    <Promotion id="PromotionID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </BookingDates>
      <BookingWindow min="integer" max="integer"/>
      <CheckinDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckinDates>
      <CheckoutDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckoutDates>
      <!-- Specify only one of percentage, fixed_amount, or fixed_amount_per_night;
           applied_nights is only used with percentage or fixed_amount_per_night -->
      <Discount percentage="float" fixed_amount="float" fixed_amount_per_night="float"
        applied_nights="integer_1_to_99"/>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <InventoryCount min="integer" max="integer"/>
      <LengthOfStay min="integer" max="integer"/>
      <MinimumAmount before_discount="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <Stacking type="[any|base_only|none|second]"/>
      <StayDates application="[all|any|overlap]">
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <UserCountries>
        <Country code="country_code"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>

Elementos y atributos

El mensaje Promotions incluye los siguientes elementos y atributos:
Elemento/@Atributo Repeticiones Tipo Descripción
Promotions 1 Complex element Elemento raíz de un mensaje Promotions.
Promotions/@partner 1 String Cuenta de partner de este mensaje. El valor de esta cadena es la clave del partner que aparece en la página Configuración de la cuenta de Hotel Center.

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

Promotions/@id 1 String Identificador único de este mensaje de solicitud. Este valor se devuelve en el mensaje de respuesta. Los caracteres permitidos son a-z, A-Z, 0-9, _ (guion bajo) y - (guion).
Promotions/@timestamp 1 DateTime Fecha y hora de creación de este mensaje.
Promotions/HotelPromotions 0..n HotelPromotions

Promociones de una propiedad. Cada una se aplica a una sola propiedad.

Nota: Salvo si se utiliza <Stacking>, la promoción que tenga el descuento más alto es la que se aplicará a la reserva cuando haya varias promociones que cumplan los requisitos.

Promotions/HotelPromotions/@hotel_id 1 String Identificador único de la propiedad. Este valor debe coincidir con el ID de hotel especificado en la cadena <id> del elemento <listing> del feed de lista de hoteles. El ID de hotel también aparece en Hotel Center.
Promotions/HotelPromotions/@action 0..1 Enum

Si se especifica, el valor debe ser "overlay". Cuando es así, todas las promociones almacenadas se eliminan antes de que se almacenen las que se han especificado en el mensaje actual.

Si no se especifica, se aplica una de las siguientes acciones a cada promoción especificada en ese mensaje:

  • Se añade (si ninguna de las promociones almacenadas tiene el mismo id)
  • Se actualiza (si la promoción almacenada tiene el mismo id)
  • Se elimina (si la promoción almacenada tiene el mismo id y el valor del atributo action de la promoción especificada en el mensaje es "delete").
Promotions/HotelPromotions/Promotion 0..99 Promotion

Promoción única de una propiedad. Ten en cuenta que si action="overlay" y no se especifica un elemento <Promotion>, se eliminan todas las promociones de la propiedad.

Nota: Si necesitas usar más de 99 promociones, ponte en contacto con tu Administrador técnico de cuentas (TAM).

Promotions/HotelPromotions/Promotion/@id 1 String Identificador único de la promoción. Admite un máximo de 40 caracteres. Los caracteres admitidos son a-z, A-Z, 0-9, _ (guion bajo), - (guion) y . (punto).
Promotions/HotelPromotions/Promotion/@action 0..1 Enum

Si se especifica, el valor debe ser "delete". Si no se especifica y no se almacena una promoción con el mismo id, entonces esta promoción se almacena. De lo contrario, si no se especifica y se almacena una promoción con el mismo id, se actualizará la promoción disponible.

Si se especifica el valor "delete", se elimina la promoción almacenada con el mismo id. Cuando utilices "delete", no incluyas ningún elemento secundario en <Promotion>. Tampoco se permite usar "delete" junto con <HotelPromotions action="overlay"/>.

Promotions/HotelPromotions/Promotion/BookingDates 0..1 BookingDates Contenedor para uno o varios periodos que determinan cuándo debe producirse una reserva para que se aplique la promoción.
Promotions/HotelPromotions/Promotion/BookingDates/DateRange 1..99 DateRange Periodo en el que se especifica cuándo debe producirse una reserva para que se aplique la promoción.
Promotions/HotelPromotions/Promotion/BookingDates/DateRange/@start 0..1 Date Fecha de inicio del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o anterior a la indicada en end. Si no se especifica start, el periodo es ilimitado en lo que se refiere a la fecha de inicio.
Promotions/HotelPromotions/Promotion/BookingDates/DateRange/@end 0..1 Date Fecha de finalización del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o posterior a la indicada en start. Si no se especifica end, el periodo es ilimitado en lo que se refiere a la fecha de finalización.
Promotions/HotelPromotions/Promotion/BookingDates/DateRange/@days_of_week 0..1 String

Días de la semana permitidos en el periodo. Si no se especifica, se permiten todos los días. Cada carácter de la cadena indica un día. Por ejemplo, "MTWHF" especifica que se permiten días laborables en el periodo.

Los caracteres válidos son:

  • M para el lunes
  • T para el martes
  • W para el miércoles
  • H para el jueves
  • F para el viernes
  • S para el sábado
  • U para el domingo

Cualquier combinación de caracteres es válida.

Promotions/HotelPromotions/Promotion/BookingWindow 0..1 BookingWindow Especifica el periodo en que debe producirse la reserva en relación con la fecha de entrada (según la zona horaria de la propiedad). Por ejemplo, puedes configurar una ventana de reserva de al menos 7 días, pero no de más de 180 días, antes de la fecha de entrada.
Promotions/HotelPromotions/Promotion/BookingWindow/@min 0..1 Integer Número mínimo de días antes de la fecha de entrada en los que se debe realizar la reserva para que se aplique la promoción. Si no se especifica, no se aplica ningún mínimo.
Promotions/HotelPromotions/Promotion/BookingWindow/@max 0..1 Integer Número máximo de días antes de la fecha de entrada en los que se debe realizar la reserva para que se aplique la promoción. Si no se especifica, no se aplica ningún máximo.
Promotions/HotelPromotions/Promotion/CheckinDates 0..1 CheckinDates Contenedor de uno o varios periodos que determinan cuándo debe realizarse la entrada para que se aplique la promoción.
Promotions/HotelPromotions/Promotion/CheckinDates/DateRange 1..20 DateRange Periodo que indica cuándo debe realizarse la entrada para que se aplique la promoción. Este elemento no es obligatorio si vas a eliminar una o varias promociones.
Promotions/HotelPromotions/Promotion/CheckinDates/DateRange/@start 0..1 Date Fecha de inicio del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o anterior a la indicada en end. Si no se especifica start, el periodo es ilimitado en lo que se refiere a la fecha de inicio.
Promotions/HotelPromotions/Promotion/CheckinDates/DateRange/@end 0..1 Date Fecha de finalización del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o posterior a la indicada en start. Si no se especifica end, el periodo es ilimitado en lo que se refiere a la fecha de finalización.
Promotions/HotelPromotions/Promotion/CheckinDates/DateRange/@days_of_week 0..1 String

Días de la semana permitidos en el periodo. Si no se especifica, se permiten todos los días. Cada carácter de la cadena indica un día. Por ejemplo, "MTWHF" especifica que se permiten días laborables en el periodo.

Los caracteres válidos son:

  • M para el lunes
  • T para el martes
  • W para el miércoles
  • H para el jueves
  • F para el viernes
  • S para el sábado
  • U para el domingo

Cualquier combinación de caracteres es válida.

Promotions/HotelPromotions/Promotion/CheckoutDates 0..1 CheckoutDates Contenedor de uno o varios periodos que determinan cuándo debe realizarse la salida para que se aplique la promoción.
Promotions/HotelPromotions/Promotion/CheckoutDates/DateRange 1..20 DateRange Periodo que indica cuándo debe realizarse la salida para que se aplique la promoción. Este elemento no es obligatorio si vas a eliminar una o varias promociones.
Promotions/HotelPromotions/Promotion/CheckoutDates/DateRange/@start 0..1 Date Fecha de inicio del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o anterior a la indicada en end. Si no se especifica start, el periodo es ilimitado en lo que se refiere a la fecha de inicio.
Promotions/HotelPromotions/Promotion/CheckoutDates/DateRange/@end 0..1 Date Fecha de finalización del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o posterior a la indicada en start. Si no se especifica end, el periodo es ilimitado en lo que se refiere a la fecha de finalización.
Promotions/HotelPromotions/Promotion/CheckoutDates/DateRange/@days_of_week 0..1 String

Días de la semana permitidos en el periodo. Si no se especifica, se permiten todos los días. Cada carácter de la cadena indica un día. Por ejemplo, "MTWHF" especifica que se permiten días laborables en el periodo.

Los caracteres válidos son:

  • M para el lunes
  • T para el martes
  • W para el miércoles
  • H para el jueves
  • F para el viernes
  • S para el sábado
  • U para el domingo

Cualquier combinación de caracteres es válida.

Promotions/HotelPromotions/Promotion/Devices 0..1 Devices Contenedor para mostrar los dispositivos de usuario que cumplen los requisitos de la promoción. Si se especifica, el descuento solo se aplica a los usuarios aptos de los dispositivos incluidos. De lo contrario, se ofrece el descuento a los usuarios de cualquier dispositivo.
Promotions/HotelPromotions/Promotion/Devices/Device 1..3 Device Define un tipo de dispositivo de usuario que cumple los requisitos de la promoción.
Promotions/HotelPromotions/Promotion/Devices/Device/@type 1 Enum Tipo de dispositivo. El valor debe ser desktop, tablet o mobile.
Promotions/HotelPromotions/Promotion/Discount 1 Discount Especifica el descuento que se aplicará a esta promoción.
Promotions/HotelPromotions/Promotion/Discount/@percentage 0..1 Float Nota: Se requiere exactamente uno de los objetos percentage, fixed_amount o fixed_amount_per_night.

Valor decimal comprendido entre 0 y 100 que especifica el porcentaje de descuento. Se aplica a AmountAfterTax (o AmountBeforeTax si no se especifica AmountAfterTax).

Ejemplos:

  • Si AmountAfterTax es 100 y percentage es 20, entonces

    el precio promocional = AmountAfterTax * (1 - porcentaje de descuento)

    80,00 = 100 * (1 - 0,2)

  • Si AmountBeforeTax es 100, percentage es 20 y TaxFeeInfo especifica un impuesto de 10, entonces

    el precio promocional = AmountBeforeTax * (1 - porcentaje de descuento) + impuestos

    90,00 = 100 * (1 - 0,2) + 10

Promotions/HotelPromotions/Promotion/Discount/@fixed_amount 0..1 Float Nota: Se requiere exactamente uno de los objetos percentage, fixed_amount o fixed_amount_per_night.

Importe fijo que se resta a la suma de los precios por noche de AmountAfterTax (o de AmountBeforeTax si AmountAfterTax no se especifica). Se presupone que se proporciona en la misma moneda que el precio por noche. Si es mayor que la suma de los precios por noche, el valor resultante será cero.

Ejemplos:

  • Si tenemos un precio de una estancia de 1 noche en la que los valores son 90 en AmountBeforeTax, 100 en AmountAfterTax y 20 en fixed_amount, entonces

    el precio promocional = AmountAfterTax - descuento fijo

    80,00 = 100 - 20

  • Si tenemos un precio de una estancia de 1 noche en la que los valores son 100 en AmountBeforeTax y 20 en fixed_amount, y el TaxFeeInfo especifica un impuesto del 8 %, entonces

    el precio promocional = (AmountBeforeTax - descuento fijo) * (1 + porcentaje fiscal)

    86,40 = (100 - 20) * 1,08

  • Si tenemos un precio de una estancia de 1 noche en la que los valores son 50 en AmountBeforeTax y 60 en fixed_amount, y el TaxFeeInfo especifica un impuesto del 10 %, entonces

    el precio de promoción = (AmountBeforeTax - descuento fijo) * impuestos

    10,00 = 0 + 10

  • Si tenemos un precio de una estancia de 3 noches en la que los valores son 100, 110 y 120 en AmountAfterTax y 150 en fixed_amount, entonces

    el precio promocional = suma(AmountAfterTax) - (descuento fijo)

    180,00 = (100 + 110 + 120) - 150

Promotions/HotelPromotions/Promotion/Discount/@fixed_amount_per_night 0..1 Float Nota: Se requiere exactamente uno de los objetos percentage, fixed_amount o fixed_amount_per_night.

Descuento fijo que se aplica a cada uno de los precios por noche de AmountAfterTax (o la noche más barata si se especifica applied_nights). Si no se especifica AmountAfterTax, se aplica a AmountBeforeTax. Se presupone que se proporciona en la misma moneda que el precio por noche. Si fixed_amount_per_night es superior al precio por noche, este último se reducirá a cero, ya que el descuento no puede ser negativo.

Ejemplos:

  • Si tenemos un precio de una estancia de 3 noches en la que los valores son 100, 110 y 120 en AmountAfterTax y 10 en fixed_amount_per_night, entonces

    el precio promocional = suma(AmountBeforeTax - importe del descuento fijo)

    300,00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • Si tenemos un precio de una estancia de 3 noches en la que los valores son 10, 50 y 100 en AmountAfterTax y 20 en fixed_amount_per_night, entonces

    el precio promocional = suma(AmountAfterTax - importe del descuento fijo)

    110,00 = (0 + (50 - 20) + (100 - 20))

Promotions/HotelPromotions/Promotion/Discount/@applied_nights 0..1 Integer Nota: Solo debe usarse con percentage o con fixed_amount_per_night.

Número de noches al que se aplica el descuento, empezando por el precio más barato. Debe ser un número entero comprendido entre 1 y 99. Si no se especifica, se aplicará el descuento a todas las noches.

Promotions/HotelPromotions/Promotion/InventoryCount 0..1 InventoryCount Define las restricciones en cuanto al número de habitaciones que deben estar disponibles para que se aplique esta promoción. El descuento solo se aplica a las noches que cumplan esas restricciones. No puede usarse con el descuento fixed_amount. El número de habitaciones disponibles se especifica o con OTA_HotelInvCountNotifRQ (InvCount) o con OTA_HotelAvailNotifRQ (BookingLimit).
Promotions/HotelPromotions/Promotion/InventoryCount/@min 0..1 Integer Número mínimo de habitaciones que deben estar disponibles para que la promoción se aplique al precio por noche. Si no se especifica, no se aplica ningún mínimo.
Promotions/HotelPromotions/Promotion/InventoryCount/@max 0..1 Integer Número máximo de habitaciones que deben estar disponibles para que la promoción se aplique al precio por noche. Si no se especifica, no se aplica ningún máximo.
Promotions/HotelPromotions/Promotion/LengthOfStay 0..1 LengthOfStay Define los límites de la duración de la estancia dentro de los que se puede aplicar esta promoción. La promoción no se aplica si la duración de la estancia está fuera de los límites mínimo o máximo.
Promotions/HotelPromotions/Promotion/LengthOfStay/@min 0..1 Integer Número mínimo de noches de estancia que se permiten para que se aplique la promoción. Si no se especifica, no se aplica ningún mínimo.
Promotions/HotelPromotions/Promotion/LengthOfStay/@max 0..1 Integer Número máximo de noches de estancia que se permiten para que se aplique la promoción. Si no se especifica, no se aplica ningún máximo.
Promotions/HotelPromotions/Promotion/MinimumAmount 0..1 MinimumAmount Especifica la suma mínima de los precios diarios de la habitación (usando el valor AmountBeforeTax o AmountAfterTax, dependiendo de cuál sea mayor) que debe superarse para que se aplique la promoción.
Promotions/HotelPromotions/Promotion/MinimumAmount/@before_discount 1 Integer Valor que debe superarse para que se aplique la promoción.
Promotions/HotelPromotions/Promotion/RatePlans 0..1 RatePlans Contenedor para una lista de planes de precios a los que se aplica la promoción. Si no se especifica <RatePlans>, la promoción se aplica a todos los planes de precios.
Promotions/HotelPromotions/Promotion/RatePlans/RatePlan 1..n RatePlan Especifica un plan de precios. Un plan de precios se define a partir de una combinación de paquetes, precios y disponibilidad, tal como se define en los mensajes Transaction (Property Data), OTA_HotelRateAmountNotifRQ y OTA_HotelAvailNotifRQ, y se identifica por el PackageID.
Promotions/HotelPromotions/Promotion/RatePlans/RatePlan/@id 1 String Identificador único del plan de precios. Este valor se corresponde con el valor de PackageID de <PackageData> en un mensaje Transaction (Property Data) y en el atributo RatePlanCode de <StatusApplicationControl> en los mensajes <OTA_HotelRateAmountNotifRQ> y <OTA_HotelAvailNotifRQ>. Admite un máximo de 50 caracteres.
Promotions/HotelPromotions/Promotion/RoomTypes 0..1 RoomTypes Contenedor para una lista de tipos de habitación a las que se aplica la promoción. La promoción se aplica a cada <RoomType> especificado. Si no se especifica <RoomTypes>, la promoción se aplica a todas las habitaciones.
Promotions/HotelPromotions/Promotion/RoomTypes/RoomType 1..n RoomType Especifica el tipo de habitación, que se define en un elemento <RoomData> de un mensaje Transaction (Property Data), y se hace referencia a él mediante el valor <RoomID>. También se hace referencia al valor de <RoomID> mediante el atributo InvTypeCode de los mensajes OTA_HotelRateAmountNotifRQ.
Promotions/HotelPromotions/Promotion/RoomTypes/RoomType /@id 1 String Identificador único del inventario (tipo de habitación). Este valor se asigna a <RoomID> en un mensaje Transaction (Property Data). Admite un máximo de 50 caracteres.
Promotions/HotelPromotions/Promotion/Stacking 0..1 Stacking Indica cómo se pueden combinar las promociones. Si no se especifica, se asume que el valor de "type" es base_only.
Promotions/HotelPromotions/Promotion/Stacking/@type 1 Enum

En función de esta opción, se pueden aplicar varias promociones a una sola tarifa:

  • any: se puede combinar con cualquier otra promoción.
  • base_only: si se puede usar un objeto base_only por pila, seleccionaremos y aplicaremos la promoción que ofrezca el mejor descuento. Solo puede haber una promoción base_only por pila. Se aplica primero, antes que las demás.
  • second: si se puede usar un objeto second en la pila, seleccionaremos y aplicaremos la promoción que ofrezca el mejor descuento. Solo puede haber una promoción second por pila. Se aplica en segundo lugar, después de base_only (si corresponde) y antes que las promociones any.
  • none: no se puede combinar con otras promociones.

De entre todas las combinaciones permitidas, el conjunto de promociones que ofrezca el mayor descuento es el que se aplicará a la tarifa.

Promotions/HotelPromotions/Promotion/StayDates 0..1 StayDates Contenedor para uno o más periodos que determinan cómo se aplica la promoción (por ejemplo, para ajustar los descuentos de temporada).
Promotions/HotelPromotions/Promotion/StayDates/@application 1 Enum

Describe cómo se debe aplicar la promoción.

Estos son los valores válidos:

  • all: se aplica la promoción a cada noche del itinerario si todas sus fechas se solapan con las fechas de estancia.
  • any: se aplica la promoción a todas las noches del itinerario si alguna de sus fechas se solapa con una fecha del periodo de estancia.
  • overlap: se aplica la promoción solo a las noches del itinerario que se solapan con una fecha del periodo de estancia.

Este atributo se debe especificar siempre.

  • Si <Discount> especifica percentage y application tiene los valores all o any, el descuento se aplica en forma de porcentaje a la estancia completa.
  • Si <Discount> especifica percentage y application tiene el valor overlap, el descuento se aplica en forma de porcentaje a las tarifas por noche de las noches solapadas.
  • No es una combinación válida que <Discount> especifique fixed_amount y application tenga el valor overlap.
Promotions/HotelPromotions/Promotion/StayDates/DateRange 1..99 DateRange Periodo que indica las fechas en las que debe aplicarse la promoción.
Promotions/HotelPromotions/Promotion/StayDates/DateRange/@start 0..1 Date Fecha de inicio del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o anterior a la indicada en end. Si no se especifica start, el periodo es ilimitado en lo que se refiere a la fecha de inicio.
Promotions/HotelPromotions/Promotion/StayDates/DateRange/@end 0..1 Date Fecha de finalización del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o posterior a la indicada en start. Si no se especifica end, el periodo es ilimitado en lo que se refiere a la fecha de finalización.
Promotions/HotelPromotions/Promotion/StayDates/DateRange/@days_of_week 0..1 String

Días de la semana permitidos en el periodo. Si no se especifica, se permiten todos los días. Cada carácter de la cadena indica un día. Por ejemplo, "MTWHF" especifica que se permiten días laborables en el periodo.

Los caracteres válidos son:

  • M para el lunes
  • T para el martes
  • W para el miércoles
  • H para el jueves
  • F para el viernes
  • S para el sábado
  • U para el domingo

Cualquier combinación de caracteres es válida.

Promotions/HotelPromotions/Promotion/UserCountries 0..1 UserCountries Contenedor para mostrar las ubicaciones de usuarios (países) que cumplen los requisitos de la promoción. Si se especifica, el descuento solo se aplica a los usuarios aptos de los países incluidos. De lo contrario, se ofrece el descuento a los usuarios de cualquier país.
Promotions/HotelPromotions/Promotion/UserCountries/Country 1..50 Country Define un país cuyos usuarios cumplen los requisitos de la promoción.
Promotions/HotelPromotions/Promotion/UserCountries/Country/@code 1 String Código de país CLDR (por ejemplo, ES o FR). En algunos países, el CLDR no es el mismo que el código de país ISO de dos letras. Además, no se admiten los códigos de región CLDR.

Ejemplos

Mensaje básico

En el siguiente ejemplo se muestra un mensaje Promotions básico:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <Discount percentage="20" applied_nights="2"/>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <Stacking type="base_only"/>
      <UserCountries>
        <Country code="US"/>
        <Country code="UK"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>

Condición del inventario

En el siguiente ejemplo se muestra cómo crear un descuento si hay un exceso de inventario próximo a la fecha de llegada:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingWindow max="7"/>
      <Discount percentage="10"/>
      <InventoryCount min="3"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

Eliminar una promoción

En el siguiente ejemplo se muestra cómo eliminar una promoción de una propiedad:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1" action="delete"/>
  </HotelPromotions>
</Promotions>

Eliminar todas las promociones

En el siguiente ejemplo se muestra cómo eliminar todas las promociones de una propiedad:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>

Superponer todas las promociones

En el siguiente ejemplo se muestra cómo superponer el elemento <HotelPromotions> de una propiedad con una o varias promociones nuevas. Cuando se incluye action="overlay", todas las promociones almacenadas se eliminan antes de que se almacenen las que se especifican en el mensaje actual:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" action="overlay"/>
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <Discount percentage="10"/>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <Stacking type="base_only"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

Respuestas

Sintaxis

En el mensaje PromotionsResponse se utiliza la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_account_name">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type">issue_description</Issue>
  </Issues>
</PromotionsResponse>

Elementos y atributos

El mensaje PromotionsResponse incluye los siguientes elementos y atributos:
Elemento/@Atributo Repeticiones Tipo Descripción
PromotionsResponse 1 Complex element Elemento raíz que indica si se han detectado problemas en un mensaje de solicitud Promotions recibido o si, por el contrario, se ha procesado correctamente.
PromotionsResponse/@timestamp 1 DateTime Fecha y hora de creación de este mensaje.
PromotionsResponse/@id 1 String Identificador único del mensaje Promotions asociado.
PromotionsResponse/@partner 1 String Cuenta de partner de este mensaje.
PromotionsResponse/Success 0..1 Success Indica que el mensaje Promotions se ha procesado correctamente sin advertencias, errores ni fallos.

En cada mensaje se incluye <Success> o <Issues>.

PromotionsResponse/Issues 0..1 Issues Contenedor para uno o varios problemas que se han detectado al procesar el mensaje Promotions.

En cada mensaje se incluye <Success> o <Issues>.

PromotionsResponse/Issues/Issue 1..n Issue Descripción de una advertencia, error o fallo que se ha detectado al procesar el mensaje Promotions. Para obtener más información sobre estos problemas, consulta los mensajes de error sobre el estado del feed.
PromotionsResponse/Issues/Issue/@code 1 Integer Identificador del problema.
PromotionsResponse/Issues/Issue/@status 1 Enum

Tipo de problema que se ha detectado.

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

Ejemplos

Success

A continuación, se incluye una respuesta a un mensaje Promotions que se ha procesado correctamente:

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

Issues

A continuación, se incluye una respuesta a un mensaje Promotions que no se procesado debido a determinados errores:

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_account_name">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</PromotionsResponse>