Zapytanie i dokument XML wskazówek

W tej sekcji znajdziesz informacje o opartych na języku XML komunikatach z żądaniem podpowiedzi, wiadomościach z odpowiedziami na wskazówki i wiadomościach z zapytaniami.

<Hint> (wiadomość z odpowiedzią)

Główny element wiadomości z odpowiedzią. Wiadomości z odpowiedziami na wskazówki określają, za które kombinacje hotelu i planu podróży mają zostać zmienione ceny. To Twoja odpowiedź na wiadomość z prośbą o wskazówki od Google.

Komunikat z odpowiedzią powinien wskazywać tylko te hotele, których ceny zmieniły się od czasu ostatniego odebrania przez Google prawidłowej odpowiedzi z Twoich serwerów.

Wiadomości z odpowiedziami na wskazówki używają jednej z tych metod, aby określić, które hotele i plany podróży Google ma zmienić cenę:

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

  • Zakresy dat zameldowania: określa zakres dat zameldowania zaczynający się od pierwszej daty zameldowania, a kończący ostatnią datą zameldowania.

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

Każda z tych metod wymaga innej składni wiadomości z odpowiedzią podpowiedzi.

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 wiadomości z odpowiedzią:

Dokładne plany podróży

Poniżej widać składnię dokładnych planów podróży w wiadomości z odpowiedzią:

<!-- 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 widać składnię zakresów zameldowania w wiadomości odpowiedzi podpowiedzi:

<!-- 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ę pozostań z zakresem w wiadomości odpowiedzi podpowiedzi:

<!-- 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. Jeśli zostanie podany, zostanie uwzględniony jako atrybut hintId w wiadomościach <Query> wysyłanych na podstawie tego <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 odpraw i różne plany podróży Pierwsza data zakresu dat dla zakresu zameldowania lub zakresu dat. Daty są uwzględnione.
<Item> Required Object Wszystko Kontener do aktualizacji hotelu lub planu podróży.
<LastDate> Required* Date Zakresy odpraw i różne plany podróży

Ostatnia data zakresu dat dla zakresu zameldowania lub zakresu dat, pozostając w zakresie odpowiedzi na pytanie. 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. Liczba elementów <Property>, które można określić w pojedynczym bloku <Item>, zależy od typu wiadomości z odpowiedzią na pytanie:

  • Dokładne plany podróży: do 100 hoteli.
  • Zakresy zameldowań: więcej niż jeden, jeśli w wiadomości <QueryControl> ustawiono wartość <MultipleItineraries> na "checkin_range" .
  • Zakres pobytu: więcej niż 1, jeśli w wiadomości <QueryControl> ustawiono wartość <MultipleItineraries> na "affected_dates" .
<Stay> Required Object Dokładne plany podróży Kontener elementów <CheckinDate> i <LengthOfStay> w wiadomości z odpowiedzią na plan podróży. Każdy obiekt <Item> może zawierać tylko jeden obiekt <Stay>.
<StaysIncludingRange> Required Object Różne plany podróży Kontener elementów <FirstDate> i <LastDate> w wiadomości z odpowiedzią o zakresie pozostającą w zakresie.

Przykłady

Dokładne plany podróży

Ten przykład zdefiniował wiele planów podróży dla 1 usługi w ramach wiadomości 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ń

Ten przykład wskazuje 2 hotele, których ceny uległy zmianie i należy pobrać je ponownie. Google otrzymuje wszystkie plany podróży pomiędzy 3 a 6 lipca 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>

Aby wiadomość dotycząca zakresu zameldowania mogła określić wiele właściwości w jednym <Item>, wartość <MultipleItineraries> w <QueryControl> musi być ustawiona na "checkin_range".

Zakresy długości pobytu

Poniższy przykład pokazuje 2 różne zastosowania noclegów o różnej długości: jednego dla określonej liczby nocy i drugiego dla 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>

Aby można było określić kilka właściwości w pojedynczym <Item> w wiadomości z zakresu pobytu z zakresu, wartość właściwości <MultipleItineraries> w <QueryControl> musi być ustawiona na "affected_dates".

W przypadku każdego z tych przykładów Google przesyła w odpowiedzi <Query>, na które należy wysłać odpowiedź <Transaction>, która zawiera zmiany cen w podanych hotelach lub planach podróży.

<HintRequest>

Główny element wiadomości żądania podpowiedzi. Google wysyła do serwera wiadomość żądania podpowiedzi i oczekuje odpowiedzi określającej hotele i plany podróży, których ceny zmieniły się od czasu ostatniego odebrania przez Google odpowiedzi podpowiedzi z Twojego serwera.

Jeśli ceny się zmienią, Google wysyła wtedy <Query>, który pobiera zaktualizowane dane o cenach w przypadku wskazanych 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 Ostatni raz, gdy Google udało się pobrać wiadomość z odpowiedzią na wiadomość z prośbą o podpowiedź.

Jeśli jest on starszy niż czas ostatniej aktualizacji cen na serwerze, w odpowiedzi wyślij wiadomość z odpowiedzią, która wskaże, które hotele się zmieniły.

Jeśli nie odbyło się ostatnio udanego pobierania, zostanie ustawiona stała wartość odstępu (aby uniknąć poważnych problemów z dużymi zaległościami). Obecna stała wartość interwału wynosi 1000 sekund, ale może się zmienić.

Więcej informacji znajdziesz w artykule Komunikaty 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. Wiadomości typu Query to prośby od Google o aktualizację cen lub metadanych. Są one używane w trybach wyświetlania pull i zmiana cen.

Istnieją 3 typy wiadomości typu Query:

  • Aktualna cena: w odpowiedzi na konkretne pytanie użytkownika Google prosi o aktualizację cen w czasie rzeczywistym. Gdy partnerzy otrzymają wiadomość Live pricing query, powinni w odpowiedzi przesłać wiadomość <Transaction> zawierającą prośby o informacje o cenie w elementach <Result>.

  • Za pomocą cen kontekstowych: Google aktualizuje swoją pamięć podręczną cen na podstawie popularnych w przeszłości kontekstów. Gdy otrzymasz wiadomość With context query, w odpowiedzi prześlij wiadomość <Transaction> zawierającą żądane informacje o cenie w elementach <Result>.

  • Metadane: Google żąda aktualizacji metadanych pokoi i pakietów pokojów w wybranych hotelach. Gdy otrzymasz wiadomość Metadata Query, w odpowiedzi musisz umieścić komunikat <Transaction>, który określa dane o pokojach i pakietach pokojów w elementach <PropertyDataSet>.

Więcej informacji znajdziesz w sekcji Informacje o cenach w przypadku zapytań o ceny i Metadane pakietu pokoi w przypadku 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. Jeśli podasz wartość true i będziesz mieć wartość true, oznacza to, że zapytanie to Live Pricing Query. Jeśli chcesz, aby zapytania do Google wysyłały z atrybutem latencySensitive, skontaktuj się z technicznym menedżerem konta (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 zapytaniach o ceny za zakres rezerwacji używanych ze zmianą cen.
<Checkin> Pricing Date Daty konkretnej zmiany ceny.
<Context> Pricing (Live Pricing Queries only) <Context> W przypadku zapytań z cenami na żywo określa określone parametry, za pomocą których wysyłane jest zapytanie. Do elementów podrzędnych należą:
  • <Occupancy>: łączna liczba gości
  • <OccupancyDetails>: typ gości, np. dorośli lub dzieci.
  • <UserCountry>: kraj, w którym znajduje się użytkownik
  • <UserDevice>: typ urządzenia, którego gość użył do wyszukania hotelu, np. "mobile, „tablet” lub „desktop”.

Element <Context> może być powtórzony w jednym żądaniu, co umożliwia wykonywanie zapytań dotyczących różnych obłożenia. Na stronie <Context> znajdziesz listę elementów podrzędnych, składnię i przykłady.

<FirstDate> Pricing Date Data rozpoczęcia zakresu planów podróży, do których mają zastosowanie opłaty. Ten element jest używany tylko w zapytaniach o ceny z zakresu dat zameldowania używanych ze zmianą cen.
<HotelInfoProperties> Metadata string Co najmniej 1 usługa, w której Google chce zaktualizować metadane pokoju i pakietu pokoi w wiadomości z metadanymi Query. Ten element może zawierać co najmniej 1 element <Property>, który określa identyfikatory obiektów hotelowych.
<LastDate> Pricing Date Data zakończenia zakresu planów podróży, których dotyczą te ceny. Ten element jest używany tylko w przypadku zapytań o ceny zakresu dat zameldowania używanych z pobieraniem i podpowiedziami.
<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>. Wartość jest ciągiem znaków pasującym do identyfikatora hotelu na liście hoteli. Na przykład:

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

Przykłady

Pytanie o cenę

Ten przykład przedstawia wiadomość z zapytaniem o cenę, która prosi o aktualizację cen zestawu hoteli dostępnych na 3 noce od 10 czerwca 2018 r.:

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

Poniższy przykład przedstawia zapytanie o cenę w czasie rzeczywistym z czasem odpowiedzi wynoszącym 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>

Więcej przykładów, takich jak zapytania o ceną pobytu z zakresu dat i zakresu dat zameldowania, znajdziesz w przykładach wiadomości w języku: Query.

<Context>

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

Wiele właściwości <Context> nie będzie nigdy używane w przypadku różnych krajów lub urządzeń użytkowników. Jeśli do zapytań dotyczących kilku osób używasz kilku obiektów <Context>, podaj każdą cenę za obłożenie jako dodatkowy pakiet pokoi dla odpowiedniego obiektu lub planu podróży. Każdy obiekt/plan podróży powinien mieć 1 blok <Result> z uwzględnieniem cen dla wielu miejsc.

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.

Chociaż nie jest to obowiązkowe, zapytania z parametrem <Occupancy> powinny prowadzić do wiadomości o transakcji z odpowiednimi pakietami pokojów zdefiniowanymi dla każdego zapytania <Occupancy>.

Uwaga:<Occupancy> nie zawsze może występować w zapytaniu. W takich przypadkach należy zwrócić ceny za wszystkie miejsca.

<OccupancyDetails> Pricing Object Jest poprzedzone znakiem <Occupancy>. Określa gości według typu, na przykład:

  • <NumAdults>: liczba dorosłych gości
  • <Children> i <Child="age">: określa, którzy goście są dziećmi (zwykle w wieku 0–17 lat), i opcjonalnie uwzględnia wiek każdego dziecka.
  • Chociaż nie jest to obowiązkowe, zapytania z parametrem <OccupancyDetails> powinny prowadzić do wiadomości o transakcji z odpowiednimi pakietami pokojów zdefiniowanymi dla każdego zapytania <Occupancy>.

    Uwaga: <OccupancyDetails> nie zawsze może pojawić się w zapytaniu. W takich przypadkach załóżmy, że wszyscy goście są dorośli.

<UserCountry> Pricing string

Filtruje stawki według kraju, w którym znajduje się użytkownik. Wartość to 2-literowy kod kraju, np. “US” (Stany Zjednoczone) lub kod regionu, np. "EU" (Europa).

Zapytania ze zdefiniowanym parametrem <UserCountry> powinny powodować wyświetlenie komunikatu o transakcji z odpowiednim blokiem <Rates> zdefiniowanym 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ć komunikat transakcji z odpowiednim blokiem <Rates> zdefiniowanym dla urządzenia, którego dotyczy zapytanie.

Przykłady

Obecność

Przykład poniżej pokazuje zapytanie o rzeczywistą cenę dla zasobu <Occupancy> w polu <Context>. Zapytanie o cenę w czasie rzeczywistym dotyczy 3 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

Przykład poniżej pokazuje zapytanie o rzeczywistą cenę z parametrem <OccupancyDetails> w polu <Context>. Zapytanie o cenę w czasie rzeczywistym dotyczy 4 osób, z których 2 są dzieci, i poszukuje ceny obowiązującej w Stanach Zjednoczonych przy rezerwacji gości z urządzenia mobilnego:

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