Présentation
Cette API vous permet de spécifier les remises possibles. Parmi les promotions spécifiées, Google applique la promotion ou l'ensemble de promotions éligibles qui offrent le prix le plus bas. Si vous recherchez une API compatible avec des ajustements de prix arbitraires pouvant augmenter ou diminuer le prix lorsque les conditions sont remplies, envisagez notre API Rate Modifications. Notez que si les deux API sont présentes, les modifications de tarifs sont appliquées avant les promotions.
Demandes
Syntaxe
Le message Promotions
utilise la syntaxe suivante:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key "
id="message_ID "
timestamp="timestamp ">
<HotelPromotions hotel_id="HotelID " action="[overlay]">
<Promotion id="PromotionID " action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset" />
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset" />
</BookingDates>
<BookingWindow min="integer_or_duration " max="integer_or_duration "/>
<Ceiling amount_per_night="float "/>
<Floor amount_per_night="float "/>
<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, percentage_of_base, fixed_amount,
fixed_amount_per_night, fixed_price, or fixed_price_per_night;
applied_nights is only used with percentage, fixed_amount_per_night,
and fixed_price_per_night. -->
<Discount percentage="float " percentage_of_base="float "
fixed_amount="float " fixed_amount_per_night="float "
fixed_price="float " fixed_price_per_night="float "
applied_nights="integer_1_to_99 " rank="integer_1_to_99 ">
<!-- FreeNights may not be used in conjunction with attributes on Discount -->
<FreeNights stay_nights="integer " discount_nights="integer "
discount_percentage="float " night_selection="[cheapest|last]"
repeats="boolean "/>
</Discount>
<!-- Exactly one of Discount or BestDailyDiscount must be specified.
Specify only one of percentage, fixed_amount, or fixed_price. -->
<BestDailyDiscount percentage="float " fixed_amount="float " fixed_price="float "/>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<InventoryCount min="integer " max="integer "/>
<LengthOfStay min="integer " max="integer "/>
<MembershipRateRule id="RateRuleID "/>
<MinimumAmount before_discount="integer "/>
<Occupancy min="integer " max="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|none|second]"/>
<StayDates application="[all|any|overlap]">
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset" />
</StayDates>
<UserCountries type="[include|exclude]">
<Country code="country_code "/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
Éléments et attributs
Le message Promotions contient les éléments et les attributs suivants:
Élément / @Attribut | Occurrences | Type | Description |
---|---|---|---|
Promotions | 1 | Complex element | Élément racine d'un message Promotions. |
Promotions / @partner | 1 | string | Compte partenaire pour ce message. Cette valeur de chaîne correspond à la valeur "Partner key" (Clé partenaire) indiquée sur la page
Paramètres du compte dans Hotel Center.
Si vous avez un backend qui fournit des flux pour plusieurs comptes, cette valeur doit correspondre à la valeur de l'attribut |
Promotions / @id | 1 | string | Identifiant unique pour ce message de demande. Cette valeur est renvoyée dans le message de réponse. Les caractères suivants sont autorisés : a-z, A-Z, 0-9, _ (trait de soulignement) et - (tiret). |
Promotions / @timestamp | 1 | DateTime | Date et heure de création de ce message. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Promotions pour un établissement. Chaque promotion s'applique à un seul établissement. Sauf utilisation de |
Promotions / HotelPromotions / @hotel_id | 1 | string | Identifiant unique de l'établissement. Cette valeur doit correspondre à l'identifiant de l'hôtel spécifié à l'aide de
<id> dans l'élément <listing> du flux Hotel List Feed. L'identifiant de l'hôtel est également répertorié dans Hotel Center. |
Promotions / HotelPromotions / @action | 0..1 | enum | Si cet attribut est spécifié, la valeur doit être S'il n'est pas spécifié, chaque promotion spécifiée dans le message actuel est:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Promotion unique pour un établissement. Notez que si Si vous devez utiliser plus de 99 promotions, contactez votre responsable de compte technique (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | Identifiant unique de la promotion. Le nombre maximal de caractères autorisés est de 40. Les caractères suivants sont autorisés : a-z, A-Z, 0-9, _ (trait de soulignement), - (tiret) et . (point). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Si cet attribut est spécifié, la valeur doit être Si |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Conteneur pour une ou plusieurs plages qui définissent le moment auquel la réservation doit être effectuée pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Plage indiquant le moment auquel la réservation doit être effectuée pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date ou DateTime | Date ou heure de début (en fonction du fuseau horaire de l'établissement), incluse, de la plage.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date ou DateTime | Date de fin ou heure de fin (en fonction du fuseau horaire de l'établissement), incluse, de la plage.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne spécifie un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates. Caractères valides:
Toute combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Spécifie la période pendant laquelle la réservation doit être effectuée par rapport à la date d'arrivée (en fonction du fuseau horaire de l'établissement). Par exemple, la période de réservation peut être définie sur au moins 7 jours, mais pas plus de 180 jours avant l'arrivée. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | Durée minimale avant l'arrivée où la réservation doit être effectuée pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié ou si sa valeur est 0 , il n'y a pas de minimum.
Les types de valeurs reconnus sont les suivants :
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Nombre maximal de jours avant l'arrivée où la réservation doit être effectuée pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié ou si sa valeur est 0 , il n'y a pas de maximum.
Les types de valeurs reconnus sont les suivants :
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Définit les restrictions liées à la valeur maximale qu'un tarif peut atteindre après l'application des promotions. Les promotions doivent toujours spécifier un Si l'empilement est configuré, plusieurs promotions avec Exemple : Fixer le tarif d'un séjour d'une nuit où
Voici l'ordre de calcul:
Le fait que 60 % soit un plafond global plus strict est sans importance, car il n'est valable que pour sa propre promotion. Il ne peut pas y avoir de plafond unique couvrant l'ensemble de la pile de promotions. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
Montant maximal qu'un tarif par nuit peut atteindre après l'application de la remise. Si un élément
|
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Définit les restrictions concernant la valeur minimale qu'un tarif peut avoir après l'application des promotions. Les promotions doivent toujours spécifier un La logique Si l'empilement est configuré, plusieurs promotions avec Exemple : Fixer le tarif d'un séjour d'une nuit où
Voici l'ordre de calcul:
Le fait que 90 % soit un plancher global plus strict est sans importance, car il n'est valide que pour sa propre promotion. Il ne peut pas y avoir de plancher unique couvrant l'ensemble de la pile de promotions. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
Montant minimal auquel un tarif par nuit peut être défini après l'application de la remise. Si un élément
|
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Conteneur pour une ou plusieurs plages de dates qui définissent le moment auquel l'arrivée doit avoir lieu pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Plage de dates indiquant le moment auquel l'arrivée doit avoir lieu pour que la promotion soit appliquée. Cet élément n'est pas obligatoire si vous supprimez une ou plusieurs promotions. Le format YearlessDate est également accepté.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | Date de début (en fonction du fuseau horaire de l'établissement), incluse, de la plage de dates. Cette date doit être antérieure ou identique à la date end . Si start n'est pas spécifié, la plage de dates est en fait illimitée en ce qui concerne la date de début. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | Date de fin (en fonction du fuseau horaire de l'établissement), incluse, de la plage de dates. Cette date doit être identique ou postérieure à la date start . Si end n'est pas spécifié, la plage de dates est en fait illimitée en ce qui concerne la date de fin. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne spécifie un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates. Caractères valides:
Toute combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Conteneur pour une ou plusieurs plages de dates qui définissent le moment auquel le départ doit avoir lieu pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Plage de dates indiquant le moment auquel le départ doit avoir lieu pour que la promotion soit appliquée. Cet élément n'est pas obligatoire si vous supprimez une ou plusieurs promotions. Le format YearlessDate est également accepté.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | Date de début (en fonction du fuseau horaire de l'établissement), incluse, de la plage de dates. Cette date doit être antérieure ou identique à la date end . Si start n'est pas spécifié, la plage de dates est en fait illimitée en ce qui concerne la date de début. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | Date de fin (en fonction du fuseau horaire de l'établissement), incluse, de la plage de dates. Cette date doit être identique ou postérieure à la date start . Si end n'est pas spécifié, la plage de dates est en fait illimitée en ce qui concerne la date de fin. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne spécifie un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates. Caractères valides:
Toute combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Conteneur permettant de répertorier les appareils des utilisateurs éligibles à la promotion. Si cet élément est spécifié, seuls les utilisateurs éligibles sur les appareils répertoriés bénéficient d'un tarif réduit. S'il n'est pas spécifié, le tarif réduit est proposé aux utilisateurs éligibles sur n'importe quel appareil. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Définit un type d'appareil d'utilisateur éligible à la promotion. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | Type d'appareil. La valeur doit être desktop , tablet ou mobile . |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Vous devez spécifier un seul Indique la remise à appliquer pour cette promotion. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Vous devez spécifier exactement un seul des éléments suivants : Valeur décimale comprise entre 0 et 100 indiquant le pourcentage de remise.
Elle est appliquée à Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | Vous devez spécifier exactement un seul des éléments suivants : Valeur décimale comprise entre 0 et 100 indiquant le pourcentage de remise de base. Comme Contrairement à Exemple :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Vous devez spécifier exactement un seul des éléments suivants : Montant fixe à soustraire de la somme des tarifs par nuit de Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Vous devez spécifier exactement un seul des éléments suivants : Remise fixe appliquée à chacun des tarifs par nuit Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Vous devez spécifier exactement un seul des éléments suivants : Si des tarifs par nuit Si Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Vous devez spécifier exactement un seul des éléments suivants : Si des tarifs par nuit Si Si Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Cet attribut ne doit être utilisé qu'avec Nombre de nuits auxquelles la remise est appliquée, en commençant par le tarif le plus bas. Il doit s'agir d'un entier compris entre 1 et 99. Si cet attribut n'est pas spécifié, la remise est appliquée à toutes les nuits. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Spécifie une remise sur certaines nuits d'un séjour lorsque la durée de séjour minimale est respectée. Les attributs de l'élément parent Discount ne sont pas autorisés si cet élément est utilisé. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Nombre de nuits requises pour que la remise soit appliquée. Chaque remise s'applique à un segment distinct de nuits de séjour. Par exemple, pour un séjour de 10 nuits où |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Nombre de nuits à tarif réduit dans chaque segment de nuits de séjour. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Remise appliquée aux nuits avec remise. Si cette valeur est 50 , chaque nuit sélectionnée bénéficie d'une remise de 50 %. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Doit être défini sur cheapest ou last . Si la valeur est last , les nuits à la fin du segment de séjour sont soumises à une remise. Si la valeur est cheapest , les nuits les moins chères du segment de nuits de séjour sont proposées avec une remise. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Indique si la remise peut être appliquée à plusieurs segments de nuits de séjour. Si Par exemple, si |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Attribue un classement à cette promotion et l'inclut dans la sélection par classement, où seule la promotion ayant le classement le plus bas est sélectionnée pour être appliquée. Les valeurs doivent être comprises entre 1 et 99 inclus. Si plusieurs promotions partagent le même rang, l'une d'elles est sélectionnée et appliquée de manière arbitraire. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Vous devez spécifier un seul Spécifie une remise quotidienne pouvant être appliquée à une nuit de séjour. Contrairement à Chaque établissement peut avoir un seul groupe de promotions considérées comme "meilleures chaque jour". Cela signifie que pour chaque nuit de séjour, la promotion "meilleure quotidienne" éligible et offrant la remise la plus importante pour cette nuit est sélectionnée et peut être appliquée.
|
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Vous devez indiquer exactement une seule des valeurs Valeur décimale comprise entre 0 et 100 indiquant le pourcentage de remise.
Elle est appliquée à Exemples :
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Vous devez indiquer exactement une seule des valeurs Montant fixe à soustraire d'un tarif par nuit Exemples :
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Vous devez indiquer exactement une seule des valeurs Si des tarifs par nuit Exemples :
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Définit les restrictions liées au nombre de chambres qui doivent être disponibles pour que cette promotion soit appliquée. La remise n'est appliquée que pour les nuits qui respectent la contrainte. Non autorisé avec la remise fixed_amount . Notez que le nombre de chambres disponibles est spécifié avec OTA_HotelInvCountNotifRQ (InvCount ) ou OTA_HotelAvailNotifRQ (BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Nombre minimal de chambres qui doivent être disponibles pour que la promotion soit appliquée au tarif par nuit. Si cet attribut n'est pas spécifié, il n'y a pas de minimum. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Nombre maximal de chambres qui doivent être disponibles pour que la promotion soit appliquée au tarif par nuit. Si cet attribut n'est pas spécifié, il n'y a pas de maximum. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Définit la plage de durée de séjour sur laquelle cette promotion peut être appliquée. La promotion n'est pas appliquée lorsque la durée du séjour est en dehors des limites minimale et maximale. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | Nombre minimal de nuits autorisées dans le séjour pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de minimum. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | Nombre maximal de nuits autorisées dans le séjour pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de maximum. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
Conteneur d'une règle de tarif pour les membres qui déclenche un traitement spécifique de l'interface utilisateur pour la remise associée. Cet élément ne doit pas être spécifié, sauf si |
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
ID de la règle d'offre associée à un programme d'adhésion. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Spécifie la somme minimale des prix des chambres à la journée (à l'aide de la valeur la plus élevée de AmountBeforeTax ou AmountAfterTax ) à dépasser pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | Valeur à dépasser pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Définit les restrictions liées aux occupations pour lesquelles cette promotion est appliquée. La promotion n'est pas appliquée lorsque le nombre de personnes est en dehors des limites minimale et maximale. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | Le nombre de personnes spécifié par l'utilisateur doit être au moins égal à cette valeur pour que la remise soit appliquée. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | Le nombre de personnes spécifié par l'utilisateur ne doit pas dépasser cette valeur pour que la remise soit appliquée. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Conteneur pour la liste des plans tarifaires auxquels la promotion s'applique.
Si <RatePlans> n'est pas spécifié, la promotion s'applique à tous les plans tarifaires. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Spécifie un plan tarifaire. Un plan tarifaire est défini par la combinaison d'une formule, de tarifs et d'une disponibilité, telle que définie dans les messages Transaction (Données sur un établissement), OTA_HotelRateAmountNotifRQ et OTA_HotelAvailNotifRQ, et telle qu'identifiée par la valeur PackageID. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | Identifiant unique du plan tarifaire. Cette valeur correspond à la valeur PackageID dans l'élément <PackageData> d'un message Transaction (Données sur un établissement), ainsi que dans l'attribut RatePlanCode de l'élément <StatusApplicationControl> dans les messages <OTA_HotelRateAmountNotifRQ> et <OTA_HotelAvailNotifRQ> .
Le nombre maximal de caractères autorisés est de 50. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Conteneur pour la liste des types de chambres auxquels la promotion s'applique.
La promotion est appliquée à chaque <RoomType> spécifié. Si <RoomTypes> n'est pas spécifié, la promotion s'applique à toutes les chambres. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Spécifie un type de chambre. Un type de chambre est défini dans un élément <RoomData> d'un message Transaction (Données sur un établissement) et est référencé à l'aide de sa valeur <RoomID> . (Sa valeur <RoomID> est également référencée par l'attribut InvTypeCode dans les messages OTA_HotelRateAmountNotifRQ.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | Identifiant unique de l'inventaire (type de chambre). Cette valeur correspond à <RoomID> dans un message Transaction (Données sur un établissement).
Le nombre maximal de caractères autorisés est de 50. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Indique comment combiner les promotions. S'il n'est pas spécifié, le "type" est considéré comme base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Selon ce paramètre, plusieurs promotions peuvent être appliquées à un même tarif:
Parmi les combinaisons autorisées, l'ensemble de promotions qui offre la plus grande remise est appliqué au tarif. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Conteneur pour une ou plusieurs plages de dates qui déterminent le mode d'application de la promotion, par exemple pour prendre en compte les remises saisonnières. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Décrit le mode d'application de la promotion. Les valeurs valides sont les suivantes :
Cet attribut doit toujours être spécifié.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Plage de dates indiquant les dates auxquelles la promotion doit être appliquée. Le format YearlessDate est également accepté.
Si vous souhaitez définir une plage |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | Date de début (en fonction du fuseau horaire de l'établissement), incluse, de la plage de dates. Cette date doit être antérieure ou identique à la date end . Si start n'est pas spécifié, la plage de dates est en fait illimitée en ce qui concerne la date de début.
Vous devez spécifier la valeur |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | Date de fin (en fonction du fuseau horaire de l'établissement), incluse, de la plage de dates. Cette date doit être identique ou postérieure à la date start . Si end n'est pas spécifié, la plage de dates est en fait illimitée à partir de la date start .
Vous devez spécifier la valeur |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne spécifie un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates. Caractères valides:
Toute combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Conteneur permettant de répertorier les positions géographiques (pays) des utilisateurs éligibles à la promotion. Si cet élément est spécifié, seuls les utilisateurs éligibles dans les pays répertoriés bénéficient d'un tarif réduit. S'il n'est pas spécifié, le tarif réduit est proposé aux utilisateurs éligibles de n'importe quel pays. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | Type de spécification UserCountries.
Les valeurs valides sont Si le Si la valeur de Si le |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Définit un pays dans lequel les utilisateurs sont éligibles à la promotion. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Code pays CLDR, tel que DE ou FR . Notez que, pour certains pays, ce code est différent du code pays ISO à deux lettres. De plus, les codes de région CLDR ne sont pas acceptés. |
Exemples
Vous pouvez indiquer jusqu'à 500 promotions par établissement. Consultez l'exemple "Supprimer une promotion" pour supprimer des promotions d'un établissement.
L'exemple suivant représente un message Promotions
de base:
<?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"/>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant montre comment créer une remise si un excédent d'inventaire approche de la date d'arrivée:
<?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>
L'exemple suivant montre comment supprimer une promotion pour un établissement:
<?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>
L'exemple suivant montre comment supprimer toutes les promotions pour un établissement:
<?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>
L'exemple suivant montre comment superposer <HotelPromotions>
pour un établissement avec une ou plusieurs nouvelles promotions. Lorsque action="overlay"
, toutes les promotions stockées sont supprimées avant le stockage des promotions spécifiées dans le message actuel:
<?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"/>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant montre un cas où trois promotions différentes seraient appliquées (base
, second
et any
). Notez que la promotion none
ne sera pas appliquée, car les autres promotions offrent une remise plus intéressante. Si le prix d'origine était de 100 $, le prix réduit serait de 72,90 $.
<?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">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="second"/>
</Promotion>
<Promotion id="3">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="4">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant montre un cas où la promotion none
est utilisée, car la combinaison d'autres promotions offre une remise plus faible. Si le prix d'origine était de 100 $, le prix réduit sera de 75 $.
<?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">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="3">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant montre un cas où l'élément BookingWindow
est utilisé avec ses limites de début et de fin définies en tant que type de durée ISO 8601. Cette restriction de période de réservation nécessite une réservation avant 18h00 le jour précédant l'arrivée et à partir de 12h00 le deuxième jour précédant l'arrivée.
<?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 min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant montre un cas où l'élément BookingDates
est utilisé avec les attributs start
et end
en tant que types DateTime. Cette restriction de date de réservation exige que la réservation soit effectuée entre le 01/07/2020 à 06:30 et le 02/07/2020 à 18:45.
<?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-01T06:30:00" end="2020-07-02T18:45:00"/>
</BookingDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant montre un cas où l'élément CheckInDates
contient des DateRanges
qui comportent des champs start
et end
sans années. Dans cet exemple, la promotion s'applique aux dates d'arrivée comprises entre le 29 décembre et le 2 janvier, quelle que soit l'année. Les plages de dates sans année qui traversent la limite du Nouvel An ne sont pas valides. Par conséquent, la DateRange est exprimée en deux plages de dates adjacentes.
<?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">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant propose une remise de 50% sur deux nuits pour chaque séjour de quatre nuits pour la période de réservation spécifiée. Pour un séjour de dix nuits, un total de quatre nuits sera proposé à 50 % de remise.
<?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="2022-01-01" end="2022-05-31"/>
</BookingDates>
<Discount>
<FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant propose une remise de 50% sur une nuit pour chaque séjour de trois nuits pour les périodes de séjour spécifiées. Seules les nuits de séjour qui se chevauchent sont prises en compte pour bénéficier de la remise. Pour l'itinéraire suivant avec une arrivée le 01/01/2022 et un départ le 07/01/2022, les nuits d'hébergement éligibles et les remises sont appliquées comme suit.
- 2022-01-01 (séjour)
- 2022-01-02 (séjour)
- 2022-01-03
- 04/01/2022 (avec remise)
- 2022-01-05 (séjour)
- 2022-01-06 (séjour)
<?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">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant propose deux remises, l'une de 20% et l'autre de 15 %. Lors de l'évaluation, seule la remise de 15% est appliquée, car elle a un rang inférieur.
<?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">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
L'exemple suivant propose une remise sur un séjour de deux nuits en appliquant BestDailyDiscount
empilé avec Discount
.
<?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="HotelID" action="overlay">
<Promotion id="general">
<BestDailyDiscount fixed_amount="20"/>
</Promotion>
<Promotion id="may">
<BestDailyDiscount fixed_amount="50"/>
<StayDates application="overlap">
<DateRange start="2023-05-01" end="2023-05-31"/>
</StayDates>
</Promotion>
<Promotion id="fiesta">
<Discount fixed_amount_per_night="5"/>
<Stacking type="any"/>
</Promotion>
</HotelPromotions>
</Promotions>
Prenons l'exemple d'un séjour de deux nuits du 30 avril 2023 au 2 mai 2023. Pour le calcul, la combinaison des meilleures remises quotidiennes qui génère la remise la plus importante est déterminée en premier.
Pour la première nuit, la promotion "générale" est la seule à être éligible avec une remise fixe de 20 €.
Pour la deuxième nuit, la promotion "mai" offre une remise plus importante que la remise "générale". Ainsi, lorsque "peut-être" est sélectionné, le montant de la remise fixe est de 50.
Pour le séjour, la promotion "Fiesta" offre une remise de 5 € par nuit, soit 10 € au total. Il peut être cumulé avec la combinaison des meilleures remises quotidiennes, car le type de cumul de "fiesta" est défini sur any
. S'il était défini sur base
, seule la combinaison des meilleures remises quotidiennes ou la remise "fiesta" est appliquée. Pour en savoir plus, consultez la description de Stacking
.
Au total, le prix du séjour bénéficie d'une remise de 20 + 50 + 10 = 80 €.
Réponses
Syntaxe
Le message PromotionsResponse
utilise la syntaxe suivante:
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp "
id="message_ID "
partner="partner_key ">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code "
status="issue_type ">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
Éléments et attributs
Le message PromotionsResponse
inclut les éléments et les attributs suivants:
Élément / @Attribut | Occurrences | Type | Description |
---|---|---|---|
PromotionsResponse | 1 | Complex element | Élément racine indiquant le succès ou les problèmes liés à un message de requête Promotions reçu. |
PromotionsResponse / @timestamp | 1 | DateTime | Date et heure de création de ce message. |
PromotionsResponse / @id | 1 | string | Identifiant unique du message Promotions associé. |
PromotionsResponse / @partner | 1 | string | Compte partenaire pour ce message. |
PromotionsResponse / Success | 0..1 | Success | Indique que le message Promotions a été traité avec succès, sans avertissement, erreur ou échec.
Chaque message contient soit |
PromotionsResponse / Issues | 0..1 | Issues | Conteneur pour un ou plusieurs problèmes rencontrés lors du traitement du message Promotions.
Chaque message contient soit |
PromotionsResponse / Issues / Issue | 1..n | Issue | Description d'un avertissement, d'une erreur ou d'un échec survenu lors du traitement du message Promotions. Pour en savoir plus sur ces problèmes, consultez Messages d'erreur concernant l'état du flux. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | Identifiant du problème. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | Type de problème rencontré. Les valeurs valides sont |
Exemples
Voici une réponse à un message Promotions correctement traité.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Voici une réponse à un message Promotions non traité en raison d'erreurs :
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</PromotionsResponse>