Modifications des tarifs

Présentation

Cette API vous permet de définir des méthodes pour appliquer dynamiquement des actions à un tarif chaque fois que des conditions sont remplies, par exemple pour ajuster le prix ou activer la possibilité de remboursement. Contrairement à l'API Promotions, qui ne peut appliquer que les promotions éligibles avec les remises les plus importantes, cette API applique toutes les actions lorsque certaines conditions sont remplies, y compris les ajustements de prix qui peuvent finalement augmenter le prix final.

Demandes

Syntaxe

Le message RateModifications utilise la syntaxe suivante:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="partner_key"
                      id="message_ID"
                      timestamp="timestamp">
  <HotelRateModifications hotel_id="HotelID" action="[overlay]">
    <ItineraryRateModification id="ModificationID" 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>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <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>
      <StayDates application="[all|any]">
        <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>
      <ModificationActions>
        <PriceAdjustment multiplier="float"/>
        <RateRule id="RateRuleID"/>
        <Refundable available="[false|true]"
                       refundable_until_days="number_of_days"
                       refundable_until_time="time"/>
        <Availability status="[unavailable]"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Éléments et attributs

Le message RateModifications inclut les éléments et les attributs suivants:

Élément / @Attribut Occurrences Type Description
RateModifications 1 Complex element Élément racine d'un message de modification de prix.
RateModifications / @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.

Remarque:Si vous avez un backend qui fournit des flux pour plusieurs comptes, cette valeur doit correspondre à la valeur de l'attribut ID spécifiée dans l'élément <RequestorID> de vos messages <OTA_HotelRateAmountNotifRQ> et <OTA_HotelAvailNotifRQ> pour le même compte.

RateModifications / @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).
RateModifications / @timestamp 1 DateTime Date et heure de création de ce message.
RateModifications / HotelRateModifications 0..n HotelRateModifications

Modifications de tarifs pour un établissement. Chaque modification de tarif s'applique à un seul établissement.

Remarque:Si plusieurs modifications de tarifs peuvent être appliquées au même tarif, toutes les modifications sont appliquées. Aucun ordre spécifique n'est garanti.

RateModifications / HotelRateModifications / @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.
RateModifications / HotelRateModifications / @action 0..1 enum

Si action n'est pas spécifié, les modifications de cet élément sont ajoutées ou mises à jour pour cet hôtel. Si action="overlay" est spécifié, toutes les modifications précédemment définies pour cet hôtel sont d'abord supprimées. Les modifications spécifiées ici sont ensuite écrites. Si action="overlay" est utilisé et qu'aucune modification n'est spécifiée dans cet élément, toutes les modifications apportées à cet hôtel sont supprimées.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Modification unique du tarif d'un établissement.

Remarque:Les modifications de tarifs sont difficiles à déboguer. Nous vous recommandons de les utiliser avec parcimonie. Contactez votre responsable de compte technique (TAM) pour les cas d'utilisation nécessitant plus de 200 modifications de tarifs.

RateModifications / HotelRateModifications / ItineraryRateModification / @id 1 string Identifiant unique de la modification de tarif. 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).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

S'il n'est pas spécifié et qu'aucune modification de tarif ayant le même id n'est stockée, cette modification de tarif est stockée. Sinon, s'il n'est pas spécifié et qu'une modification de tarif ayant le même id est stockée, la modification de tarif existante est mise à jour.

Si cet attribut est spécifié, la valeur doit être "delete". Si "delete" est spécifié, la modification du tarif stockée avec le même id est supprimée. En cas d'utilisation de "delete", n'incluez aucun élément enfant dans <ItineraryRateModification>. De plus, "delete" n'est pas autorisé avec <HotelRateModifications action="overlay"/>.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Conteneur pour une ou plusieurs plages de dates qui définissent le moment auquel la réservation doit être effectuée pour que la modification de tarif soit appliquée.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Plage de dates indiquant le moment auquel la réservation doit être effectuée pour que la modification du tarif soit appliquée.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date 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.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date 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.
RateModifications / HotelRateModifications / ItineraryRateModification / 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:

  • M pour lundi
  • T pour mardi
  • W pour mercredi
  • H pour jeudi
  • F pour vendredi
  • S pour samedi
  • U pour dimanche

Toute combinaison de caractères est valide.

RateModifications / HotelRateModifications / ItineraryRateModification / 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.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer Nombre minimal de jours avant l'arrivée où la réservation doit être effectuée pour que la modification de tarif soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de minimum.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer Nombre maximal de jours avant l'arrivée où la réservation doit être effectuée pour que la modification de tarif soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de maximum.
RateModifications / HotelRateModifications / ItineraryRateModification / 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 modification de tarif soit appliquée.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Plage de dates indiquant le moment auquel l'arrivée doit avoir lieu pour que la modification de tarif soit appliquée. Cet élément n'est pas obligatoire si vous supprimez une ou plusieurs modifications de tarifs.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start 0..1 Date 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.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date 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.
RateModifications / HotelRateModifications / ItineraryRateModification / 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:

  • M pour lundi
  • T pour mardi
  • W pour mercredi
  • H pour jeudi
  • F pour vendredi
  • S pour samedi
  • U pour dimanche

Toute combinaison de caractères est valide.

RateModifications / HotelRateModifications / ItineraryRateModification / 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 modification du tarif soit appliquée.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Plage de dates indiquant le moment auquel le départ doit avoir lieu pour que la modification de tarif soit appliquée. Cet élément n'est pas obligatoire si vous supprimez une ou plusieurs modifications de tarifs.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start 0..1 Date 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.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date 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.
RateModifications / HotelRateModifications / ItineraryRateModification / 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:

  • M pour lundi
  • T pour mardi
  • W pour mercredi
  • H pour jeudi
  • F pour vendredi
  • S pour samedi
  • U pour dimanche

Toute combinaison de caractères est valide.

RateModifications / HotelRateModifications / ItineraryRateModification / Devices 0..1 Devices Conteneur permettant de répertorier les appareils des utilisateurs éligibles à la modification tarifaire. Si cet élément est spécifié, la modification du tarif ne s'applique que si l'utilisateur correspond à l'un des appareils listés. Si ce n'est pas le cas, cela ne limite pas l'application de la modification de tarif.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Définit un type d'appareil d'utilisateur éligible à la modification de tarif.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type 1 enum Type d'appareil. La valeur doit être desktop, tablet ou mobile.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions 1 ModificationActions

Action(s) appliquée(s) au tarif si toutes les conditions spécifiées sont remplies.

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment Modifie le tarif en multipliant AmountBeforeTax et AmountAfterTax par le multiplicateur spécifié.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier 1 float AmountBeforeTax et AmountAfterTax sont multipliés par cette valeur.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule 0..1 RateRule Modifie le tarif en lui appliquant l'ID de la règle d'offres spécifié.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id 1 string Cet identifiant fait correspondre un tarif à une définition figurant dans votre fichier de définition des règles d'offres. Remarque :
  • Ce champ est limité à 40 caractères.
  • Chaque tarif ne peut être associé qu'à une seule règle tarifaire.
  • Si plusieurs modifications appliquent un ID de règle d'offres, l'ID de règle d'offres le plus petit d'un point de vue lexicographique est attribué à l'offre.
  • Si cet identifiant ne correspond pas à une règle d'offre dans votre fichier de définition des règles d'offres, il est considéré comme non éligible.
Consultez cet article pour en savoir plus sur les différents traitements de l'interface utilisateur pour les tarifs préférentiels.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Remplace la valeur de remboursement du tarif par la valeur spécifiée.

Lorsque vous définissez les attributs, tenez compte des points suivants:

  • Cette action de modification réécrit entièrement le paramètre de remboursement d'un tarif éligible, et pas seulement les champs renseignés.
  • Si available ou refundable_until_days n'est pas défini, le tarif ne s'affiche pas comme remboursable.
  • Si available a la valeur 0 ou false, les autres attributs sont ignorés. Le tarif ne s'affiche pas comme remboursable même si l'un des autres attributs est défini (ou bien les deux).
  • Le paramètre refundable_until_time est recommandé. S'il n'est pas défini, l'heure la plus proche (minuit) est utilisée.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available 1 boolean (Obligatoire) Définissez cet attribut sur 1 ou true pour indiquer si le tarif peut être totalement remboursé. Sinon, définissez-le sur 0 ou false.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer (Obligatoire si available a la valeur true) Indique le nombre de jours avant la date d'arrivée où un remboursement total peut être demandé. La valeur de refundable_until_days doit être un entier compris entre 0 et 330 inclus.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time 0..1 Time (Recommandé si available a la valeur true) Indique l'heure limite, en heure locale de l'hôtel, jusqu'à laquelle un remboursement total peut être accordé. Cet attribut peut être associé à l'attribut refundable_until_days pour indiquer, par exemple, que "les remboursements sont possibles jusqu'à 16h deux jours avant la date d'arrivée". Si refundable_until_time n'est pas défini, la valeur par défaut est minuit.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability Remplace la disponibilité du tarif par la valeur spécifiée. Vous ne pouvez définir le tarif que sur unavailable.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum Si la valeur est status="unavailable", le tarif est traité comme s'il était indisponible, que son prix soit valide ou non.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay Définit la plage de durée de séjour sur laquelle cette modification de tarif peut être appliquée. La modification du tarif n'est pas appliquée lorsque la durée du séjour est en dehors des limites minimale et maximale.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer Nombre minimal de nuits autorisées dans le séjour pour que la modification du tarif soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de minimum.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer Nombre maximal de nuits autorisées dans le séjour pour que la modification du tarif soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de maximum.
RateModifications / HotelRateModifications / ItineraryRateModification / 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 modification de tarif soit appliquée.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer Valeur à dépasser pour que la modification du tarif soit appliquée.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Conteneur pour la liste des plans tarifaires auxquels la modification de tarif s'applique. Si <RatePlans> n'est pas spécifié, la modification du tarif s'applique à tous les plans tarifaires.
RateModifications / HotelRateModifications / ItineraryRateModification / 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.
RateModifications / HotelRateModifications / ItineraryRateModification / 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.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes Conteneur pour la liste des types de chambres auxquels la modification de tarif s'applique. La modification du tarif est appliquée à chaque <RoomType> spécifié. Si <RoomTypes> n'est pas spécifié, la modification du tarif s'applique à toutes les chambres.
RateModifications / HotelRateModifications / ItineraryRateModification / 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.)
RateModifications / HotelRateModifications / ItineraryRateModification / 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.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates 0..1 StayDates Conteneur pour une ou plusieurs plages de dates qui déterminent le mode d'application de la modification de prix, par exemple pour prendre en compte les prix saisonniers.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

Décrit comment la modification tarifaire doit être appliquée.

Les valeurs valides sont les suivantes :

  • all: applique la modification du tarif à chaque nuit du séjour si toutes les dates du séjour se chevauchent exactement.
  • any: applique la modification du tarif à toutes les nuits du séjour si une date de celui-ci chevauche une date de la plage de dates du séjour.

Cet attribut doit toujours être spécifié.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange Plage de dates indiquant les dates auxquelles la modification du tarif doit être appliquée.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date 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.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date 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.
RateModifications / HotelRateModifications / ItineraryRateModification / 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:

  • M pour lundi
  • T pour mardi
  • W pour mercredi
  • H pour jeudi
  • F pour vendredi
  • S pour samedi
  • U pour dimanche

Toute combinaison de caractères est valide.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries Si cet élément est spécifié, la modification du tarif ne s'applique que si l'utilisateur se trouve dans l'un des pays indiqués. Si ce paramètre n'est pas spécifié, la modification de tarif est appliquée quel que soit l'emplacement de l'utilisateur.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type 0..1 enum Type de spécification UserCountries.

Les valeurs valides sont include et exclude.

Si la valeur type de UserCountries est définie sur include, la modification du tarif s'applique aux utilisateurs des pays listés.

Si la valeur de type UserCountries est exclude, la modification de tarif s'applique aux utilisateurs situés en dehors des pays listés.

Si l'type UserCountries n'est pas défini, il est traité comme include et la modification du tarif s'applique aux utilisateurs des pays listés.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country Indique le pays d'utilisateur autorisé pour la modification du tarif.
RateModifications / HotelRateModifications / ItineraryRateModification / 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

Message de base

L'exemple suivant montre un message RateModifications de base:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-07-01" end="2023-07-31" days_of_week="MTWHF"/>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2023-10-01" end="2023-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2023-10-08" end="2023-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Supprimer une modification de tarif

L'exemple suivant montre comment supprimer une modification de tarif pour un établissement:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1" action="delete"/>
  </HotelRateModifications>
</RateModifications>

Supprimer toutes les modifications de tarifs

L'exemple suivant montre comment supprimer toutes les modifications de tarifs pour un établissement:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
</RateModifications>


Superposer toutes les modifications de tarifs

L'exemple suivant montre comment superposer <HotelRateModifications> pour un établissement avec une ou plusieurs nouvelles modifications de tarifs. Lorsque action="overlay", toutes les modifications de tarifs stockées sont supprimées avant le stockage des modifications de tarifs spécifiées dans le message actuel:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Plusieurs actions de modification

L'exemple suivant montre comment effectuer plusieurs actions de modification à la fois:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-01-01" end="2023-02-28"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier=".95"/>
        <Refundable available="true"
                    refundable_until_days="1"
                    refundable_until_time="12:00:00"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Désactiver un forfait pour les pays des utilisateurs

L'exemple suivant montre comment limiter un forfait à des utilisateurs japonais (JP) uniquement:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <RatePlans>
         <RatePlan id="jp_only"/>
      </RatePlans>
      <UserCountries type="exclude">
        <Country code="JP"/>
      </UserCountries>
      <ModificationActions>
        <Availability status="unavailable"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Réponses

Syntaxe

Le message RateModificationsResponse utilise la syntaxe suivante:

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type"><var>issue_description</var></Issue>
  </Issues>
</RateModificationsResponse>

Éléments et attributs

Le message RateModificationsResponse inclut les éléments et les attributs suivants:

Élément / @Attribut Occurrences Type Description
RateModifications 1 Complex element Élément racine indiquant le succès ou les problèmes liés à un message de requête RateModifications reçu.
RateModificationsResponse / @timestamp 1 DateTime Date et heure de création de ce message.
RateModificationsResponse / @id 1 string Identifiant unique du message RateModifications associé.
RateModificationsResponse / @partner 1 string Compte partenaire pour ce message.
RateModificationsResponse / Success 0..1 Success Indique que le message RateModifications a été traité avec succès, sans avertissement, erreur ni échec.

Chaque message contient soit <Success>, soit <Issues>.

RateModificationsResponse / Issues 0..1 Issues Conteneur pour un ou plusieurs problèmes rencontrés lors du traitement du message RateModifications.

Chaque message contient soit <Success>, soit <Issues>.

RateModificationsResponse / Issues / Issue 1..n Issue Description d'un avertissement, d'une erreur ou d'un échec survenu lors du traitement du message RateModifications. Pour en savoir plus sur ces problèmes, consultez Messages d'erreur concernant l'état du flux.
RateModificationsResponse / Issues / Issue / @code 1 integer Identifiant du problème.
RateModificationsResponse / Issues / Issue / @status 1 enum

Type de problème rencontré.

Les valeurs valides sont warning, error et failure.

Exemples

Opération réussie

Vous trouverez ci-dessous une réponse à un message RateModifications traité avec succès.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</RateModificationsResponse>

Problèmes

La réponse ci-dessous est une réponse à un message RateModifications non traité en raison d'erreurs.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</RateModificationsResponse>