RateModifications

Panoramica

Questa API ti consente di definire modi per applicare dinamicamente azioni a una tariffa ogni volta che vengono soddisfatte le condizioni, ad esempio modificando il prezzo o attivando la rimborsabilità. A differenza dell'API Promotions, che può applicare solo le promozioni idonee con gli sconti più elevati, questa API applica qualsiasi azione quando vengono soddisfatte determinate condizioni, inclusi gli aggiustamenti di prezzo che potrebbero aumentare il prezzo finale.

Richieste

Sintassi

La sintassi del messaggio RateModifications è la seguente:

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

Elementi e attributi

Il messaggio RateModifications contiene i seguenti elementi e attributi:

Elemento / @attributo Occorrenze Tipo Descrizione
RateModifications 1 Complex element L'elemento principale di un messaggio relativo alle modifiche alle tariffe.
RateModifications / @partner 1 string L'account partner di questo messaggio. Il valore della stringa è il valore "Chiave del partner" presente nella pagina Impostazioni account in Hotel Center.

Nota: se hai un backend che fornisce feed per più account, questo valore deve corrispondere al valore dell'attributo ID specificato nell'elemento <RequestorID> dei messaggi <OTA_HotelRateAmountNotifRQ> e <OTA_HotelAvailNotifRQ> per lo stesso account.

RateModifications / @id 1 string Un identificatore univoco per questo messaggio di richiesta. Questo valore viene restituito nel messaggio di risposta. I caratteri consentiti sono a-z, A-Z, 0-9, _ (trattino basso) e - (trattino).
RateModifications / @timestamp 1 DateTime La data e l'ora di creazione di questo messaggio.
RateModifications / HotelRateModifications 0..n HotelRateModifications

Modifiche tariffarie per una proprietà. Ogni modifica della tariffa viene applicata a una singola proprietà.

Nota: se è possibile applicare più modifiche alla tariffa alla stessa tariffa, vengono applicate tutte le modifiche. Non è garantito un ordine specifico.

RateModifications / HotelRateModifications / @hotel_id 1 string L'identificatore univoco della proprietà. Questo valore deve corrispondere all'ID hotel specificato utilizzando <id> nell'elemento <listing> nel feed elenco hotel. L'ID hotel è indicato anche in Hotel Center.
RateModifications / HotelRateModifications / @action 0..1 enum

Se action non è specificato, le modifiche all'interno di questo elemento vengono aggiunte o aggiornate per questo hotel. Se action="overlay" è specificato, tutte le modifiche definite in precedenza per questo hotel vengono prima eliminate. Vengono quindi scritte le modifiche specificate qui. Se viene utilizzato action="overlay" e non vengono specificate modifiche all'interno di questo elemento, tutte le modifiche per questo hotel vengono eliminate.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Una singola modifica tariffaria per una proprietà.

Nota: le modifiche alla tariffa sono difficili da eseguire il debug e ti consigliamo di utilizzarle con parsimonia. Contatta il tuo Technical Account Manager (TAM) per i casi d'uso che richiedono più di 200 modifiche delle tariffe.

RateModifications / HotelRateModifications / ItineraryRateModification / @id 1 string Un identificatore univoco per la modifica della tariffa. Il numero massimo di caratteri consentiti è 40. I caratteri consentiti sono a-z, A-Z, 0-9, _ (trattino basso), - (trattino) e . (punto).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

Se il valore non è specificato e se non viene archiviata una modifica della tariffa con lo stesso id, allora questa modifica della tariffa viene archiviata. In caso contrario, se il valore non è specificato e se viene archiviata una modifica della tariffa con lo stesso id, allora la modifica della tariffa esistente viene aggiornata.

Se specificato, il valore deve essere "delete". Se viene specificato "delete", la modifica della tariffa archiviata con lo stesso id viene eliminata. Quando utilizzi "delete", non includere nessun elemento secondario in <ItineraryRateModification>. Inoltre, "delete" non è consentito insieme a <HotelRateModifications action="overlay"/>.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Un contenitore di uno o più intervalli di date che definiscono il periodo in cui deve essere effettuata la prenotazione perché venga applicata la modifica della tariffa.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Un intervallo di date che specifica il periodo in cui deve essere effettuata la prenotazione affinché venga applicata la modifica tariffaria.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date La data di inizio (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere precedente o uguale alla data di end. Se start non è specificato, l'intervallo di date risulta a tutti gli effetti illimitato in termini di data di inizio.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla data di start. Se end non è specificato, l'intervallo di date risulta a tutti gli effetti illimitato in termini di data di fine.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week 0..1 string

I giorni della settimana consentiti nell'intervallo di date. Se il valore non viene specificato, saranno consentiti tutti i giorni nell'intervallo di date. Ogni carattere nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica che nell'intervallo di date sono consentiti i giorni feriali.

I caratteri validi sono:

  • M per lunedì
  • T per martedì
  • W per mercoledì
  • H per giovedì
  • F per venerdì
  • S per sabato
  • U per domenica

Sono valide tutte le combinazioni di caratteri.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow 0..1 BookingWindow Specifica il periodo di tempo in cui deve essere effettuata la prenotazione rispetto alla data di check-in (in base al fuso orario della proprietà). Ad esempio, è possibile impostare una finestra di prenotazione di almeno 7 giorni, ma non oltre 180 giorni, prima del check-in.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer Il numero minimo di giorni prima del check-in in cui deve essere effettuata la prenotazione affinché venga applicata la modifica della tariffa. Se non specificato, non è previsto un limite minimo.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer Il numero massimo di giorni prima del check-in in cui deve essere effettuata la prenotazione affinché venga applicata la modifica della tariffa. Se non specificato, non è previsto un limite massimo.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates Un contenitore per uno o più intervalli di date che definiscono il periodo in cui deve essere effettuato il check-in perché venga applicata la modifica della tariffa.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Un intervallo di date che specifica il periodo in cui deve essere effettuato il check-in perché venga applicata la modifica tariffaria. Questo elemento non è richiesto se stai eliminando una o più modifiche della tariffa.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start 0..1 Date La data di inizio (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere precedente o uguale alla data di end. Se start non è specificato, l'intervallo di date risulta a tutti gli effetti illimitato in termini di data di inizio.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla data di start. Se end non è specificato, l'intervallo di date risulta a tutti gli effetti illimitato in termini di data di fine.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week 0..1 string

I giorni della settimana consentiti nell'intervallo di date. Se il valore non viene specificato, saranno consentiti tutti i giorni nell'intervallo di date. Ogni carattere nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica che nell'intervallo di date sono consentiti i giorni feriali.

I caratteri validi sono:

  • M per lunedì
  • T per martedì
  • W per mercoledì
  • H per giovedì
  • F per venerdì
  • S per sabato
  • U per domenica

Sono valide tutte le combinazioni di caratteri.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates Un contenitore di uno o più intervalli di date che definiscono il periodo in cui deve essere effettuato il check-out perché venga applicata la modifica della tariffa.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Un intervallo di date che specifica il periodo in cui deve essere effettuato il check-out perché venga applicata la modifica tariffaria. Questo elemento non è richiesto se stai eliminando una o più modifiche della tariffa.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start 0..1 Date La data di inizio (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere precedente o uguale alla data di end. Se start non è specificato, l'intervallo di date risulta a tutti gli effetti illimitato in termini di data di inizio.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla data di start. Se end non è specificato, l'intervallo di date risulta a tutti gli effetti illimitato in termini di data di fine.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week 0..1 string

I giorni della settimana consentiti nell'intervallo di date. Se il valore non viene specificato, saranno consentiti tutti i giorni nell'intervallo di date. Ogni carattere nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica che nell'intervallo di date sono consentiti i giorni feriali.

I caratteri validi sono:

  • M per lunedì
  • T per martedì
  • W per mercoledì
  • H per giovedì
  • F per venerdì
  • S per sabato
  • U per domenica

Sono valide tutte le combinazioni di caratteri.

RateModifications / HotelRateModifications / ItineraryRateModification / Devices 0..1 Devices Contenitore dell'elenco di dispositivi utente idonei alla modifica della tariffa. Se specificato, la modifica della tariffa viene applicata solo se l'utente corrisponde a uno dei dispositivi elencati. Se non specificato, questo non limita l'applicazione della modifica della tariffa.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Definisce un tipo di dispositivo utente idoneo alla modifica tariffaria.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type 1 enum Un tipo di dispositivo. Il valore deve essere desktop, tablet o mobile.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions 1 ModificationActions

Azione o azioni applicate alla tariffa se tutte le condizioni specificate sono soddisfatte.

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment Modifica la tariffa moltiplicando sia AmountBeforeTax che AmountAfterTax per il moltiplicatore specificato
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier 1 float Sia AmountBeforeTax che AmountAfterTax vengono moltiplicati per questo valore.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule 0..1 RateRule Modifica la tariffa applicando l'ID regola tariffaria specificato.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id 1 string Questo ID associa una tariffa a una definizione nel file di definizione delle regole tariffarie. Nota:
  • Il limite di caratteri per questo campo è 40.
  • Ogni tariffa può essere associata a una sola regola tariffaria.
  • Se sono presenti più modifiche che applicano un ID regola tariffaria, all'ID tariffa viene assegnato l'ID regola tariffaria più piccolo in ordine lessicografico.
  • Se questo ID non corrisponde a una regola tariffaria nel file di definizione delle regole tariffarie, viene considerato non idoneo.
Consulta questo articolo per informazioni sulle diverse opzioni di interfaccia utente per le tariffe private.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Sovrascrive la rimborsabilità della tariffa con il valore specificato.

Quando imposti gli attributi, tieni presente quanto segue:

  • Questa azione di modifica sovrascrive completamente l'impostazione Rimborsabile di una tariffa idonea, non solo i campi compilati.
  • Se available o refundable_until_days non sono impostati, la tariffa non viene mostrata come rimborsabile.
  • Se available è 0 o false, gli altri attributi vengono ignorati. La tariffa non viene mostrata come rimborsabile anche se sono impostati uno o entrambi gli altri attributi.
  • È consigliabile impostare refundable_until_time; se non impostato, viene utilizzato il primo orario (mezzanotte).
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available 1 boolean (Obbligatorio) Deve essere impostato su 1 o true per indicare se la tariffa prevede il rimborso totale; in caso contrario, deve essere impostato su 0 o false.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer (Obbligatorio se available è true) Specifica il numero di giorni prima del check-in in cui è possibile richiedere un rimborso totale. Il valore di refundable_until_days deve essere un numero intero compreso tra 0 e 330 inclusi.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time 0..1 Time (Consigliato se available è true) Specifica l'ora precisa del giorno, in base al fuso orario dell'hotel, entro cui la richiesta di rimborso totale viene accettata. Puoi associare questo valore a refundable_until_days per specificare, ad esempio, che "i rimborsi sono disponibili fino a due giorni prima del check-in entro le ore 16:00". Se refundable_until_time non è impostato, il valore predefinito è mezzanotte.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability Sovrascrive la disponibilità della tariffa con il valore specificato. Supportiamo solo l'impostazione della tariffa su unavailable.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum Se status="unavailable", la tariffa viene considerata come se non fosse disponibile, indipendentemente dal fatto che esista un prezzo valido.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay Definisce i limiti di durata del soggiorno entro i quali è applicabile questa modifica tariffaria. La modifica tariffaria non viene applicata quando la durata del soggiorno non è compresa tra il limite minimo e massimo.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer Il numero minimo di notti consentito per il soggiorno affinché venga applicata la modifica tariffaria. Se non specificato, non è previsto un limite minimo.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer Il numero massimo di notti consentito per il soggiorno affinché venga applicata la modifica tariffaria. Se non specificato, non è previsto un limite massimo.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount 0..1 MinimumAmount Specifica la somma minima delle tariffe giornaliere della camera (utilizzando il valore più grande tra AmountBeforeTax e AmountAfterTax) che deve essere superata affinché la modifica tariffaria venga applicata.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer Il valore che deve essere superato affinché la modifica tariffaria venga applicata.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Contenitore di un elenco dei piani tariffari a cui si applica la modifica tariffaria. Se <RatePlans> non è specificato, la modifica tariffaria si applica a tutti i piani tariffari.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan Specifica un piano tariffario. Il piano tariffario viene definito da una combinazione di pacchetti, tariffe e disponibilità, come definito nei messaggi Transaction (Property Data), OTA_HotelRateAmountNotifRQ e OTA_HotelAvailNotifRQ e come identificato da PackageID.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string L'identificatore univoco del piano tariffario. Questo valore è mappato al valore PackageID in <PackageData> all'interno di un messaggio Transaction (Property Data) e nell'attributo RatePlanCode in <StatusApplicationControl> nei messaggi <OTA_HotelRateAmountNotifRQ> e <OTA_HotelAvailNotifRQ>. Il numero massimo di caratteri consentiti è 50.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes Contenitore di un elenco dei tipi di camera a cui si applica la modifica tariffaria. La modifica tariffaria viene applicata a ogni <RoomType> specificato. Se <RoomTypes> non è specificato, la modifica della tariffa si applica a tutte le camere.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType Specifica un tipo di camera. Il tipo di camera viene definito in un elemento <RoomData> all'interno di un messaggio Transaction (Property Data) e vi viene fatto riferimento tramite il relativo valore <RoomID>. (al valore <RoomID> viene fatto riferimento anche tramite l'attributo InvTypeCode nei messaggi OTA_HotelRateAmountNotifRQ).
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id 1 string L'identificatore univoco dell'inventario (tipo di camera). Questo valore è mappato a <RoomID> in un messaggio Transaction (Property Data). Il numero massimo di caratteri consentiti è 50.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates 0..1 StayDates Un contenitore per uno o più intervalli di date che determinano come viene applicata la modifica della tariffa, ad esempio per rispecchiare i prezzi stagionali.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

Descrive in che modo deve essere applicata la modifica tariffaria.

I valori validi sono:

  • all: applica la modifica tariffaria a ogni notte nell'itinerario se tutte le date nell'itinerario si sovrappongono alle date del soggiorno.
  • any: applica la modifica tariffaria a tutte le notti nell'itinerario se una qualsiasi data nell'itinerario si sovrappone a una data nell'intervallo di date del soggiorno.

Questo attributo deve essere sempre specificato.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange Un intervallo di date che specifica le date in cui deve essere applicata la modifica tariffaria.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date La data di inizio (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere precedente o uguale alla data di end. Se start non è specificato, l'intervallo di date risulta a tutti gli effetti illimitato in termini di data di inizio.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla data di start. Se end non è specificato, l'intervallo di date risulta a tutti gli effetti illimitato in termini di data di fine.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week 0..1 string

I giorni della settimana consentiti nell'intervallo di date. Se il valore non viene specificato, saranno consentiti tutti i giorni nell'intervallo di date. Ogni carattere nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica che nell'intervallo di date sono consentiti i giorni feriali.

I caratteri validi sono:

  • M per lunedì
  • T per martedì
  • W per mercoledì
  • H per giovedì
  • F per venerdì
  • S per sabato
  • U per domenica

Sono valide tutte le combinazioni di caratteri.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries Se specificato, la modifica della tariffa viene applicata solo se l'utente si trova in uno dei paesi specificati. Se non specificato, la modifica della tariffa viene applicata indipendentemente dalla posizione dell'utente.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type 0..1 enum Il tipo di specifica UserCountries.

I valori validi sono include e exclude.

Se UserCountries type è impostato su include, la modifica della tariffa si applica agli utenti dei paesi elencati.

Se UserCountries type è exclude, la modifica della tariffa si applica agli utenti al di fuori dei paesi elencati.

Se UserCountries type non è impostato, viene considerato come include e la modifica della tariffa si applica agli utenti dei paesi elencati.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country Specifica un paese utente consentito per la modifica tariffaria.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code 1 string Un codice paese CLDR, come DE o FR. Tieni presente che per alcuni paesi il codice paese CLDR non corrisponde a quello ISO di due lettere. Inoltre, non sono supportati i codici regione CLDR.

Esempi

Messaggio di base

L'esempio seguente mostra un messaggio RateModifications di 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>


Eliminare una modifica della tariffa

L'esempio seguente mostra come eliminare una modifica della tariffa per una proprietà:

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

Elimina tutte le modifiche alla tariffa

L'esempio seguente mostra come eliminare tutte le modifiche alle tariffe per una proprietà:

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


Sostituisci tutte le modifiche alle tariffe

L'esempio seguente mostra come sostituire <HotelRateModifications> per una proprietà con una o più nuove modifiche alle tariffe. Quando action="overlay", tutte le modifiche alle tariffe archiviate vengono eliminate prima di archiviare le modifiche alle tariffe specificate nel messaggio corrente:

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

Più azioni di modifica

Il seguente esempio mostra come eseguire più azioni di modifica contemporaneamente:

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


Disattivare un piano tariffario per i paesi degli utenti

Il seguente esempio mostra come limitare un piano tariffario solo agli utenti giapponesi (JP):

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


Risposte

Sintassi

La sintassi del messaggio RateModificationsResponse è la seguente:

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

Elementi e attributi

Il messaggio RateModificationsResponse contiene i seguenti elementi e attributi:

Elemento / @attributo Occorrenze Tipo Descrizione
RateModifications 1 Complex element L'elemento principale che indica se l'esito è positivo o negativo per un messaggio di richiesta RateModifications ricevuto.
RateModificationsResponse / @timestamp 1 DateTime La data e l'ora di creazione di questo messaggio.
RateModificationsResponse / @id 1 string L'identificatore univoco del messaggio RateModifications associato.
RateModificationsResponse / @partner 1 string L'account partner di questo messaggio.
RateModificationsResponse / Success 0..1 Success Indica che il messaggio RateModifications è stato elaborato correttamente senza avvisi, errori o problemi.

In ogni messaggio è presente <Success> o <Issues>.

RateModificationsResponse / Issues 0..1 Issues Un contenitore per uno o più problemi riscontrati durante l'elaborazione del messaggio RateModifications.

In ogni messaggio è presente <Success> o <Issues>.

RateModificationsResponse / Issues / Issue 1..n Issue La descrizione di un avviso, un errore o un problema riscontrato durante l'elaborazione del messaggio RateModifications. Per informazioni dettagliate su questi problemi, consulta la sezione Messaggi di errore relativi allo stato dei feed.
RateModificationsResponse / Issues / Issue / @code 1 integer L'identificatore del problema.
RateModificationsResponse / Issues / Issue / @status 1 enum

Il tipo di problema riscontrato.

I valori validi sono warning, error e failure.

Esempi

Operazione riuscita

Di seguito è riportata una risposta a un messaggio RateModifications elaborato correttamente.

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

Problemi

Di seguito è riportata una risposta a un messaggio RateModifications non elaborato a causa di errori.

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