クエリとヒントの XML リファレンス

このセクションでは、Google XML ベースの Hint Request メッセージHint Response メッセージQuery メッセージのリファレンスを示します。

<Hint>(Hint Response メッセージ)

Hint Response メッセージのルート要素。Hint Response メッセージは、料金変更が必要なホテルと旅行プランの組み合わせを指定します。これは、Google からの Hint Request メッセージに対するレスポンスです。

ヒント応答メッセージでは、Google がお客様のサーバーから正常にヒント応答を受け取った時点以降に料金が変更されたホテルのみを指定する必要があります。

ヒント レスポンス メッセージでは、Google が料金を見直すホテルと宿泊プランを指定するには、次のいずれかの方法を使用します。

  • 正確な宿泊プラン: チェックイン日と滞在日数の組み合わせ。

  • チェックイン期間: 最初のチェックイン日から最後のチェックイン日まで、チェックイン日の範囲を指定します。

  • 期間指定滞在(または期間指定旅行プラン

それぞれの方法では、Hint Response メッセージに対して異なる構文が必要になります。

詳しくは、ヒント応答メッセージをご覧ください。

構文

<Hint> 要素の構文は、Hint Response メッセージのタイプに応じて異なります。

正確な宿泊プラン

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>

チェックイン範囲

ヒント レスポンス メッセージのチェックイン範囲の構文は次のとおりです。

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

期間指定宿泊

ヒント レスポンス メッセージにおける期間指定滞在の構文は次のとおりです。

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

属性

<Hint> 要素には、省略可能な属性 id が含まれています。指定すると、この <Hint> に基づいて送信される <Query> メッセージに hintId 属性として組み込まれます。

子要素

<Hint> 要素には次の子要素があります。

子要素 必須 / 任意 タイプ ヒント レスポンス タイプ 説明
<CheckInDate> Required Date 正確な宿泊プラン 宿泊プランのチェックイン日。
<FirstDate> Required Date チェックイン範囲と期間付き旅行プラン チェックイン期間または期間指定滞在の Hint Response メッセージ期間の最初の日付。日付も範囲に含まれます。
<Item> Required Object すべて 更新するホテル/旅行プランのコンテナ。
<LastDate> Required* Date チェックイン範囲と期間付き旅行プラン

チェックイン範囲または期間指定滞在の Hint Response メッセージ期間の最終日。日付も範囲に含まれます。

* この要素は期間指定滞在では省略可能です。

<LengthOfStay> Required integer 正確な旅行プラン 宿泊プランの泊数。正の整数で表します。
<Property> Required string すべて

ホテルの ID(ホテルリストと同じ ID を使用)。1 つの <Item> ブロックで指定できる <Property> 要素の数は、Hint Response メッセージのタイプによって決まります。

  • 完全一致宿泊プラン: 最大 100 軒のホテル
  • チェックイン範囲: <QueryControl> メッセージで <MultipleItineraries>"checkin_range" に設定した場合は複数。
  • 期間指定滞在: <QueryControl> メッセージで <MultipleItineraries>"affected_dates" に設定した場合は複数。
<Stay> Required Object 正確な宿泊プラン 完全一致旅行プランのヒント応答メッセージに含まれる <CheckinDate> 要素と <LengthOfStay> 要素のコンテナ。各 <Item> には <Stay> を 1 つだけ含めることができます。
<StaysIncludingRange> Required Object 期間指定プラン 期間指定滞在のヒント応答メッセージに含まれる <FirstDate> 要素と <LastDate> 要素のコンテナ。

正確な宿泊プラン

次の例では、1 つの宿泊施設の 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>

チェックイン範囲

次の例では、料金が変更されたため再度取得する必要がある 2 つのホテルを指定しています。Google は、プロパティ 12345 と 67890 の 7 月 3 日から 7 月 6 日までのすべての宿泊プランを取得します。

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

チェックイン範囲メッセージで 1 つの <Item> で複数のプロパティを指定できるようにするには、<QueryControl><MultipleItineraries> の値を "checkin_range" に設定する必要があります。

期間指定宿泊

次の例では、期間指定宿泊の 2 つの異なる使用法(1 泊範囲と 1 泊用)を示しています。

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

期間指定宿泊メッセージで 1 つの <Item> で複数の宿泊施設を指定できるようにするには、<QueryControl><MultipleItineraries> の値を "affected_dates" に設定する必要があります。

これらの例のそれぞれについて、Google は <Query> で応答しますので、指定されたホテル/旅行プランの料金変更を含む <Transaction> で応答する必要があります。

<HintRequest>

Hint Request メッセージのルート要素。Google は、お客様のサーバーに Hint Request メッセージを送信し、Google がお客様のサーバーから正常に Hint Response を受信してから、料金が変更されたホテルと旅行プランを指定するレスポンスを求めています。

料金が変更された場合、Google は <Query> を送信し、指定されたホテルと宿泊プランの更新後の料金データを取得します。

詳しくは、Hint Request メッセージを参照してください。

構文

<HintRequest> 要素の構文は次のとおりです。

構文

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

属性

<HintRequest> 要素には属性はありません。

子要素

<HintRequest> 要素には次の子要素があります。

子要素 タイプ 説明
<LastFetchTime> DateTime Google が Hint Request メッセージに対する Hint Response メッセージの取得に最後に成功した時刻。

この時間がサーバーで最後に料金を更新した時間よりも古い場合は、どのホテルが変更されたかを示すヒント応答メッセージで応答する必要があります。

最近正常に取得されたフェッチがない場合は、固定の間隔値に設定されます(大規模なバックログによる深刻な問題を回避するため)。現在の固定間隔の値は 1, 000 秒ですが、変更される可能性があります。

詳しくは、ヒント応答メッセージをご覧ください。

次の例は、Hint Request メッセージを示しています。

Hint Request メッセージ

次の例は、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>

Query メッセージのルート要素。Query メッセージは、料金またはメタデータの更新に関する Google からのリクエストです。プル配信モードと変更済み料金の配信モードの両方で使用されます。

Query メッセージには次の 3 種類があります。

  • ライブ料金: Google は特定のユーザー リクエストに応答し、リアルタイムの料金更新をリクエストします。パートナーは Live pricing query メッセージを受信した場合、<Transaction> メッセージで応答する必要があります。このメッセージには、リクエストされた料金情報を <Result> 要素に含めます。

  • コンテキスト料金設定を適用: Google は、過去に人気があるコンテキストに基づいて料金キャッシュを更新します。With context query メッセージを受信したら、要求された料金情報を <Result> 要素に含めた <Transaction> メッセージで応答する必要があります。

  • メタデータ: Google は、指定されたホテルの客室と条件の組み合わせのメタデータの更新をリクエストします。Metadata Query メッセージを受信したら、<PropertyDataSet> 要素で客室と条件の組み合わせに関するデータを指定する <Transaction> メッセージで応答する必要があります。

詳しくは、料金のクエリについては料金の概要を、メタデータ クエリについては条件の組み合わせメタデータをご覧ください。

これら 3 つのタイプの構文を以下に示します。

構文

<Query> 要素の構文は次のとおりです。

ライブ料金

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

コンテキストあり

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

メタデータ

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

属性

<Query> 要素には latencySensitive という 1 つの属性を含めることができます。

latencySensitive 属性は省略可能です。この属性を指定して true に設定すると、クエリが Live Pricing Query であることを示します。latencySensitive 属性を含むクエリを Google に送信するには、テクニカル アカウント マネージャー(TAM)にお問い合わせください。

子要素

<Query> 要素には次の子要素があります。

子要素 クエリタイプ タイプ 説明
<AffectedNights> Pricing integer 期間指定滞在の泊数。この要素は、変更済み料金で使用する期間指定宿泊料金クエリでのみ使用されます。
<Checkin> Pricing Date 特定の価格変更の日付。
<Context> Pricing (Live Pricing Queries only) <Context> ライブ料金クエリの場合に、クエリが実行される特定のパラメータを指定します。子要素には次のようなものがあります。
  • <Occupancy>: ゲストの合計数
  • <OccupancyDetails>: 宿泊客の種類(大人、子供など)
  • <UserCountry>: ユーザーの居住国
  • <UserDevice>: ゲストがホテルの検索に使用したデバイスのタイプ(「"mobile」、「tablet」、「desktop」など)。

<Context> 要素を 1 つのリクエストで繰り返すことで、さまざまな定員のクエリが可能になります。子要素、構文、例のリストについては、<Context> をご覧ください。

<FirstDate> Pricing Date 料金が適用される宿泊プランの範囲の開始日。この要素は、変更済み料金で使用されるチェックイン期間の料金設定クエリでのみ使用されます。
<HotelInfoProperties> Metadata string 更新された客室と条件の組み合わせのメタデータをメタデータ Query メッセージで Google が要求する 1 つ以上の宿泊施設。この要素には、ホテル物件 ID を指定する <Property> 要素を 1 つ以上含めることができます。
<LastDate> Pricing Date 料金が適用される宿泊プランの期間の終了日。この要素は、プルとヒントで使用されるチェックイン期間の料金設定クエリでのみ使用されます。
<Nights> Pricing integer 特定の宿泊プランの宿泊日数(最大 30)。
<PropertyList> Pricing Object

料金の更新が必要なホテルの ID です。

<Property> 要素で各ホテルを定義します。値はホテルリストのホテル ID と一致する文字列です。例:

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

料金のクエリ

次の例は、2018 年 6 月 10 日以降の 3 泊のホテルの料金更新をリクエストする料金クエリ メッセージを示しています。

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

ライブ料金のクエリ

次の例は、応答時間の上限が 500 ミリ秒であるライブ料金クエリを示しています。

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

コンテキスト クエリあり

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

メタデータ クエリ

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

期間指定やチェックイン期間の料金クエリなどのその他の例については、Query メッセージの例をご覧ください。

<Context>

<Context> 要素は、ゲストの人数とタイプ、ユーザーの国、ユーザー デバイスなど、Live pricing query に関する情報を記述します。

ユーザーの国やデバイスが異なる場合、複数の <Context> が使用されることはありません。複数の <Context> を使用して複数の定員をクエリする場合は、対応する宿泊施設/旅行プランの追加の条件の組み合わせとして、各定員の料金を指定します。各宿泊施設/旅行プランには、複数定員の料金を含む 1 つの <Result> ブロックを設定します。

<Context> クエリのレスポンスの詳細については、<OccupancyDetails> をご覧ください。

構文

<Context> 要素の構文は次のとおりです。

構文

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

子要素

<Context> 要素には次の子要素があります。

子要素 クエリタイプ タイプ 説明
<Occupancy> Pricing integer ゲストの総数を指定します。

必須ではありませんが、<Occupancy> を含むクエリでは、クエリされた <Occupancy> ごとに適切な条件の組み合わせが定義されたトランザクション メッセージが返されます。

注:<Occupancy> が常にクエリに表示されるとは限りません。その場合は、全定員の料金を返す必要があります。

<OccupancyDetails> Pricing Object 先頭に <Occupancy> が付きます。以下を含むタイプ別にゲストを指定します。

  • <NumAdults>: 大人の宿泊客の数
  • <Children><Child="age">: 子供のゲスト(通常は 0 ~ 17 歳)を指定します。必要に応じて、それぞれの子供の年齢を指定します。
  • 必須ではありませんが、<OccupancyDetails> を含むクエリでは、クエリされた <Occupancy> ごとに適切な条件の組み合わせが定義されたトランザクション メッセージが返されます。

    注: <OccupancyDetails> が常にクエリに表示されるとは限りません。そのような場合、宿泊客全員が大人であるとみなす必要があります。

<UserCountry> Pricing string

ユーザーの居住国で料金をフィルタします。値は 2 文字の国コード(米国の場合は “US” など)または地域コード(例: ヨーロッパの場合は "EU")です。

<UserCountry> が定義されたクエリでは、クエリ対象の国に対して適切な <Rates> ブロックが定義されたトランザクション メッセージが返されます。

<UserDevice> Pricing string

ユーザーが検索しているデバイスのタイプで料金をフィルタします。 考えられる値は次のとおりです。

  • mobile
  • desktop
  • tablet

<UserDevice> が定義されたクエリでは、クエリ対象のデバイスタイプに対して適切な <Rates> ブロックが定義されたトランザクション メッセージが返されます。

利用率

次の例は、<Context> 内の <Occupancy> に対するライブ料金クエリを示しています。ライブ料金クエリは 3 人の大人のゲストを対象にしています。

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

定員の詳細

次の例は、<Context> 内に <OccupancyDetails> を使用したライブ料金クエリを示しています。ライブ料金のクエリは、4 人のゲスト(そのうち 2 人は子供)に対するクエリです。モバイル デバイスからの米国のゲスト予約に適用される料金を検索します。

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

複数のコンテキスト

ライブ料金クエリで追加の <Context> 要素を使用する例を次に示します。

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