Zapytanie i dokument XML wskazówek

Ta sekcja zawiera odniesienie do kodu Google opartego na języku XML, Wiadomości z prośbami o wskazówki, wiadomości z odpowiedziami na podpowiedzi, i Zapytania dotyczące wiadomości.

<Hint> (wiadomość z odpowiedzią)

Główny element wiadomości z odpowiedzią. Wiadomości z odpowiedziami na podpowiedzi określać, które kombinacje hotelu i planu podróży mają zostać zmienione. Są to Twoje odpowiedź na wiadomość żądania podpowiedzi od Google.

Komunikat z podpowiedzią powinien określać tylko te hotele, których ceny mają zmieniła się od ostatniego otrzymania przez Google prawidłowej odpowiedzi na pytanie Twoje serwery.

W wiadomościach z odpowiedziami na sugestie możesz użyć jednej z poniższych metod hotele i plany podróży, które Google powinien zmienić:

  • Dokładne plany podróży: połączenie daty zameldowania o długości pobytu.

  • Zakresy dat zameldowania: określa zakres dat zameldowania. daty rozpoczynającej się od pierwszej daty zameldowania, a kończąc ostatnim datę zameldowania.

  • Pokoje o określonym zakresie (lub różne plany podróży).

Każda z tych metod wymaga innej składni odpowiedzi na podpowiedź .

Więcej informacji znajdziesz w artykule Wiadomości z odpowiedziami na wskazówki.

Składnia

Element <Hint> używa różnej składni w zależności od typu podpowiedzi Wiadomość z odpowiedzią:

Dokładne plany podróży

Poniżej widać składnię dokładnych planów podróży w odpowiedzi na podpowiedź wiadomość:

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

Zakresy zameldowań

Poniżej przedstawiono składnię zakresów sprawdzania w odpowiedzi na podpowiedź wiadomość:

<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <!-- At least one is required -->
    <!-- Can be > 1 if MultipleItineraries is "checkin_range" in your
         QueryControl message -->
    <Property>hotel_ID</Property>
    [...]

    <!-- Required -->
    <FirstDate>first_checkin_date</FirstDate>
    <!-- Required -->
    <LastDate>last_checkin_date</LastDate>
  </Item>
  ...
</Hint>

Zakresy długości pobytu

Poniżej widać składnię pozostających w zakresie w odpowiedzi na podpowiedzi wiadomość:

<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <!-- At least one is required -->
    <!-- Can be > 1 if MultipleItineraries is "affected_dates" in your
         QueryControl message -->
    <Property>hotel_ID</Property>
    [...]

    <StaysIncludingRange>
      <!-- Required -->
      <FirstDate>first_date</FirstDate>

      <!-- Optional -->
      <LastDate>last_date</LastDate>
    </StaysIncludingRange>
  </Item>
  ...
</Hint>

Atrybuty

Element <Hint> zawiera opcjonalny atrybut: id. Kiedy jest uwzględniony jako atrybut hintId w <Query> Wysłano wiadomości na podstawie: <Hint>.

Elementy potomne

Element <Hint> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Typ odpowiedzi na podpowiedź Opis
<CheckInDate> Required Date Dokładne plany podróży Data zameldowania w planie podróży.
<FirstDate> Required Date Zakresy odprawiania i różne plany podróży Pierwsza data zakresu dat zameldowania pozostaw wiadomość z odpowiedzią. Daty są uwzględnione.
<Item> Required Object Wszystko Kontener do aktualizacji hotelu lub planu podróży.
<LastDate> Required* Date Zakresy odprawiania i różne plany podróży

Ostatnia data zakresu dat zameldowania lub zakresu dat pozostaw wiadomość z odpowiedzią. Daty są uwzględnione.

* Ten element jest opcjonalny w przypadku pobytu z zakresu zakresu.

<LengthOfStay> Required integer Dokładne plany podróży Liczba nocy w planie podróży wyrażona jako dodatnia liczba całkowita.
<Property> Required string Wszystko

Identyfikator hotelu używany z tym samym identyfikatorem co na liście hoteli. Numer z <Property> elementów, które można określić w jednym Blok <Item> jest określany na podstawie typu podpowiedzi Wiadomość z odpowiedzią:

  • Dokładne plany podróży: do 100 hoteli.
  • Zakresy zameldowania: więcej niż jeden, jeśli jest ustawiony <MultipleItineraries> do użytkownika "checkin_range" w wiadomości <QueryControl>.
  • Zakres pobytu: więcej niż jeden, jeśli ustawisz <MultipleItineraries> do użytkownika "affected_dates" w wiadomości <QueryControl>.
<Stay> Required Object Dokładne plany podróży Kontener dla zasobów typu <CheckinDate> i Wskazówka: <LengthOfStay> elementów w dokładnym planie podróży Komunikat z odpowiedzią. Każdy element <Item> może zawierać tylko jeden <Stay>
<StaysIncludingRange> Required Object Różne plany podróży Kontener dla zasobów typu <FirstDate> i <LastDate> elementów w odpowiedzi na pytanie dotyczące stałego pobytu .

Przykłady

Dokładne plany podróży

Ten przykład zdefiniował wiele planów podróży w przypadku 1 usługi wiadomość z odpowiedzią:

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

Zakresy zameldowań

Poniższy przykład wskazuje 2 hotele, których ceny uległy zmianie. powinno zostać pobrane jeszcze raz. Google znajdzie wszystkie plany podróży między 3 a lipcem 6 dla usług 12345 i 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>

Pamiętaj, że w przypadku wiadomości dotyczącej zakresu zameldowania możliwe jest określenie wielu właściwości w pojedynczym elemencie <Item>, wartość Pole <MultipleItineraries> w <QueryControl> musi mieć wartość "checkin_range".

Zakresy długości pobytu

Poniższy przykład pokazuje 2 różne zastosowania przedziałów czasowych, po jednym dla zakres nocy, a drugi w przypadku jednej nocy:

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

Pamiętaj, że w przypadku wiadomości o zasięgu zakresu można określić wiele właściwości w pojedynczym elemencie <Item>, wartość Pole <MultipleItineraries> w <QueryControl> musi mieć wartość "affected_dates".

W przypadku każdego z tych przykładów Google przesyła <Query>, a Ty a potem prześlij odpowiedź <Transaction> z informacjami o zmianach cen określonych hoteli lub planów podróży.

<HintRequest>

Główny element wiadomości żądania podpowiedzi. Google wysyła żądanie wskazówek do serwera i oczekuje odpowiedzi, która określa hotele planów podróży, których ceny zmieniły się od czasu otrzymania przez Google odpowiedź z podpowiedzią została przesłana z serwera.

W przypadku zmian cen Google przesyła <Query> z pobiera zaktualizowane dane o cenach wybranych hoteli i planów podróży.

Więcej informacji znajdziesz w artykule Wiadomości z prośbami o wskazówki.

Składnia

Element <HintRequest> ma taką składnię:

Składnia

<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
  <LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>

Atrybuty

Element <HintRequest> nie ma atrybutów.

Elementy potomne

Element <HintRequest> ma te elementy podrzędne:

Element podrzędny Typ Opis
<LastFetchTime> DateTime Kiedy ostatnio udało się nam otrzymać wiadomość z odpowiedzią na wiadomość z prośbą o podpowiedź.

Jeśli ta godzina jest wcześniejsza niż ostatnio zaktualizowanych cen na serwerze, w odpowiedzi na tego e-maila Komunikat z informacją, które hotele się zmieniły.

Jeśli w ostatnim czasie nie było żadnego udanego pobierania, wartość ta zostanie ustawiona na stałą wartość interwału (aby uniknąć poważnych problemów ze zaległości). Bieżąca stała wartość interwału wynosi 1000 sekund, ale jest może ulec zmianie.

Aby dowiedzieć się więcej, zapoznaj się z wiadomościami z odpowiedziami na podpowiedzi.

Przykłady

Poniższy przykład pokazuje wiadomość z żądaniem podpowiedzi:

Wiadomość z prośbą o podpowiedź

Oto przykład prośby o podpowiedź:

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

Główny element wiadomości Query. Query wiadomości to prośby od Google w celu aktualizacji cen lub metadanych. Są używane zarówno z funkcją Pull, i Zmienione tryby wyświetlania.

Istnieją 3 typy wiadomości typu Query:

  • Aktywna cena: Google w odpowiedzi na konkretne pytanie użytkownika, pyta: od cen w czasie rzeczywistym. Gdy partnerzy otrzymają Live pricing query na wiadomość, partnerzy powinni odpowiedzieć, wysyłając wiadomość <Transaction> z następującym zawiera żądane informacje o cenach w elementach <Result>.

  • Za pomocą cen kontekstowych: Google aktualizuje swoją pamięć podręczną cen na podstawie kontekstu. które są wciąż popularne. Gdy otrzymasz With context query W odpowiedzi na tego e-maila prześlij wiadomość <Transaction> zawierającą prosi o informacje o cenach w elementach <Result>.

  • Metadane: Google prosi o aktualizację metadanych sal i pakietów pomieszczeń. w wybranych hotelach. Gdy otrzymasz wiadomość Metadata Query, powinien przesłać w odpowiedzi komunikat <Transaction>, który określa dane na temat i pakiety pokojów w elementach <PropertyDataSet>.

Więcej informacji znajdziesz w artykule Omówienie cen w przypadku zapytań o ceny i metadanych pakietu pokoi. zapytań o metadane.

Poniżej znajdziesz składnię 3 różnych typów.

Składnia

Element <Query> ma taką składnię:

Aktualna cena

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

Z kontekstem

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

Metadane

<HotelInfoProperties>
  <Property>property_ID</Property>
  ...
</HotelInfoProperties>

Atrybuty

Element <Query> może zawierać 1 atrybut: latencySensitive.

Atrybut latencySensitive jest opcjonalny. Po podaniu i ustawieniu na true, oznacza to, że zapytanie ma typ Live Pricing Query. Aby umożliwić Google wysyłanie z atrybutem latencySensitive skontaktuj się z obsługą klienta technicznego Menedżer (TAM).

Elementy potomne

Element <Query> ma te elementy podrzędne:

Element podrzędny Typ zapytania Typ Opis
<AffectedNights> Pricing integer Liczba nocy w przypadku pobytu o określonym zakresie. Ten element jest używany tylko w przypadku zapytań o ceny zakresu objętego zmianą ceny.
<Checkin> Pricing Date Daty konkretnej zmiany ceny.
<Context> Pricing (Live Pricing Queries only) <Context> W przypadku zapytań z cenami aktywnych elementów określa określone parametry, poniżej których w którym przypadku użytkownik otrzymuje zapytanie. Elementy podrzędne to m.in.:
  • <Occupancy>: łączna liczba gości
  • <OccupancyDetails>: typ gości, na przykład dorośli lub dzieci
  • <UserCountry>: kraj, w którym znajduje się użytkownik z siedzibą
  • <UserDevice>: typ urządzenia używanego przez gościa. aby wyszukać hotel, np. "mobile”, tablet ”, lub „desktop”.

Element <Context> może się powtarzać w 1 miejscu co pozwala na wysyłanie zapytań dotyczących różnych obłożenia. Skonsultuj się z: <Context> z listą elementów podrzędnych, składnią i przykładami.

<FirstDate> Pricing Date datę rozpoczęcia zakresu planów podróży, do których ma zastosowanie. Ten element jest używany tylko do określania cen w zakresie dat zameldowania zapytań używanych ze zmianą ceny.
<HotelInfoProperties> Metadata string Co najmniej jedna usługa, której dotyczy aktualizacja metadanych pokoju i pakietu pokojów w wiadomości metadanych Query. Ten element może zawierać jeden lub więcej elementów <Property>, które określać identyfikatory obiektów hotelowych.
<LastDate> Pricing Date Data końcowa zakresu planów podróży, do których ma zastosowanie. Ten element jest używany tylko do określania cen w zakresie dat zameldowania zapytań używanych za pomocą pull + wskazówki.
<Nights> Pricing integer Liczba nocy w przypadku konkretnego planu podróży (do 30).
<PropertyList> Pricing Object

Co najmniej 1 identyfikator hotelu, który wymaga aktualizacji cen.

Zdefiniuj każdy hotel w elemencie <Property>. jest ciągiem znaków pasującym do identyfikatora hotelu na liście hoteli. Dla: przykład:

<PropertyList>
  <Property>pid1</Property>
  <Property>pid2</Property>
</PropertyList>

Przykłady

Pytanie o cenę

Przykład poniżej pokazuje wiadomość z zapytaniem o cenę, która zawiera żądanie ceny aktualizacje dotyczące grupy hoteli, dostępnych na 3 noce, od 10 czerwca, 2018 roku:

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

Pytanie o rzeczywistą cenę

Przykład poniżej przedstawia zapytanie o ceny w czasie rzeczywistym z czasem odpowiedzi. limit 500 milisekund:

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

Za pomocą zapytania kontekstowego

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <Checkin>2023-05-23</Checkin>
  <Nights>2</Nights>
  <PropertyContextList>
    <PropertyContext>
      <Property>8675309</Property>
      <!-- In the future, occupancy and 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>

Zapytanie o metadane

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <HotelInfoProperties>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </HotelInfoProperties>
</Query>

Dodatkowe przykłady, w tym pobyt w określonym zakresie i zakres dat zameldowania zawiera przykłady wiadomości (Query).

<Context>

Element <Context> opisuje informacje dotyczące: Live pricing query, w tym liczbę i typ gości, kraj użytkownika oraz jego urządzenie.

Wiele atrybutów <Context> nigdy nie będzie używanych z różnymi krajami użytkowników lub na urządzeniach użytkowników. Gdy w zapytaniach użyto wielu elementów <Context> liczbę osób; podaj cenę każdej osoby jako dodatkowy pakiet pokoi dla odpowiedniego miejsca zakwaterowania lub planu podróży. Każdy obiekt/plan podróży powinien mieć pojedynczy blok <Result> z cenami dla wielu uwzględnia liczbę osób.

Szczegółowe informacje o odpowiedzi na zapytanie <Context> znajdziesz w sekcji <OccupancyDetails>.

Składnia

Element <Context> ma taką składnię:

Składnia

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

Elementy potomne

Element <Context> ma te elementy podrzędne:

Element podrzędny Typ zapytania Typ Opis
<Occupancy> Pricing integer Określa łączną liczbę gości.

Nie jest to obowiązkowe, ale zapytania z parametrem <Occupancy> powinny w wyniku otrzymania wiadomości o transakcji z odpowiednimi pakietami pokojów zdefiniowane dla każdego zapytania <Occupancy>.

Uwaga:<Occupancy> może nie zawsze się pojawiać. w zapytaniu. W takich przypadkach należy zwrócić ceny wszystkich liczba osób.

<OccupancyDetails> Pricing Object Jest poprzedzone znakiem <Occupancy>. określa gości według typu, w tym:

  • <NumAdults>: liczba dorosłych gości
  • <Children> i <Child="age">: Określa, którzy goście są dziećmi (zwykle w wieku od 0 do 17 lat). opcjonalnie obejmuje wiek każdego dziecka.
  • Nie jest to obowiązkowe, ale zapytania z parametrem <OccupancyDetails> powinien skutkować wyświetleniem wiadomości o transakcji z odpowiednimi pakietami pokojów zdefiniowane dla każdej grupy <Occupancy>, której dotyczy zapytanie.

    Uwaga: <OccupancyDetails> nie zawsze nie pojawiają się w zapytaniu. W takich przypadkach należy przyjąć, że wszyscy goście są tylko dorośli.

<UserCountry> Pricing string

Filtruje stawki według kraju, w którym znajduje się użytkownik. Wartość to dwuliterowy kod kraju, np. “US” w przypadku Polski lub kodu regionu, na przykład "EU" dla słowa „Europa”.

Zapytania ze zdefiniowanym atrybutem <UserCountry> powinny zwracać wyniki wiadomość o transakcji z odpowiednim <Rates> blok zdefiniowany dla kraju, którego dotyczy zapytanie.

<UserDevice> Pricing string

Filtruje dane na podstawie typu urządzenia, na którym użytkownik przeprowadza wyszukiwanie. Możliwe wartości:

  • mobile
  • desktop
  • tablet

Zapytania ze zdefiniowanym parametrem <UserDevice> powinny zwracać błąd wiadomość o transakcji z odpowiednim <Rates> blok zdefiniowany dla urządzenia, którego dotyczy zapytanie.

Przykłady

Liczba osób

Poniżej znajduje się przykład zapytania o rzeczywistą cenę dla zasobu <Occupancy>. w ciągu <Context>. Zapytanie o rzeczywistą cenę dotyczy 3 osób dorosłych gości.

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

Informacje o obłożeniu

Poniżej znajduje się przykład zapytania o aktualną cenę z: <OccupancyDetails> w: <Context>. Zapytanie o cenę w czasie rzeczywistym dotyczy 4 gości, z których 2 są dzieci i dotyczy ceny obowiązującej w USA jako gość od urządzenie mobilne:

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

Wiele kontekstów

Przykład poniżej pokazuje użycie dodatkowego elementu <Context> w zapytaniu o aktualną cenę.

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