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

このセクションでは、Google XML ベースの Hint Request メッセージHint Response メッセージクエリ メッセージについて説明します。

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

期間指定滞在

ヒント応答メッセージ内の期間指定滞在の構文は次のとおりです。

<!-- 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 チェックイン範囲と期間指定旅行プラン

チェックイン期間または期間指定滞在期間の最終日。ヒント応答メッセージ。日付も期間に含まれます。

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

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

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

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

完全一致の旅行プラン

次の例では、1 つの宿泊施設に対してヒント応答メッセージに複数の宿泊プランを定義しています。

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

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

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

詳しくは、ヒント要求メッセージを参照してください。

構文

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

構文

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

属性

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

子要素

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

子要素 タイプ 説明
<LastFetchTime> DateTime Google が最後にヒント リクエスト メッセージに対するヒント応答メッセージの取得に成功した時刻。

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

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

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

ヒント要求メッセージの例を次に示します。

ヒント要求メッセージ

次の例は、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 であることを示します。latencySensitive 属性を使用して Google がクエリを送信できるようにするには、テクニカル アカウント マネージャー(TAM)にお問い合わせください。

子要素

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

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

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

<FirstDate> Pricing Date 料金が適用される宿泊プランの開始日。この要素は、変更済み料金で使用するチェックイン期間の料金設定クエリでのみ使用されます。
<HotelInfoProperties> Metadata string メタデータの Query メッセージで、客室と条件の組み合わせのメタデータを更新する必要がある 1 つ以上の宿泊施設。この要素には、ホテル物件 ID を指定する 1 つ以上の <Property> 要素を含めることができます。
<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> を使用して複数の宿泊人数を照会する場合は、対応する宿泊施設/旅行プランの追加条件の組み合わせとして、各宿泊人数の料金を指定してください。各宿泊施設/旅行プランには、複数の宿泊人数の料金を含む 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>