Zapytanie i dokument XML wskazówek

W tej sekcji znajdziesz informacje na temat wiadomości z prośbą o podpowiedź, wiadomości z odpowiedzią na podpowiedź oraz wiadomości z zapytaniem opartych na formacie XML.

<Hint> (wiadomość z odpowiedzią na podpowiedź)

Element główny wiadomości z odpowiedzią. Wiadomości z podpowiedziami określają, które hotele lub kombinacje planów podróży powinny zostać przecenione. Są to Twoje odpowiedzi na wiadomość z prośbą o podpowiedź od Google.

Odpowiedź na podpowiedź powinna zawierać tylko te hotele, których ceny zmieniły się od czasu, gdy Google otrzymało od Twoich serwerów pomyślną odpowiedź na podpowiedź.

Aby określić, które hotele i plany podróży mają być przeliczane przez Google, wiadomości z odpowiednią podpowiedzią używają jednej z tych metod:

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

  • Zakresy dat zameldowania: określają zakres dat zameldowania, począwszy od pierwszej daty zameldowania do ostatniej.

  • Pobyty w ramach pakietu (lub plany podróży w ramach pakietu)

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

Więcej informacji znajdziesz w artykule Komunikaty z podpowiedzią.

Składnia

Element <Hint> używa innej składni w zależności od typu wiadomości odpowiedzi:

Dokładne plany podróży

Poniżej przedstawiono składnię dokładnych planów podróży w wiadomości z odpowiedzią na podpowiedź:

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

Poniżej przedstawiono składnię zakresów zameldowania w wiadomości z odpowiednią podpowiedzią:

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

Zakwaterowanie w ramach przedziału cenowy

Poniżej przedstawiono składnię dotyczącą pobytu w ramach przedziału w wiadomości z podpowiedzią:

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

Atrybuty

Element <Hint> zawiera opcjonalny atrybut: id. Jeśli zostanie podany, jest dołączany 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 Wymagany? Typ Typ odpowiedzi na podpowiedź Opis
<CheckInDate> Required Date Dokładne plany podróży Data zameldowania w ramach planu podróży.
<FirstDate> Required Date Zakresy godzin zameldowania i zakresy planów podróży Pierwsza data w zakresie dat dla zakresu dat zameldowania lub pobytu w ramach odpowiedzi na podpowiedź. Daty są uwzględnione.
<Item> Required Object Wszystko Kontener hotelu lub planu podróży, który ma zostać zaktualizowany.
<LastDate> Required* Date Zakresy godzin zameldowania i zakresy planów podróży

Ostatnia data zakresu dat dla zakresu dat zameldowania lub pobytu z zakresem dat. Daty są uwzględnione.

* Ten element jest opcjonalny w przypadku pobytu w określonym przedziale czasowym.

<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, który jest taki sam jak identyfikator listy hoteli. Liczba elementów <Property>, które możesz określić w pojedynczym bloku <Item>, zależy od typu wiadomości z podpowiedzią:

  • Dokładne plany podróży: maksymalnie 100 hoteli.
  • Zakresy zameldowania: więcej niż 1, jeśli w wiadomości <QueryControl> ustawisz wartość <MultipleItineraries> na "checkin_range" .
  • Zakres pobytu: więcej niż 1, jeśli w wiadomości <QueryControl> ustawisz wartość <MultipleItineraries> na "affected_dates" .
<Stay> Required Object Dokładne plany podróży Element kontenera dla elementów <CheckinDate> i <LengthOfStay> w odpowiedzi na podpowiedź dotyczącą dokładnego planu podróży. Każdy element <Item> może zawierać tylko 1 element <Stay>.
<StaysIncludingRange> Required Object Plany podróży z zakresem Kontenery dla elementów <FirstDate> i <LastDate> w wiadomości z odpowiedzią na podpowiedź dotyczącą pobytu w zakresie.

Przykłady

Dokładne plany podróży

W tym przykładzie zdefiniowano wiele planów podróży dla jednej usługi: wiadomość z odpowiednią podpowiedzią:

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

W tym przykładzie podajemy 2 hotele, których ceny uległy zmianie i powinny zostać pobrane ponownie. Google otrzymuje wszystkie plany podróży między 3 a 6 lipca dla obiektów 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>

Zakwaterowanie w ramach przedziału cenowy

Ten przykład pokazuje 2 różne zastosowania pobytu w ramach przedziału: jeden dla przedziału liczby nocy, a drugi 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>

W przypadku każdego z tych przykładów Google odpowiada komunikatem <Query>, na który należy odpowiedzieć komunikatem <Transaction> zawierającym informacje o aktualnych cenach w wybranych hotelach lub trasach.

<HintRequest>

Element rdzeniowy wiadomości z prośbą o podpowiedź. Google wysyła wiadomość z żądaniem podpowiedzi do Twojego serwera i oczekuje odpowiedzi, która określa hotele i plany podróży, których ceny uległy zmianie od czasu ostatniego otrzymania przez Google od Twojego serwera prawidłowej odpowiedzi na żądanie podpowiedzi.

Jeśli nastąpią jakiekolwiek zmiany cen, Google wyśle <Query>, aby pobrać zaktualizowane dane o cenach dla wskazanych hoteli i planów podróży.

Więcej informacji znajdziesz w artykule [GA4] Wskazówki dotyczące wiadomości z prośbą o dane.

Składnia

Element <HintRequest> używa tej 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, kiedy Google otrzymało odpowiedź na prośbę o podpowiedź.

Jeśli czas jest starszy niż data ostatniej aktualizacji cen na serwerze, odpowiedz za pomocą wiadomości z podpowiedzią, w której określisz, które hotele uległy zmianie.

Jeśli nie było ostatnio żadnego udanego pobrania, zostanie ustawiony stały interwał (aby uniknąć poważniejszych problemów z dużymi zaległościami). Obecna wartość stałego odstępu czasu to 1000 sekund, ale może ulec zmianie.

Więcej informacji znajdziesz w artykule Komunikaty z podpowiedzią.

Przykłady

Ten przykład pokazuje wiadomość z prośbą o podpowiedź:

wiadomość z prośbą o podpowiedź

Ten przykład pokazuje wiadomość z prośbą 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>

Element główny wiadomości Query. Query wiadomości to żądania aktualizacji cen lub metadanych wysyłane przez Google. Są one używane w przypadku zarówno metody dostawy „pull”, jak i metody dostawy „push”.

wiadomości z zapytaniami dotyczącymi cen,

Wiadomości z zapytaniem o ceny określają kombinacje obiektu i planu podróży, dla których podajesz ceny.

Gdy serwer otrzyma wiadomość z zapytaniem o ceny, powinien odpowiedzieć wiadomością <Transaction> zawierającą żądane informacje o cenach.

Więcej informacji znajdziesz w artykule Omówienie cen.

Istnieją 3 specjalne typy wiadomości Query:

  • Ceny w czasie rzeczywistym: Google odpowiada na konkretne żądanie użytkownika, prosząc o aktualizację ceny w czasie rzeczywistym. Gdy partnerzy otrzymają wiadomość Live pricing query, powinni odpowiedzieć wiadomością <Transaction> zawierającą żądane informacje o cenach w elementach <Result>.

  • W przypadku ustalania cen na podstawie kontekstu: Google aktualizuje pamięć podręczną cen na podstawie kontekstów, które były popularne w przeszłości. Gdy otrzymasz wiadomość With context query, odpowiedz wiadomością <Transaction> zawierającą żądane informacje o cenach w elementach <Result>.

  • Metadane: Google prosi o aktualizację metadanych pokoi i pakietów pokoi w wybranych hotelach. Gdy otrzymasz wiadomość Metadata Query, odpowiedz wiadomością <Transaction> zawierającą dane o pokojach i pakietach pokoi w elementach <PropertyDataSet>. Więcej informacji znajdziesz w metadanych pakietu Room Bundle.

Składnia

Element <Query> używa tej składni:

Zapytanie o ceny

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

Ceny w czasie rzeczywistym

<?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ć jeden atrybut: latencySensitive.

Atrybut latencySensitive jest opcjonalny. Gdy jest podany i ma wartość true, oznacza, że zapytanie jest Live Pricing Query. Aby Google wysyłało zapytania z atrybutem latencySensitive, skontaktuj się z opiekunem klienta w zakresie technicznym (TAM).

Elementy potomne

Element <Query> ma te elementy podrzędne:

Element podrzędny Typ zapytania Typ Opis
<AffectedNights> Pricing integer Liczba nocy w ramach pobytu z różną liczbą nocy. Ten element jest używany tylko w przypadku zapytań o ceny pobytu w ramach pobytu z wieloma terminami używanych w przypadku zmiany cen.
<Checkin> Pricing Date Daty konkretnej zmiany ceny.
<Context> Pricing (Live Pricing Queries only) <Context> W przypadku zapytań o ceny na żywo określa określone parametry, na podstawie których wysyłane jest zapytanie. Elementy podrzędne:
  • <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 użył klient do wyszukania hotelu, na przykład "mobile, tablet lub desktop.

Element <Context> może być powtarzany w jednym żądaniu, co umożliwia wysyłanie zapytań dotyczących różnych zajętości. Lista elementów podrzędnych, składnia i przykłady: <Context>

<FirstDate> Pricing Date Data rozpoczęcia zakresu planów podróży, do których mają zastosowanie ceny. Ten element jest używany tylko w przypadku zapytań dotyczących cen w zakresie daty zameldowania używanych w przypadku zmiany cen.
<HotelInfoProperties> Metadata string Co najmniej 1 usługę, dla której Google chce zaktualizować metadane pokoju i pakietu pokoi w wiadomości metadanych 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, do których mają zastosowanie ceny. Ten element jest używany tylko do zapytań dotyczących zakresu dat zameldowania używanych z opcją „Pociągnij i wskaż”.
<Nights> Pricing integer Liczba nocy w ramach konkretnego planu podróży, do 30.
<PropertyList> Pricing Object

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

Określ każdy hotel za pomocą elementu <Property>. Wartość to ciąg tekstowy, który pasuje do identyfikatora hotelu w pliku danych z listą hoteli. Przykład:

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

Przykłady

Zapytanie o ceny

Ten przykład pokazuje wiadomość z zapytaniem o ceny, która prosi o aktualizacje cen dla zestawu hoteli dostępnych na 3 noce, począwszy od 23 maja 2023 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>

Zapytanie o rzeczywistą cenę

Ten przykład pokazuje zapytanie o ceny na żywo z limitem czasu odpowiedzi wynoszącym 500 ms:

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

Z zapytaniem kontekstowym

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

Aby zobaczyć więcej przykładów, w tym zapytań dotyczących cen, w tym zapytań dotyczących cen w przypadku pobytu w określonym przedziale czasowym i daty zameldowania, zapoznaj się z przykładami wiadomości Query.

<Context>

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

Wiele usług <Context> nigdy nie będzie używanych w różnych krajach ani na różnych urządzeniach użytkowników. Jeśli do zapytania o wiele zakwaterowań używasz wielu wartości <Context>, podaj cenę za każdą liczbę osób jako dodatkowy pakiet pokoi dla odpowiedniej usługi lub planu podróży. Każda usługa lub plan podróży powinien mieć jeden blok <Result> z cenami uwzględniającymi różne liczby osób.

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

Składnia

Element <Context> używa tej 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 wymagane, zapytania z parametrem <Occupancy> powinny skutkować wiadomością transakcyjną z odpowiednimi pakietami Room Bundles zdefiniowanymi dla każdego parametru <Occupancy>. Jeśli jednak pakietów Room Bundles nie ma, zalecamy określenie elementu <Occupancy>.

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

<OccupancyDetails> Pricing Object Poprzedza go <Occupancy>. Określa gości według typu, w tym:
  • <NumAdults>: liczba dorosłych gości
  • <Children><Child="age">: określa, którzy goście są dziećmi (zazwyczaj w wieku 0–17 lat) oraz opcjonalnie zawiera wiek każdego dziecka.

Chociaż nie jest to wymagane, zapytania z <OccupancyDetails> powinny skutkować wiadomością transakcyjną z odpowiednimi pakietami Room Bundles zdefiniowanymi dla każdego <Occupancy>. Jeśli jednak pakietów Room Bundles nie ma, zalecamy określenie elementu <OccupancyDetails>.

Uwaga: <OccupancyDetails> może nie zawsze pojawiać się w zapytaniu. W takich przypadkach należy założyć, że wszyscy goście są osobami dorosłymi.

<UserCountry> Pricing string

Filtruje ceny według kraju, w którym znajduje się użytkownik. Wartość to 2-literowy kod kraju, np. "US" dla Stanów Zjednoczonych lub kod regionu, np. "EU" dla Europy.

Zapytania z zdefiniowanym parametrem <UserCountry> powinny skutkować otrzymaniem wiadomości o transakcji z odpowiednim blokiem <Rates> zdefiniowanym dla zapytanego kraju.

<UserDevice> Pricing string

Filtruje ceny według typu urządzenia, na którym użytkownik prowadzi wyszukiwanie. Możliwe wartości:

  • mobile
  • desktop
  • tablet

Zapytania z zdefiniowanym parametrem <UserDevice> powinny skutkować wysłaniem wiadomości transakcyjnej z odpowiednim blokiem <Rates> zdefiniowanym dla zapytanego typu urządzenia.

Przykłady

Liczba osób

Ten przykład pokazuje zapytanie dotyczące cen na żywo dla <Occupancy> w <Context>. Zapytanie o rzeczywistą cenę dotyczy 3 osób dorosłych.

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

Szczegóły dotyczące zajętości

Poniższy przykład pokazuje zapytanie o ceny na żywo z wartością <OccupancyDetails> w ramach <Context>. Zapytanie o ceny na żywo dotyczy 4 osób, z których 2 są dziećmi. Szukana cena dotyczy rezerwacji przez gościa z USA na urządzeniu mobilnym:

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

Ten przykład pokazuje użycie dodatkowego elementu <Context> w zapytaniu o ceny na żywo.

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