Questa sezione fornisce un riferimento per i messaggi Google basati su XML di tipo Hint Request, Hint Response e Query.
<Hint> (messaggio Hint Response)
L'elemento principale di un messaggio Hint Response. I messaggi Hint Response specificano le combinazioni hotel/itinerario di cui rideterminare il prezzo. Sono la tua risposta a un messaggio Hint Request di Google.
Un messaggio Hint Response deve specificare solo gli hotel i cui prezzi sono cambiati dall'ultima volta in cui Google ha ricevuto un messaggio Hint Response valido dai tuoi server.
I messaggi Hint Response utilizzano uno dei seguenti metodi per specificare gli hotel e gli itinerari per i quali Google deve rideterminare i prezzi:
Itinerari esatti: una combinazione di data di check-in e durata del soggiorno.
Intervalli di date di check-in: specifica un intervallo di date di check-in, che inizia con la prima data di check-in e termina con l'ultima data di check-in.
Soggiorni con intervallo di date (o itinerari con intervallo di date)
Ognuno di questi metodi richiede una sintassi diversa per il messaggio Hint Response.
Per ulteriori informazioni, consulta la sezione Messaggi Hint Response.
Sintassi
L'elemento <Hint> utilizza una sintassi diversa a seconda del tipo di messaggio Hint
Response:
Itinerari esatti
Di seguito è riportata la sintassi per gli itinerari esatti in un messaggio Hint Response:
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>hotel_ID</Property>
...
<Stay>
<CheckInDate>checkin_date</CheckInDate>
<LengthOfStay>number_of_nights</LengthOfStay>
</Stay>
</Item>
...
</Hint>
Intervalli di check-in
Di seguito è riportata la sintassi per gli intervalli di check-in in un messaggio Hint Response:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<Property>hotel_ID</Property>
[...]
<!-- Required -->
<FirstDate>first_checkin_date</FirstDate>
<!-- Required -->
<LastDate>last_checkin_date</LastDate>
</Item>
...
</Hint>
Soggiorni con intervallo di date
Di seguito è riportata la sintassi per i soggiorni con intervallo di date in un messaggio Hint Response:
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<Property>1458700</Property>
<Property>5418701</Property>
<StaysIncludingRange>
<!-- Required -->
<FirstDate>2025-04-28</FirstDate>
<!-- Optional -->
<LastDate>2025-04-29</LastDate>
</StaysIncludingRange>
</Item>
...
</Hint>
Attributi
L'elemento <Hint> contiene un attributo facoltativo: id. Se
fornito, viene incluso come attributo hintId nei messaggi <Query>
inviati in base a questo <Hint>.
Elementi secondari
L'elemento <Hint> prevede i seguenti elementi secondari:
| Elemento secondario | Obbligatorio? | Tipo | Tipo di Hint Response | Descrizione |
|---|---|---|---|---|
| <CheckInDate> | Required | Date | Itinerari esatti | La data di check-in per l'itinerario. |
| <FirstDate> | Required | Date | Intervalli di check-in e itinerari con intervallo di date | La prima data dell'intervallo di date per un messaggio Hint Response relativo a un intervallo di check-in o a un soggiorno con intervallo di date. Le date indicate sono incluse. |
| <Item> | Required | Object | Tutti | Un contenitore per la combinazione hotel/itinerario da aggiornare. |
| <LastDate> | Required* | Date | Intervalli di check-in e itinerari con intervallo di date | L'ultima data dell'intervallo di date per un messaggio Hint Response relativo a un intervallo di check-in o a un soggiorno con intervallo di date. Le date indicate sono incluse. * Questo elemento è facoltativo per i soggiorni con intervallo di date. |
| <LengthOfStay> | Required | integer | Itinerari esatti | Il numero di notti per l'itinerario, espresso sotto forma di numero intero positivo. |
| <Property> | Required | string | Tutti | L'ID di un hotel, corrispondente all'ID nell'elenco di hotel. Il numero
di elementi
|
| <Stay> | Required | Object | Itinerari esatti | Un contenitore per gli elementi <CheckinDate> e
<LengthOfStay> in un messaggio Hint Response relativo a un
itinerario esatto. Ogni <Item> può contenere un solo
<Stay>. |
| <StaysIncludingRange> | Required | Object | Itinerari con intervallo di date | Un contenitore per gli elementi <FirstDate> e
<LastDate> in un messaggio Hint Response relativo a un
soggiorno con intervallo di date. |
Esempi
Itinerari esatti
L'esempio seguente definisce più itinerari per una singola proprietà in un messaggio Hint Response:
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>3</LengthOfStay>
</Stay>
</Item>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>4</LengthOfStay>
</Stay>
</Item>
</Hint>
Intervalli di check-in
L'esempio seguente specifica due hotel i cui prezzi sono stati modificati e devono essere recuperati di nuovo. Google individua tutti gli itinerari tra il 3 e il 6 luglio per le proprietà 12345 e 67890:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Property>67890</Property>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</Item>
</Hint>
Soggiorni con intervallo di date
L'esempio seguente mostra due diversi utilizzi dei soggiorni con intervallo di date, uno per un intervallo di notti e l'altro per una singola notte:
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<!-- Google fetches prices for all itineraries (first and last date are set) -->
<Item>
<Property>12345</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</StaysIncludingRange>
</Item>
<!-- Google fetches prices for a single night (first date only) -->
<Item>
<Property>67890</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
</StaysIncludingRange>
</Item>
</Hint>
Per ognuno di questi esempi, Google risponde con un elemento <Query> a cui dovrai
rispondere con un elemento <Transaction> che include gli aggiornamenti dei prezzi
per le combinazioni hotel/itinerario specificate.
<HintRequest>
L'elemento principale di un messaggio Hint Request. Google invia un messaggio Hint Request al tuo server e richiede una risposta che specifica gli hotel e gli itinerari con prezzi modificati dall'ultima volta in cui Google ha ricevuto un messaggio Hint Response valido dal tuo server.
In caso di modifiche ai prezzi, Google invia un elemento <Query> che
recupera i dati aggiornati sui prezzi per gli hotel e gli itinerari indicati.
Per saperne di più, consulta la sezione Messaggi Hint Request.
Sintassi
L'elemento <HintRequest> utilizza la seguente sintassi:
Sintassi
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
Attributi
L'elemento <HintRequest> non ha attributi.
Elementi secondari
L'elemento <HintRequest> prevede i seguenti elementi secondari:
| Elemento secondario | Tipo | Descrizione |
|---|---|---|
| <LastFetchTime> | DateTime | La data e ora in cui Google ha ricevuto correttamente l'ultimo messaggio Hint Response
in risposta a un messaggio Hint Request.
Se la data e ora espressa da questo valore è precedente all'ultima volta in cui hai aggiornato i prezzi sul tuo server, devi rispondere con un messaggio Hint Response specificando quali hotel hanno subito modifiche. Se non è stato eseguito un recupero recente, questo valore verrà impostato su un intervallo fisso (per evitare problemi più gravi con backlog di grandi dimensioni). L'attuale valore dell'intervallo fisso è 1000 secondi, ma è soggetto a modifiche. Per ulteriori informazioni, consulta la sezione Messaggi Hint Response. |
Esempi
L'esempio seguente mostra un messaggio Hint Request:
Messaggio Hint Request
L'esempio seguente mostra un messaggio Hint Request:
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest id="ABCDEF" timestamp="2018-06-07T16:20:00Z">
<LastFetchTime>2018-03-25T00:04:09Z</LastFetchTime>
</HintRequest>
<Query>
L'elemento principale di un messaggio Query. I messaggi Query sono richieste di aggiornamenti
relativi a prezzi o metadati inviate da Google. Vengono utilizzati con le modalità di invio Pull
e Prezzo modificato.
Messaggi Query sui prezzi
I messaggi Query sui prezzi specificano le combinazioni proprietà e itinerario per cui fornisci i prezzi.
Quando riceve un messaggio Query sui prezzi, il tuo server deve rispondere con un messaggio
<Transaction> contenente le informazioni sui prezzi richieste.
Per ulteriori informazioni, consulta la panoramica dei prezzi.
Esistono tre tipi speciali di messaggi Query:
Prezzi in tempo reale:Google risponde a una richiesta specifica dell'utente, chiedendo un aggiornamento dei prezzi in tempo reale. Quando i partner ricevono un messaggio
Live pricing query, devono rispondere con un messaggio<Transaction>contenente le informazioni sui prezzi richieste negli elementi<Result>.Con i prezzi contestuali:Google aggiorna la cache dei prezzi in base ai contesti storicamente più popolari. Quando ricevi un messaggio
With Context query, devi rispondere con un messaggio<Transaction>contenente le informazioni sui prezzi richieste negli elementi<Result>.Con le query contestuali per una singola occupazione
Quando fornisci le tariffe in risposta alle query Con contesto, devi inviare solo la tariffa corrispondente al contesto specificato. L'occupazione con tariffa base richiede un minimo di 2 occupanti, quindi se viene passato un singolo occupante nella tariffa base, verrà ignorato e verrà comunque trattato come occupazione doppia. In questo caso, devi trasmettere la tariffa base come non disponibile e utilizzare la tariffa nidificata all'interno dell'occupazione singola. Fai riferimento all'esempio di risposta con contesto. Puoi utilizzare Prezzo modificato con contesto per unire le tariffe impostando l'attributo
mergeablesu"true". Scopri di più.Prezzi modificati (in precedenza Pull with hints) con contesto
Quando invii una risposta al messaggio
<Transaction>a una query Prezzo modificato con contesto, Google la considera una sostituzione completa delle informazioni su prezzi e disponibilità per un determinato hotel o itinerario e tutte le tariffe specifiche per il contesto vengono escluse dalla risposta e rimosse dalla cache.Per evitare la sovrascrittura, devi impostare l'attributo
mergeablesu"true"all'interno dell'elemento<Result>nel messaggio<Transaction>. Google aggiunge le tariffe alle tariffe memorizzate nella cache esistenti per il contesto fornito nella risposta. Se non utilizzi l'attributo unibile, devi inviare tutte le tariffe per tutti i contesti applicabili nella risposta.Query sui prezzi in tempo reale con contesto
La query sui prezzi in tempo reale con contesto ha il comportamento dell'attributo unibile per impostazione predefinita, pertanto non è necessario impostare questo attributo. Devi inviare le tariffe per i contesti specifici richiesti da Google solo se tutti gli altri contesti rimangono invariati. Se sono cambiati altri contesti, devi inviare esplicitamente le modifiche per questi contesti; in caso contrario, le nuove tariffe non verranno aggiornate nella cache di Google.
Metadati: Google richiede aggiornamenti dei metadati per le camere e i pacchetti camera per gli hotel specificati. Quando ricevi un messaggio
Metadata Query, devi rispondere con un messaggio<Transaction>che specifica i dati relativi alle camere e ai pacchetti camera negli elementi<PropertyDataSet>. Per ulteriori informazioni, consulta la sezione Metadati dei pacchetti camera.
Sintassi
L'elemento <Query> utilizza la seguente sintassi:
Query sui prezzi
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<PropertyList>
<Property>hotel_id</Property>
...
</PropertyList>
</Query>
Prezzi in tempo reale
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyList>
<Property>hotel_id</Property>
...
</PropertyList>
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</Query>
Con query contestuale
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyContextList>
<PropertyContext>
<Property>hotel_id</Property>
...
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</PropertyContext>
</PropertyContextList>
</Query>
Metadati
<HotelInfoProperties>
<Property>property_ID</Property>
...
</HotelInfoProperties>
Attributi
L'elemento <Query> può contenere un attributo: latencySensitive.
L'attributo latencySensitive è facoltativo. Se fornito e impostato su
true, indica che la query è una Live Pricing Query. Per consentire a Google
di inviare query con l'attributo latencySensitive, contatta il tuo Technical
Account Manager (TAM).
Elementi secondari
L'elemento <Query> prevede i seguenti elementi secondari:
| Elemento secondario | Tipo di query | Tipo | Descrizione |
|---|---|---|---|
| <AffectedNights> | Pricing | integer | Il numero di notti per un soggiorno con intervallo di date. Questo elemento viene utilizzato solo per le query sui prezzi dei soggiorni con intervallo di date utilizzate con la modalità Prezzo modificato. |
| <Checkin> | Pricing | Date | Specifica le date di una determinata variazione di prezzo. |
| <Context> | Pricing (Live Pricing Queries only) | <Context> | Per le query sui prezzi in tempo reale, specifica determinati parametri in base ai quali
viene eseguita la query. Gli elementi secondari includono:
L'elemento |
| <FirstDate> | Pricing | Date | La data di inizio per un intervallo di itinerari a cui si applica il prezzo. Questo elemento è utilizzato solo per le query sui prezzi relative a intervalli di date di check-in utilizzate con la modalità Prezzo modificato. |
| <HotelInfoProperties> | Metadata | string | Una o più proprietà per le quali Google richiede metadati
di camere e pacchetti camera aggiornati in un messaggio Query sui metadati.
Questo elemento può contenere uno o più elementi <Property>
che specificano gli ID proprietà degli hotel. |
| <LastDate> | Pricing | Date | La data di fine per un intervallo di itinerari a cui si applica il prezzo. Questo elemento è utilizzato solo per le query sui prezzi relative a intervalli di date di check-in utilizzate con la modalità Pull + Hints. |
| <Nights> | Pricing | integer | Il numero di notti per un determinato itinerario, fino a 30. |
| <PropertyList> | Pricing | Object | Uno o più ID hotel che richiedono aggiornamenti sui prezzi. Definisci ciascun hotel in un elemento <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
Esempi
Query sui prezzi
L'esempio seguente mostra un messaggio Query sui prezzi che richiede gli aggiornamenti dei prezzi per un insieme di hotel, disponibili per 3 notti, a partire dal 23 maggio 2023:
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>3</Nights>
<PropertyList>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</PropertyList>
</Query>
Query sui prezzi in tempo reale
L'esempio seguente mostra una query sui prezzi in tempo reale con un tempo limite di risposta di 500 millisecondi:
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="8"/>
<Child age="5"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Con la query contestuale
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>2</Nights>
<PropertyContextList>
<PropertyContext>
<Property>8675309</Property>
<!-- In the future, device might be specified -->
<Context><UserCountry>US</UserCountry></Context>
<Context><UserCountry>GB</UserCountry></Context>
</PropertyContext>
<PropertyContext>
<Property>8675310</Property>
<Property>8675311</Property>
<Context><UserCountry>CA</UserCountry></Context>
</PropertyContext>
</PropertyContextList>
</Query>
Con risposta contestuale
L'esempio seguente spiega come impostare la tariffa di base su unavailable(-1)
per una singola persona e nidificare le tariffe nell'elemento <Occupancy>.
<?xml version="1.0" encoding="UTF-8"
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2025-11-19T18:36:48Z">
<Result>
<Property>6781291</Property>
<Checkin>2026-01-15</Checkin>
<Nights>1</Nights>
<!-- Base rate is set to -1 to indicate unavailability for the default (2-person) occupancy -->
<Baserate currency="USD">-1</Baserate>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
<Rates>
<!-- Nested Rate for Single Occupancy -->
<Rate rate_rule_id="rule-951">
<Occupancy>1</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
</OccupancyDetails>
<Baserate currency="USD">150.00</Baserate>
<Tax currency="USD">15.00</Tax>
<OtherFees currency="USD">5.00</OtherFees>
</Rate>
<!-- Other nested rates for different occupancies or room types could be included here if available -->
</Rates>
</Result>
</Transaction>
Query sui metadati
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
Per ulteriori esempi, incluse le query sui prezzi per soggiorni con intervallo di date
e per intervalli di date di check-in, consulta la sezione Esempi di messaggi Query.
<Context>
L'elemento <Context> fornisce informazioni per una Live pricing query,
che includono il numero e il tipo di ospiti, il paese e il dispositivo dell'utente.
Non vengono mai utilizzati più elementi <Context> con paesi
o dispositivi utente diversi. Quando vengono utilizzati più elementi <Context> per eseguire
query per valori di numero di persone diversi, fornisci ogni prezzo per il numero di persone sotto forma di pacchetto camera
aggiuntivo per la proprietà o l'itinerario corrispondente. Ogni proprietà o itinerario deve avere un singolo blocco <Result> che include i prezzi per più valori di numero di persone.
Per i dettagli sulla risposta alla query <Context>, consulta
<OccupancyDetails>.
Sintassi
L'elemento <Context> utilizza la seguente sintassi:
Sintassi
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>date</Checkin>
<Nights>number_of_nights</Nights>
<DeadlineMs>number_of_milliseconds</DeadlineMs>
<PropertyList>
<Property>property_ID</Property>
</PropertyList>
<Context>
<Occupancy>total_number_of_guests</Occupancy>
<OccupancyDetails>
<NumAdults>number_of_adults</NumAdults>
<Children>
<Child age=age_of_one_child_guest/>
<Child age=age_of_one_child_guest/>
</Children>
</OccupancyDetails>
<UserCountry>end_user_country</UserCountry>
<UserDevice>user_device_type</UserDevice>
</Context>
</Query>
Elementi secondari
L'elemento <Context> prevede i seguenti elementi secondari:
| Elemento secondario | Tipo di query | Tipo | Descrizione |
|---|---|---|---|
| <Occupancy> | Pricing | integer | Specifica il numero totale di ospiti. Anche se non è obbligatorio, le query con Nota: |
| <OccupancyDetails> | Pricing | Object | È preceduto da <Occupancy>. Specifica gli ospiti per
tipo, tra cui:
Anche se non è obbligatorio, le query con Nota: |
| <UserCountry> | Pricing | string | Filtra le tariffe in base al paese in cui si trova l'utente. Il valore è un
codice paese di due lettere come Le query con |
| <UserDevice> | Pricing | string | Filtra le tariffe in base al tipo di dispositivo da cui l'utente sta eseguendo la ricerca. Valori possibili:
Le query con |
Esempi
Numero di persone
L'esempio seguente mostra una query sui prezzi in tempo reale per <Occupancy>
all'interno di <Context>. La query sui prezzi in tempo reale è relativa a tre ospiti
adulti.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Dettagli sul numero di persone
L'esempio seguente mostra una query sui prezzi in tempo reale con
<OccupancyDetails> all'interno di <Context>.
La query sui prezzi in tempo reale si riferisce a 4 ospiti, 2 dei quali
sono bambini, e cerca una tariffa applicabile a un ospite dagli Stati Uniti
che esegue la prenotazione da un dispositivo mobile:
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="4"/>
<Child age="12"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Contesti multipli
L'esempio seguente mostra l'utilizzo di un elemento <Context> aggiuntivo
in una query sui prezzi in tempo reale.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
<Context>
<Occupancy>6</Occupancy>
<OccupancyDetails>
<NumAdults>4</NumAdults>
<Children>
<Child age="6"/>
<Child age="10"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>