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 éligible qui génère le prix le plus bas. Si vous recherchez une API compatible avec les ajustements de tarifs arbitraires pouvant augmenter ou diminuer le prix lorsque les conditions sont remplies, envisagez d'utiliser notre API dédiée aux modifications de tarifs. Notez que si les deux API sont présentes, les modifications de tarifs sont appliquées avant les promotions.
Requêtes
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, 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" 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 de compte dans Hotel Center.
Si vous disposez d'un backend qui fournit des flux pour plusieurs comptes, cette valeur doit correspondre à la valeur de l'attribut |
Promotions / @id | 1 | string | Identifiant unique de ce message de requête. Cette valeur est renvoyée dans le message de réponse. Les caractères autorisés sont 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 si |
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 indiqué dans Hotel Center. |
Promotions / HotelPromotions / @action | 0..1 | enum | Si elle est spécifiée, 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 autorisés sont a-z, A-Z, 0-9, _ (trait de soulignement), - (tiret) et . (point). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Si elle est spécifiée, 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 de début ou date/heure (en fonction du fuseau horaire de la propriété), incluses, de la plage.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date ou DateTime | Date de fin ou date/heure de fin (en fonction du fuseau horaire de la propriété), 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 elle n'est pas spécifiée, 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. Les caractères valides sont les suivants:
N'importe quelle 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 sept 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 aucune valeur n'est spécifiée 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 aucune valeur n'est spécifiée 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 des restrictions sur la valeur maximale à laquelle un tarif peut être défini après l'application des promotions. Les promotions doivent toujours spécifier la valeur Si la pile est configurée, plusieurs promotions associées à l'attribut Exemple : Définir le prix d'un séjour d'une nuit où
Voici l'ordre de calcul:
Le fait que 60 soit un plafond global plus strict n'est pas pertinent, car il n'est valide que pour sa propre promotion, et 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 sur lequel un tarif par nuit peut être défini après l'application de la remise. Si un élément
|
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Définit des restrictions sur la valeur minimale à laquelle un tarif peut être défini après l'application des promotions. Les promotions doivent toujours spécifier la valeur La logique Si la pile est configurée, plusieurs promotions associées à l'attribut Exemple : Définir le prix d'un séjour d'une nuit où
Voici l'ordre de calcul:
Le fait que 90 soit un prix plancher global plus strict n'est pas pertinent, car il n'est valable que pour sa propre promotion, et aucun étage ne peut s'appliquer à 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 (basée sur le 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 (basée sur le 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 elle n'est pas spécifiée, 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. Les caractères valides sont les suivants:
N'importe quelle 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 (basée sur le 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 (basée sur le 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 elle n'est pas spécifiée, 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. Les caractères valides sont les suivants:
N'importe quelle combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Conteneur permettant de lister les appareils des utilisateurs éligibles à la promotion. Si elle est spécifiée, seuls les utilisateurs éligibles sur les appareils listés bénéficient du 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 pour 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 ne devez spécifier qu'une seule propriété Indique la remise à appliquer pour cette promotion. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Une seule des options Valeur décimale comprise entre 0 et 100 indiquant le pourcentage de remise.
Elle est appliquée à Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Une seule des options Montant fixe à soustraire de la somme des tarifs par nuit Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Une seule des options Une remise fixe appliquée à chacun des tarifs par nuit Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Une seule des options Si Si Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Une seule des options Si Si Si Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Il ne doit être utilisé qu'avec Nombre de nuitées auxquelles la remise est appliquée, en commençant par le prix le moins cher. La valeur doit être un entier compris entre 1 et 99. Si aucune valeur n'est spécifiée, la remise est appliquée à toutes les nuits. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Spécifie une remise pour certaines nuits de séjour si une durée minimale de séjour est atteinte. 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 nuitées requises pour l'application de la remise. Chaque remise est appliquée à un segment distinct de nuits. Par exemple, pour un séjour de 10 nuits où |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Nombre de nuits à prix réduit dans chaque segment de nuits. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Remise appliquée aux nuitées avec remise. Si cette valeur est de 50 , une remise de 50% est appliquée à chaque nuit sélectionnée. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Doit être cheapest ou last . Si la valeur est last , les nuits à la fin du segment de nuits font l'objet d'une remise. Si la valeur est cheapest , les nuits les moins chères du segment de nuits font l'objet d'une remise. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Indique si la remise peut être appliquée à plusieurs segments de durée de séjour. Si la valeur est Par exemple, si |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Attribue un classement à cette promotion et active la sélection par classement, où seule la promotion ayant le rang le plus faible 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'entre elles est sélectionnée et appliquée arbitrairement. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Vous ne devez spécifier qu'une seule propriété Spécifie une remise quotidienne pouvant être appliquée à une nuit de séjour. En revanche, Chaque établissement peut avoir un seul groupe de promotions considérées comme "meilleures journées". Cela signifie que pour chaque nuit de séjour, l'unique "meilleure promotion quotidienne" éligible et qui offre la remise la plus intéressante pour la nuit en question est sélectionnée et peut être appliquée.
|
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Une seule des options 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 | Une seule des options Montant fixe à soustraire d'un seul tarif par nuit de Exemples :
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Une seule des options Si Exemples :
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Définit les restrictions concernant le nombre de chambres qui doivent être disponibles pour que cette promotion soit appliquée. La remise n'est appliquée qu'aux nuits qui respectent la contrainte. Non autorisé avec la remise fixed_amount . Notez que le nombre de chambres disponibles est spécifié avec OTA_HotelInvCountNotifRC (InvCount ) ou OTA_HotelAvailNotifRC (BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Nombre minimal de chambres devant être disponibles pour que la promotion soit appliquée au tarif par nuit. Si aucune valeur n'est spécifiée, il n'y a pas de minimum. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Nombre maximal de chambres devant être disponibles pour que la promotion soit appliquée au tarif par nuit. Si aucune valeur n'est spécifiée, il n'y a pas de maximum. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Définit la durée des limites de séjour pendant lesquelles cette promotion peut être appliquée. La promotion n'est pas appliquée lorsque la durée du séjour dépasse les 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 pour une règle d'offres pour les membres qui déclenche un traitement spécifique dans 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 |
Identifiant de la règle d'offres associée à un programme d'adhésion. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Spécifie la somme minimale des prix de la chambre à la journée (selon la valeur la plus élevée : AmountBeforeTax ou AmountAfterTax ) à dépasser pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | Valeur devant être dépassée pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Définit les restrictions sur le nombre de personnes pour lesquelles cette promotion est appliquée. La promotion n'est pas appliquée lorsque le nombre de personnes dépasse les 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 une combinaison de formules, de tarifs et de disponibilité, telle que définie dans les messages Transaction (Données sur un établissement), OTA_HotelRateAmountNotifRC et OTA_HotelAvailNotifRC, et telle qu'identifiée par le PackageID. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | Identifiant unique du plan tarifaire. Cette valeur correspond à la valeur PackageID dans <PackageData> dans un message Transaction (Données sur un établissement), et dans l'attribut RatePlanCode de <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_HotelRateAmountNotifRC. |
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 supposé être base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | En fonction de ce paramètre, plusieurs promotions peuvent être appliquées à un même tarif:
Parmi les combinaisons autorisées, l'ensemble de promotions offrant 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 comment la promotion doit être appliquée. Les valeurs possibles sont les suivantes :
Cet attribut doit toujours être spécifié.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Plage de dates indiquant les dates d'application de la promotion. Le format YearlessDate est également accepté.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | Date de début (basée sur le 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 / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | Date de fin (basée sur le 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 / StayDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si elle n'est pas spécifiée, 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. Les caractères valides sont les suivants:
N'importe quelle combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Conteneur permettant de répertorier les emplacements (pays) des utilisateurs éligibles à la promotion. Si elle est spécifiée, seuls les utilisateurs éligibles dans les pays listés bénéficient du 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 le Si le |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Définit un pays dans lequel les utilisateurs peuvent voir la promotion. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Un code pays CLDR, tel que DE ou FR . Notez que, pour certains pays, le code pays CLDR est différent du code pays ISO à deux lettres. Par ailleurs, les codes de région CLDR ne sont pas acceptés. |
Exemples
Message de base
L'exemple suivant illustre 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>
Condition d'inventaire
L'exemple suivant montre comment créer une remise si un inventaire excédentaire est proche 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>
Supprimer une promotion
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>
Supprimer toutes les 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>
Superposer toutes les promotions
L'exemple suivant montre comment superposer la propriété <HotelPromotions>
pour un établissement avec une ou plusieurs nouvelles promotions. Si la valeur est 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>
3 différents types de superposition
Dans l'exemple suivant, trois promotions différentes seraient appliquées (base
, second
, any
). Notez que la promotion none
ne serait pas appliquée, car les autres promotions proposent une meilleure remise. 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>
Aucun type de empilement
Dans l'exemple suivant, la promotion none
est utilisée, car la combinaison d'autres promotions permet d'obtenir une remise d'un faible montant. Si le prix d'origine était de 100 $, le prix réduit serait 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>
Limites de durée de la période de réservation
L'exemple suivant illustre 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 période de réservation nécessite de réserver au plus tard à 18h la veille de l'arrivée et à 12h00 ou après 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>
Dates de réservation Limites Date/Heure
L'exemple suivant illustre un cas d'utilisation de l'élément BookingDates
avec les attributs start
et end
en tant que types DateTime. Cette restriction de date de réservation nécessite que la réservation soit effectuée entre 6h30 le 01/07/2020 et 18h45 le 02/07/2020.
<?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>
Plages de dates sans année
L'exemple suivant illustre un cas où l'élément CheckInDates
contient des DateRanges
comportant des champs start
et end
sans années. Dans cet exemple, la promotion s'applique aux dates d'arrivée comprises entre le 29/12 et le 02/12, quelle que soit l'année. Les plages de dates sans année qui dépassent la limite de la nouvelle année ne sont pas valides. Par conséquent, la plage de dates est exprimée sous la forme de 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>
Remise FreeNights
Dans l'exemple suivant, une remise de 50% est appliquée sur deux nuits pour chacune des quatre nuits réservées pendant la plage de dates de réservation spécifiée. Pour un séjour de dix nuits, une remise de 50 % est appliquée à quatre nuits au total.
<?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% d'une nuit pour toutes les trois nuits passées pendant les plages de dates de séjour spécifiées. Seules les nuits de séjour qui se chevauchent sont prises en compte pour que la remise puisse être appliquée. Pour le séjour suivant avec arrivée le 01/01/2022 et départ le 07/01/2022, les nuits de séjour qualifiées et les remises sont appliquées comme suit.
- 01/01/2022 (séjour)
- 02/01/2022 (séjour)
- 2022-01-03
- 04/01/2022 (prix réduit)
- 05/01/2022 (séjour)
- 06/01/2022 (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>
Sélection classée
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 est moins bien classé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">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
Meilleuresrécompensesquotidiennes
L'exemple suivant réduit un séjour de deux nuits en appliquant une BestDailyDiscount
empilée avec une 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 entre le 30 avril 2023 et le 2 mai 2023. Dans le calcul, la combinaison des meilleures remises quotidiennes qui offre la remise la plus élevée est prise en compte en premier.
Pour la première nuit, la promotion "générale" est le seul montant éligible avec une remise fixe de 20.
Pour la deuxième nuitée, la promotion "peut" offre une remise plus importante que la remise "générale". Ainsi, lorsque "peut" est sélectionné, le montant de la remise fixe est de 50.
Ensuite, pour le séjour, la promotion "fiesta" passe à 5 par nuit, soit 10 au total. Elle peut être combinée avec la combinaison des meilleures remises quotidiennes, car le type d'empilement de "fiesta" est défini sur any
. S'il était défini sur base
, seule la combinaison des meilleures remises quotidiennes ou de la remise "fiesta" est appliquée. Pour en savoir plus, consultez la description de Stacking
.
"Globalement, le prix du séjour bénéficie d'une remise de 20 + 50 + 10 = 80 pour un montant fixe.
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
comporte 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 bien été traité sans avertissement, erreur ni é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
Réussite
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>
Problèmes
Vous trouverez ci-dessous 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>