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

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

<Hint>(ヒント レスポンス メッセージ)

ヒント レスポンス メッセージのルート要素。ヒント レスポンス メッセージでは、料金を変更するホテルと宿泊プランの組み合わせを指定します。Google からの Hint Request メッセージに対する応答です。

ヒント レスポンス メッセージでは、Google が前回お客様のサーバーから正常にヒント レスポンスを受信してから料金が変更されたホテルのみを指定します。

ヒント レスポンス メッセージは、次のいずれかの方法を使用して、Google が料金を変更する必要があるホテルと旅行プランを指定します。

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

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

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

これらのメソッドでは、ヒント応答メッセージに異なる構文が必要になります。

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

構文

<Hint> 要素の構文は、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>

チェックイン範囲

Hint Response メッセージ内のチェックイン範囲の構文は次のとおりです。

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

期間指定滞在

Hint Response メッセージの期間指定滞在の構文を以下に示します。

<!-- 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 チェックイン期間と期間指定旅行プラン チェックイン期間または期間指定滞在のヒント応答メッセージの期間の最初の日付。その日付も期間に含まれます。
<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 完全一致の旅行プラン 正確な旅行プランの Hint Response メッセージに含まれる <CheckinDate> 要素と <LengthOfStay> 要素のコンテナです。各 <Item> には 1 つの <Stay> のみを含めることができます。
<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 つは 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>

ヒント リクエスト メッセージのルート要素。Google はお客様のサーバーにヒント リクエスト メッセージを送信し、お客様のサーバーから正常にヒント応答を受信してから料金が変更されたホテルと宿泊プランを指定するレスポンスを要求します。

料金に変更があった場合は、指定されたホテルと旅行プランの更新された料金データを取得する <Query> が送信されます。

詳しくは、Hint Request Message をご覧ください。

構文

<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 メッセージを受信したら、リクエストされた料金情報を <Result> 要素に含めた <Transaction> メッセージで応答する必要があります。

  • コンテキスト料金を使用する場合: 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 であることを示します。Google から latencySensitive 属性を使用してクエリを送信するようにするには、テクニカル アカウント マネージャー(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 Google がメタデータ Query メッセージで客室と条件の組み合わせのメタデータを更新する必要がある 1 つ以上のプロパティ。この要素には、ホテル物件 ID を指定する <Property> 要素を 1 つ以上含めることができます。
<LastDate> Pricing Date 料金が適用される旅行プランの範囲の終了日。この要素は、プルとヒントで使用されるチェックイン期間の料金クエリでのみ使用されます。
<Nights> Pricing integer 特定の旅行プランの泊数(最大 30 泊)。
<PropertyList> Pricing Object

料金の更新が必要なホテルの 1 つ以上の 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> を使用する場合は、対応する宿泊施設や宿泊プランの追加の条件の組み合わせとして各宿泊料金を指定してください。各宿泊施設や宿泊プランには、複数定員の料金を含む <Result> ブロックを 1 つ含める必要があります。

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