料金と客室在庫(トランザクション)XML リファレンス

このページでは、XML ベースのトランザクション メッセージのリファレンスを紹介します。

<Transaction>

トランザクション メッセージのルート要素は <Transaction> です。客室とパッケージ、および客室とパッケージの料金と空室状況に関する記述情報のコンテナです。

<Transaction> 要素は、トランザクション メッセージの XML 階層の次の場所に表示されます。

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

<Transaction> をルート要素として使用するメッセージには、少なくとも 1 つの子要素が必要です。トランザクション メッセージには、メッセージの合計サイズが 100 MB を超えない限り、任意の数の子要素を含めることができます。

構文

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">

  <!-- Defines data about a room or package (Room Bundle) -->
  <PropertyDataSet>
    ...
  </PropertyDataSet>

  <!-- Updates/sets prices and availability for rooms and Room Bundles -->
  <!-- (Also removes itineraries from inventory) -->
  <Result>
    ...
  </Result>

</Transaction>

属性

<Transaction> 要素には次の属性があります。

属性 必須かどうか タイプ 説明
id Required 文字列 各トランザクション メッセージの一意の識別子。
partner Optional string トランザクション メッセージの対象となるパートナー アカウント。これは通常、バックエンドで複数のパートナー アカウントに料金フィードを提供する場合に使用します。この文字列値は、Hotel Center の [アカウント設定] ページに表示されている「パートナーキー」の値です。
timestamp Required DateTime

Transaction メッセージが送信された時刻。

過去 24 時間以内にタイムスタンプを持つメッセージはすべて処理され、そうでないメッセージは破棄されます。

メッセージは受信順ではなく、timestamp の順序で処理されます。たとえば、タイムスタンプが 2019-05-03 14:10:00 であるメッセージの後に受信したタイムスタンプが 2019-05-03 14:09:00 の料金の更新は、引き続き順番に処理され、タイムスタンプが 2019-05-03 14:10:00 のメッセージの料金が使用されます。

子要素

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

子要素 必須かどうか タイプ 説明
<PropertyDataSet> Optional* <PropertyDataSet>

特定の客室と条件の組み合わせを記述します。通常、この要素を個別のトランザクション メッセージ内で使用して、条件の組み合わせの共有値を定義し、トランザクション メッセージのサイズを削減します。

<Result> Optional* <Result>

客室の宿泊プランの料金データ、または条件の組み合わせと宿泊施設の他の客室のタイプを定義する <RoomBundle> 要素。<Result> 要素を使用して、広告枠から旅行プランを削除することもできます。

* <PropertyDataSet> または <Result> の少なくとも 1 つが必要です。

客室データ

次の例では、トランザクション メッセージに客室データを定義します。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

料金データ

次の例では、トランザクション メッセージで料金データを定義します。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
  </Result>
</Transaction>

1 泊の料金

次の例では、2023 年 6 月 7 日から 1 ~ 7 泊の料金データを定義しています。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">209.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">419.98</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>3</Nights>
    <Baserate currency="USD">614.97</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>4</Nights>
    <Baserate currency="USD">819.96</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>5</Nights>
    <Baserate currency="USD">999.95</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>6</Nights>
    <Baserate currency="USD">1193.94</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>7</Nights>
    <Baserate currency="USD">1259.93</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
</Transaction>


基本料金と限定価格

次の例は、基本料金と限定価格を含む Transaction メッセージを示しています。

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

広告枠を削除

次の例では、ホテルの複数の在庫(複数の異なる日付で 1 泊する)を在庫から削除します。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-23</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-24</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <!---Sending <Baserate> is optional with <Unavailable> -->
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-25</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
</Transaction>

<PropertyDataSet>

<Transaction> メッセージに含まれる客室とパッケージ(または条件の組み合わせ)の情報のコンテナ。ホテルに設定された値は、パートナーに設定された値をオーバーライドします。 この情報は、料金の更新データを送信するたびに定義しなくても済むように、Google が保存します。

<PropertyDataSet> 要素は、トランザクション メッセージの XML 階層の次の場所に表示されます。

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>  // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

詳しくは、条件の組み合わせのメタデータをご覧ください。

構文

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    <!-- (Required) ID that matches the Hotel List Feed -->
    <Property>hotel_ID</Property>

    <!-- (Optional) Defines metadata about a room -->
    <RoomData>
      ...
    </RoomData>

    <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) -->
    <PackageData>
      ...
    </PackageData>
  </PropertyDataSet>
  ...
</Transaction>

属性

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

子要素

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

子要素 必須かどうか タイプ 説明
<PackageData> Optional* <PackageData> 条件の組み合わせを記述します。このデータはパートナーとホテルに関連付けられますが、旅行プランには関連付けられていません。この要素は <RoomData> に似ていますが、客室の物理的な説明に含まれない設備や条件を記述します。

料金の更新ではパッケージ ID を参照します。

詳しくは、条件の組み合わせのメタデータをご覧ください。

<Property> Required string 関連データが適用されるホテルの ID。この要素の値は、ホテルリスト フィードのリスティング <id> と一致する文字列である必要があります。
<RoomData> Optional* <RoomData> 客室の説明です。このデータはパートナーとホテルに関連付けられますが、旅行プランには関連付けられていません。

料金の更新では客室 ID を参照します。

* <PackageData> または <RoomData> の少なくとも 1 つが必要です。

客室とパッケージのデータ

次の例は、<PropertyDataSet> 内の客室データとパッケージ データの両方を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

この客室と条件の組み合わせの料金と空室状況を送信する際は、料金メッセージで客室 ID とパッケージ ID を参照します。その結果、メッセージのサイズが大幅に削減され、データの重複が原因で発生する可能性のあるエラーの量も削減されます。詳しくは、条件の組み合わせのメタデータをご覧ください。

<RoomData>

客室に関する旅行プランに依存しないメタデータを定義します。さらに、条件の組み合わせも定義します(条件の組み合わせは客室と追加の設備情報を指すため)。<RoomData> を使用すると、料金フィード内で説明データの繰り返しを減らすことができます。

<RoomData> 要素は、トランザクション メッセージの XML 階層の次の場所に表示されます。

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

<RoomData> 要素には、パートナーとホテルに関連付けられた情報が含まれますが、旅行プランには関連付けられません。これは旅行プラン以外のすべてのデータを対象としています。

<RoomData> 要素は <PackageData> に似ていますが、パッケージの設備や条件ではなく、物理的な客室を表します。条件の組み合わせの詳細を指定するには、<RoomData><PackageData> を組み合わせて使用します。パッケージに含まれない個々の部屋の場合は、<RoomData> のみを使用します。

同じ客室や条件の組み合わせに対して <RoomData> 要素と <PackageData> 要素の両方を定義できます。Google が検索結果にその客室やパッケージを表示する際に、両方の説明がハイフンで区切られて表示されます。

詳しくは、条件の組み合わせのメタデータをご覧ください。

構文

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    ...
    <RoomData>
      <RoomID>room_ID</RoomID>

      <Name>
        <Text text="room_name" language="language_code"/>
        ...
      </Name>

      <Description>
        <Text text="room_description" language="language_code"/>
        ...
      </Description>

      <Capacity>max_number_of_occupants</Capacity>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults, children, or seniors --></OccupancyDetails>
      <OccupancySettings>
        <MinOccupancy>min_number_of_occupants</MinOccupancy>
        <MinAge>min_age_of_occupants</MinAge>
      </OccupancySettings>

      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      <RoomFeatures>
        ...
      </RoomFeatures>
    </RoomData>
    ...
  </PropertyDataSet>
</Transaction>

属性

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

子要素

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

子要素 必須かどうか タイプ 説明
<Capacity> Optional integer 客室が物理的に収容できる最大宿泊客数。客室の場合、収容人数は定員以上になります。

指定する場合、この値は <Occupancy> 要素の値(特定の客室の宿泊客数)以上である必要があります。たとえば、大規模なスイートの <Capacity> は 6 ですが、その <Occupancy> は 4 です。

<Capacity> の値は 1 ~ 20 の正の整数にする必要があります。

<Description> Optional Object 客室の詳細な説明。この要素には、他の要素や <Name> 要素では説明されていない情報を含める必要があります。客室の説明をすべて大文字で記述することはできません。

<Description> 要素では、次の 2 つの必須属性を持つ単一の子要素 <Text> を使用します。

  • text: 部屋の詳細な説明。
  • language: 2 文字の言語コード(例: fr)。

広告または無料の予約リンクが表示される言語ごとに、個別の <Text> 要素を使用します(language 属性の値は異なります)。

次の例は、フランス語と英語の客室の説明を示しています。

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string 客室のカテゴリの名前。この値は、ホテルのランディング ページ(以前の POS)に表示される値と一致している必要があります。この要素の値をすべて大文字に設定しないでください。

この要素では、次の 2 つの必須属性を持つ単一の子要素 <Text> を使用します。

  • text: 部屋の名前。
  • language: 2 文字の言語コード(例: fr)。

広告または無料の予約リンクが表示される言語ごとに、個別の <Text> 要素を使用します(language 属性の値は異なります)。

次の例は、フランス語と英語の客室名の客室を示しています。

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer 客室が想定する宿泊客の最大数。 たとえば、大スイートは物理的に 6 人のゲストを収容できる場合があります(収容人数 = 6)が、4 人までのゲストを想定しています。

この値は、<Capacity> 要素(客室が物理的に収容できる人数)以下の値にする必要があります。

<Occupancy> の値は 1 ~ 99 の正の整数にする必要があります。

<Occupancy> には、宿泊客の種類(大人または子供)を指定する <OccupancyDetails> を含めることができます。子要素の構文と説明については、<OccupancyDetails> をご覧ください。

<OccupancySettings> Optional Object 客室の占有率の要件を制限または変更できる設定。

<OccupancySettings> 要素では、次の子要素を使用します。

  • <MinOccupancy>: 部屋に滞在できる最小宿泊客数。たとえば、2 に設定した場合、この会議室を 1 人のゲスト用に予約することはできません。

    <MinOccupancy> の値は 1 ~ 99 の正の整数にする必要があります。

  • <MinAge>: 宿泊客全員の最低年齢。たとえば、18 に設定した場合、ゲスト全員が 18 歳以上のグループに対してのみ予約できます。

    <MinAge> の値は 0 ~ 99 の正の整数にする必要があります。

<OccupancySettings>
  <MinOccupancy>2</MinOccupancy>
  <MinAge>16</MinAge>
</OccupancySettings>

すべての子要素を含める必要はありません。

<PhotoURL> Optional Object 指定された客室または条件の組み合わせの写真の URL と説明(省略可)。1 つの客室または条件の組み合わせに対して複数の <PhotoURL> を指定できます。写真の URL はそれぞれ個別の <PhotoURL> に含める必要があります。

この要素では、次の子要素を使用します。

  • <URL>: 写真の場所を指定します。ロケーションは(ファイアウォールの内側ではなく)公開され、プロトコル(https:// など)が含まれている必要があります。<PhotoURL> ごとに 1 つの <URL> のみを使用します。
  • <Caption>: 写真の説明を定義します。この要素は、単一の子要素 <Text> を使用します。この要素には、textlanguage の 2 つの必須属性があります。text 属性はキャプションで、language 属性は en などの 2 文字の言語コードを指定します。

例:

<PhotoURL>
  <URL>https://www.example.com/static/bar/image1234.jpg</URL>
  <Caption>
    <Text text="A bright and breezy way to enjoy your mornin'
      cuppa tea." language="en"/>
    <Text text="Une façon lumineuse et aérée pour profiter
      de votre journée tasse de thé." language="fr"/>
  </Caption>
</PhotoURL>
<PhotoURL>
  <URL>https://www.foo.com/static/bar/image5678.jpg</URL>
  <Caption>
    <Text text="Or, perhaps you prefer coffee." language="en"/>
    <Text text="Ou peut-être préférez-vous le café." language="fr"/>
  </Caption>
</PhotoURL>
<RoomFeatures> Optional <RoomFeatures> 客室の設備や機能に関する情報が含まれています。
<RoomID> Required string 客室の一意の ID。この ID を使用して、客室データを料金の更新データ内の <Result> ブロックと照合します。詳しくは、条件の組み合わせのメタデータをご覧ください。(この ID を使用して、インラインで客室データを定義するときに、1 つのトランザクション メッセージで共通の客室の定義を参照することもできます)。

客室データ

次の例では、客室データを定義します。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

客室とパッケージのメタデータ

次の例では、客室とパッケージのメタデータを定義します。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

複数の条件の組み合わせ

次の例では、複数の条件の組み合わせに対して客室とパッケージのメタデータを定義しています。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<RoomFeatures>

部屋で見つけた対象物を定義します。

<RoomFeatures> 要素は、トランザクション メッセージの XML 階層の次の場所に表示されます。

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
            + <RoomFeatures>

構文

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    ...
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="width"/>
             <Length unit="cm" number="length"/>
           </Bed>
           <!-- Include with any additional beds. -->
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>[shared|private]</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>[smoking|non_smoking]</Smoking>
        <BathAndToilet relation="[together|separate]">
          <Bath bathtub="[false|true]" shower="[false|true]"/>
          <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <!-- (Optional) Defines the type of views from the room. -->
          <!-- Example: <OceanView/> -->
        </Views>

      </RoomFeatures>
      ...
    </RoomData>
    ...
  </PropertyDataSet>
</Transactions>

属性

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

子要素

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

子要素 必須かどうか タイプ 説明
<JapaneseHotelRoomStyle> Optional enum

日本のホテルの客室のスタイルを示します。

指定できる値は次のとおりです。

  • western: ベッドを備えた洋風の部屋。
  • japanese: 布団を備えた和風の部屋。
  • japanese_western: ベッドと布団を備えた和洋室。
<Beds> Optional Object チャットルーム内の数だけ <Bed> を含めます。日本の布団はここではカウントされません。

<Bed> には次の属性があります。

  • size(省略可): 有効な値は singlesemi_doubledoublequeenking です。
<Bed> には次の子要素があります。
  • <Width>(省略可): ベッドの幅を指定します。属性 unit には値 cm を指定し、属性 number にはベッドの幅(整数 cm)を指定する必要があります。
  • <Length>(省略可): ベッドの長さを指定します。 属性 unit には値 cm を指定し、属性 number にはベッドの長さ(センチメートル単位)を指定します。
例:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty この部屋がスイートの場合は、この要素を指定します。
<Capsule> Optional empty カプセルルームの場合は、この要素を指定します。
<Roomsharing> Optional enum この部屋が所有者や他のゲストなど、他の入居者と共有されているかどうか。有効な値は sharedprivate です。
<Outdoor> Optional empty 壁、配管、空調が固定されていない屋外宿泊施設の場合は、この要素を指定します。たとえば、ホテルの客室は屋外宿泊施設ではありません。一方、宿泊客がテントに滞在するキャンプ場や RV 車を持ち込む RV パークは屋外宿泊施設です。
<MobilityAccessible> Optional empty バリアフリー対応の会議室の場合はこの要素を提供してください。
<Smoking> Optional enum 禁煙ルームか喫煙ルームか。有効な値は non_smokingsmoking です。
<BathAndToilet> Optional Object 客室のバスとトイレに関する情報が含まれます。

属性は次のとおりです。

  • relation(省略可): 浴室とトイレを接着させる方法を表します。有効な値は together(バスとトイレが同じ部屋(たとえばバスルーム)に隣接して配置されている)と separate(バスとトイレにそれぞれ専用のスペースがある)です。客室にバスとトイレの両方がない場合は、この属性を設定しないでください。

この要素はオプションで次の子要素を取ります。

  • <Bath>(省略可): この要素が存在することは、部屋に浴室があることを示します。

    属性は次のとおりです。

    • bathtub(省略可): 浴室にバスタブがあることを示します。有効な値は 0(または false)と 1(または true)です。
    • shower(省略可): 浴室にシャワーがあることを示します。有効な値は 0(または false)と 1(または true)です。
  • <Toilet>(省略可): この要素の存在は、この部屋にトイレがあることを示します。

    属性は次のとおりです。

    • electronic_bidet(省略可): トイレに電子ビデがあることを示します。有効な値は 0(または false)と 1(または true)です。
    • mobility_accessible(省略可): トイレがバリアフリーであることを示します。有効な値は 0(または false)と 1(または true)です。

例:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty この部屋に貸切露天風呂がある場合は、この要素を指定します。
<AirConditioning> Optional empty この部屋にエアコンが備わっている場合は、この要素を指定します。
<Balcony> Optional empty 客室にバルコニーまたはベランダがある場合は、この要素を提供します。
<Views> Optional Object 有効なオプションは次のとおりです。

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

JapaneseHotelRoomStyle にはデフォルト値がありません。値を省略しても XML エラーは発生しませんが、ユーザーが客室のスタイルやベッドで絞り込んだ場合、リスティングは検索結果に表示されません。

シングルベッド 2 台

次の例は、<RoomFeatures> の使用方法を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two single beds -->
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>private</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>non_smoking</Smoking>
        <BathAndToilet relation="separate">
          <Bath bathtub="1" shower="1"/>
          <Toilet electronic_bidet="1" mobility_accessible="1"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <LakeView/>
          <MarinaView/>
          <BeachView/>
          <ForestView/>
          <MountainView/>
          <NatureView/>
        </Views>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

ダブルベッド 2 台

以下は、double ベッド 2 台を備えた western スタイルの和室の例です。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two double beds-->
          <Bed size="double"></Bed>
          <Bed size="double"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>


和風のベッドなし

以下は、ベッドのない和風の部屋の例です。japanese スタイルの客室では、ベッド情報は必要ありません。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

ベッドのある和洋風料理

以下は、king サイズのベッドを備えた japanese_western スタイルの部屋の例です。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

パートナーが japanese_western 室のベッド数に関する情報を確認できない場合は、次の例のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

<PackageData>

プロパティの条件の組み合わせについて、旅行プランに依存しないメタデータを定義します。この要素には、パートナーとホテルに関連付けられた情報が含まれますが、旅行プランには関連付けられません。旅行プラン以外のすべてのデータを一度だけ定義し、それを旅行プランのデータから参照することが意図されています。

<PackageData> 要素は、トランザクション メッセージの XML 階層の次の場所に表示されます。

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

<PackageData> 要素は <RoomData> に似ていますが、客室に関する物理的な説明には含まれていない料金の特徴と条件を記述します。<RoomData><PackageData> を組み合わせて使用することで、条件の組み合わせと料金特典の詳細を指定できます。パッケージに含まれない個々の部屋の場合は、<RoomData> のみを使用します。

同じ客室や条件の組み合わせに対して <RoomData> 要素と <PackageData> 要素の両方を定義できます。Google が検索結果にその客室やパッケージを表示する際に、両方の説明がハイフンで区切られて表示されます。

プロパティの単一の <PackageData> 要素を更新する場合は、プロパティの <PackageData> 要素と <RoomData> 要素をすべて更新する必要があります。各 <PropertyDataSet> はプロパティに関するすべてのデータとみなされ、既存のデータがすべて上書きされます。

詳しくは、条件の組み合わせのメタデータをご覧ください。

構文

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    <PackageData>
      <PackageID>package_ID</PackageID>
      <Name>
        <Text text="package_name" language="language_code"/>
        ...
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
        ...
      </Description>
      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails><!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
      <!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>
      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      ...
      <Meals>
        <Breakfast
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
        <Dinner
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
      </Meals>
      <CheckinTime>checkin_time</CheckinTime>
      <CheckoutTime>checkout_time</CheckoutTime>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Special Rewards">
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum">
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <!-- a PackageID with a MilesIncluded rate feature -->
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
       <Text text="Room with Bundled Miles" language="en">
      </Name>
      <ChargeCurrency>hotel </ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000 </NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines">
        </Provider>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

属性

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

子要素

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

子要素 必須かどうか タイプ 説明
<BreakfastIncluded> Optional boolean このパッケージの料金に朝食が含まれるかどうかを指定します。 有効な値は 0(または false)と 1(または true)です。

<BreakfastIncluded> ではなく <Meals> を使用することをおすすめします。

<ChargeCurrency> Optional enum ユーザーが予約をいつ、どこで支払うか。この要素の構文は、<Result><ChargeCurrency> と同じです。

デフォルト値は web です。

<CheckinTime> Optional Time 最も早いチェックイン時間。 時間はホテルの現地時間の 24:00 未満である必要があります。
<CheckoutTime> Optional Time 最も遅いチェックアウト時刻(ホテルの現地時間)。
<Description> Optional Object パッケージの詳細な説明。この要素には、他の要素や <Name> 要素では説明されていない情報を含める必要があります。客室の説明をすべて大文字で記述することはできません。

<Description> 要素では、textlanguage という 2 つの必須属性を持つ単一の子要素 <Text> を使用します。次の例のように、text 属性は説明、language 属性は 2 文字の言語コードを指定します。

<Description>
  <Text text="Two breakfast buffet certificates for
    each night of stay." language="en"/>
  <Text text="Deux certificats petit-déjeuner buffet
    pour chaque nuit de séjour." language="fr"/>
</Description>
<InternetIncluded> Optional boolean パッケージに無料のインターネット アクセスが含まれている場合は、他のパッケージにはそのアメニティが含まれません。すべての客室に無料のインターネット接続を提供しているホテルの場合、条件の組み合わせに対してこの要素を設定しないでください。この要素は、客室内の有線インターネットや客室では利用できないワイヤレス インターネットには適用されません。有効な値は 0(または false)と 1(または true)です。
<Meals> Optional Object このパッケージの食事に関する情報が含まれます。

<Meals> 要素では、次の属性を持つ 2 つのオプションの子要素 <Breakfast><Dinner> を使用します。

  • included(必須): 料金に朝食と夕食が含まれている場合は 1(または true)に設定します。それ以外の場合は、0 または false に設定します。
  • in_room(省略可): 宿泊客が滞在した部屋で朝食と夕食を提供できる場合は 1(または true)に設定します。それ以外の場合は 0(または false)に設定します。
  • in_private_space(省略可): 宿泊客が他のゲストとの接触を避けられるスペース(滞在する部屋を除く)で朝食と夕食を提供する場合は、1(または true)に設定します。それ以外の場合は、0(または false)に設定します。
  • buffet(省略可): 朝食と夕食がビュッフェで提供される場合は 1(または true)に設定します。それ以外の場合は 0(または false)に設定します。

オプションの属性は、included が true の場合にのみ使用されます。

食事フィルタ(no mealsbreakfast onlydinner onlybreakfast and dinner)を機能させるには、included 属性で <Breakfast><Dinner> の両方を指定する必要があります。

<Name> Required string パッケージの名前。この値は、ホテルのランディング ページに表示される値と一致している必要があります。この要素の値をすべて大文字に設定しないでください。

この要素では、textlanguage の 2 つの属性を持つ単一の子要素 <Text> を使用します。次の例のように、text 属性は説明、language 属性は 2 文字の言語コードを指定します。

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer 条件の組み合わせが対象とする宿泊客の最大数。 たとえば、大スイートは物理的に 6 名まで収容できますが、対象は 4 名までです。

この値は、<Capacity> 要素(客室が物理的に収容できる人数)以下の値にする必要があります。

<Occupancy> の値は 1 ~ 99 の正の整数にする必要があります。

この要素を <RoomBundle><PackageData> の両方で指定すると、<RoomBundle> の値が優先されます。

:

<Occupancy> には、宿泊客の種類(大人または子供)を指定する <OccupancyDetails> を含めることができます。子要素の構文と説明については、<OccupancyDetails> をご覧ください。
<PackageID> Required string

パッケージの一意の ID。この ID を使用して、条件の組み合わせのデータと料金の更新内容の <Result> ブロックを照合します。詳しくは、条件の組み合わせのメタデータをご覧ください。

(この ID を使用して、条件の組み合わせデータをインラインで定義するときに、1 つのトランザクション メッセージ内で使用される共通の条件の組み合わせの定義を参照することもできます)。

<ParkingIncluded> Optional boolean 条件の組み合わせに無料の駐車場が含まれているかどうか(それ以外の場合、駐車場はこのホテルの有料サービスになる場合)。無料駐車場を提供しているホテルの場合は、この要素の値を指定しないでください。

有効な値は 0(または false)と 1(または true)です。デフォルト値は false です。

<PhotoURL> Optional Object <RoomData><PhotoURL> と同じですが、パッケージ(食事の写真など)用です)。
<Refundable> Optional Object 全額払い戻し可能であること、またはキャンセル料無料として料金を掲載できるようにします。指定しない場合、払い戻しに関する情報は表示されません。 <PackageData> レベルの払い戻しポリシーは、<Result> レベルの払い戻しポリシーよりも優先されます。<Rates> レベルの払い戻しポリシーは、<PackageData> レベルの払い戻しポリシーよりも優先されます。また、トランザクション メッセージ スキーマを直接変更せずに、代替オプションを通じて払い戻し可能な料金をユーザーに強調することもできます。これらのオプションについて詳しくは、払い戻し可能な料金に関するポリシーをご覧ください。

次の例は、すべての属性が設定された <Refundable> 要素を示しています。

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

注: すべての属性を設定することをおすすめします。1 つ以上の属性が設定されていない場合、フィード ステータスの警告メッセージが生成されます。

属性を設定しない場合、料金は払い戻し可能として表示されません。属性は次のとおりです。

  • available: (必須)料金で全額払い戻しが可能かどうかを示すには 1 または true に設定します。それ以外の場合は 0 または false に設定します。
  • refundable_until_days: (availabletrue の場合は必須)全額払い戻しを要求できるチェックイン日の日数を指定します。refundable_until_days の値は 0 ~ 330 の整数にする必要があります。
  • refundable_until_time: (availabletrue の場合は強く推奨します)全額払い戻しのリクエストに応じる最も遅い時刻をホテルの現地時間で指定します。これに refundable_until_days を組み合わせることで、たとえば「チェックインの 2 日前の午後 4 時まで払い戻しが可能」のように指定できます。refundable_until_time が設定されていない場合、値はデフォルトで午前 0 時に設定されます。

    この属性の値は Time 形式を使用します。

属性を設定する際は、次の点に注意してください。

  • available または refundable_until_days が設定されていない場合、料金は払い戻し可能として表示されません。
  • available0 または false の場合、他の属性は無視されます。他の属性のいずれかまたは両方が設定されていても、料金は払い戻し可能として表示されません。
<MembershipBenefits Included> Optional boolean 料金には、滞在期間中のエリート ステータス特典が含まれます。次のパラメータが含まれます。
  • ProgramName: エリート ステータス プログラムの名前
  • ProgramLevel: プログラムのレベル。例: 「ゴールド」。
  • NightlyValue (optional): 特典の 1 泊の料金。
<CarRentalIncluded> Optional boolean 料金には滞在期間中の無料レンタカーが含まれます。
<MilesIncluded>> Optional boolean 料金にはマイレージのマイルが含まれます。パラメータは次のとおりです。
  • NumberofMiles: 旅行プランあたりのマイル数。
  • Provider: マイレージはマイレージを提供します。
<OnPropertyCredit> Optional boolean 料金には施設内のクレジット(F&B、リゾート、スパなど)が含まれます。パラメータ:
  • Amount: 旅行プランあたりのクレジットの金額(現地通貨)。
<AirportTransportationIncluded> Optional Object 料金には近隣の空港との無料送迎が含まれます。オプションの direction 属性は、移動の方向を指定します。有効な値は次のとおりです。
    from: 空港から宿泊施設までの移動手段。方向が指定されていない場合は、これがデフォルト値です。to: 宿泊施設から空港までの送迎サービスを提供しています。round_trip: 空港間の交通手段を提供します。

単一条件の組み合わせ

次の例では、宿泊人数 2 人(大人 1 人と子供 1 人)で 1 つの条件の組み合わせを定義し、朝食が含まれています。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>1</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <PackageID>P54321</PackageID>
      <Name>
         <Text text="Breakfast Included" language="en"/>
         <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Two certificates for continental
          breakfast will be provided." language="en"/>
        <Text text="Deux certificats pour le petit déjeuner
          continental seront fournis." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

客室とパッケージのメタデータ

次の例では、客室とパッケージのメタデータを定義します。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

複数の条件の組み合わせ

次の例では、複数の条件の組み合わせに対して客室とパッケージのメタデータを定義しています。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>


条件の組み合わせ

次の例では、料金情報を含む条件の組み合わせに対して客室とパッケージのメタデータを定義しています。

<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
     ...
    </RoomData>
<!-- definitions of PackageData types including rate features -->
    <PackageData>
      <PackageID>room_with_addl_benefits</PackageID>
      <Name>
        <Text text="Acme Hotels 2017 Promotion Package" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <BreakfastIncluded>1</BreakfastIncluded>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Marriott Rewards"/>
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum"/>
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
        <Text text="Room with Bundled Miles" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000</NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines"/>
        </Provider>
      </MilesIncluded>
      <AirportTransportationIncluded direction="from"/>
    </PackageData>
  </PropertyDataSet>

<!-- The actual list of prices -->
  <Result>
…
  </Result>
</Transaction>

食事と写真

次の例では、食事、写真、チェックイン時間とチェックアウト時間の客室とパッケージのメタデータを定義しています。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Meals Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <!-- Guests can choose to have breakfast in their room or in another
        space to avoid contact with other guests. -->
        <Breakfast included="1" in_room="1" in_private_space="1"/>
        <Dinner included="1" buffet="1"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

朝食

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <Breakfast included="true"/>
        <!-- Dinner not included needs to be explicitly specified -->
        <Dinner included="false"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<Result>

<Transaction> メッセージに含まれる、料金と在庫状況の更新データのコンテナ。

<Result> 要素は、トランザクション メッセージの XML 階層の次の場所に表示されます。

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

<Result> を使用して、客室料金を設定または更新し、利用可能な広告枠を定義します。この要素で定義されるアイテムは通常、<PackageData><RoomData> で定義された客室やパッケージに関する旅行プランに依存しないメタデータ(説明や設備のセットなど)を参照します。

通常、料金の更新を含むトランザクション メッセージは頻繁に送信されます。具体的な方法と頻度は、配信モードによって異なります。

広告枠の削除で説明されているように、トランザクション メッセージで <Result> を使用して旅行プランを削除できます。トランザクション メッセージを使用して料金と空室状況を更新する方法について詳しくは、広告枠の追加と更新をご覧ください。

1 つのトランザクション メッセージには、メッセージのサイズが 100 MB を超えない限り、任意の数の <Result> 要素を含めることができます。

構文

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <!-- Required -->
    <Property>hotel_ID</Property>
    <!-- Required -->
    <Checkin>YYYY-MM-DD</Checkin>
    <!-- Required -->
    <Nights>number_of_nights</Nights>

    <Baserate currency="currency_code">price</Baserate>
    <!-- Only required when <Baserate> contains a real price -->
    <Tax currency="currency_code">tax_amount</Tax>
    <!-- Only required when <Baserate> contains a real price  -->
    <OtherFees currency="currency_code">fee_amount</OtherFees>
    <Refundable available="[false|true]" refundable_until_days="number_of_days"
      refundable_until_time="time"/>

    <RoomID>room_ID</RoomID>
    <PackageID>package_ID</PackageID>
    <ExpirationTime>expiration_time</ExpirationTime>
    <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>

    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <!-- For Baserate, occupancy value must be greater than or equal to 2.
         If a value is not provided for occupancy, it defaults to 2. -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

    <AllowablePointsOfSale>
      <PointOfSale id="landing_page_identifier"/>
      ...
    </AllowablePointsOfSale>

    <Custom[1-5]>custom_value</Custom[1-5]>
  </Result>
  ...
  </Transaction>

属性

<Result> 要素には次の属性があります。

属性 必須かどうか タイプ 説明
mergeable Optional boolean デフォルトでは、特定のホテルと旅行プランのペアの新しい料金は、Google のキャッシュに存在する以前の(期限切れでない)料金を上書きします。mergeable 属性を使用すると、以前の料金情報を削除せずに、追加の料金を Google のキャッシュに保存できます。コンテキストを使用したライブ料金クエリのレスポンスでは、トランザクション メッセージのレスポンスに関係なく、この属性は常に true に設定されます。

子要素

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

子要素 必須かどうか タイプ 説明
<AllowablePointsOfSale> Optional Object ホテルの対象となる 1 つ以上のランディング ページ。ランディング ページは、エンドユーザーによる予約プロセスを処理できるウェブサイトです。特定のランディング ページを明示的に含める(および他のランディング ページを除外する)には、ランディング ページ ファイル内の <PointOfSale> 要素の id 属性と一致する <AllowablePointsOfSale> 要素を 1 つ以上追加します。

この要素を含めない場合、ランディング ページ ファイルで定義されているすべてのランディング ページが、客室の予約に使用できるとみなされます。詳しくは、ランディング ページ ファイルの構文をご覧ください。

<Baserate> Optional float

滞在先の部屋の料金。この要素の値は、以下を反映している必要があります。

  • 個室の場合は、提供している最安の 2 人部屋の料金を設定します。
  • 共有ルームの場合は、空のままにして <RoomBundle> を使用します。
  • 1 泊の平均宿泊料金ではなく、滞在期間の合計日数。

旅行プランで客室が利用できない場合は、<Baserate> を省略するか、-1 に設定し、<Unavailable> を空室のない既知の理由とともに指定する必要があります。

条件の組み合わせを削除するには、条件の組み合わせを削除するの手順をご覧ください。

<Baserate> には、カンマ(,)やピリオド(.)などの数字のグループ化記号を含めることはできません。小数点の区切りには、必ず小数点としてピリオド(.)を使用します。たとえば、$1,200.40 は次のように表します。

<Baserate currency="USD">1200.40</Baserate>

<Baserate> 要素では、次のオプションの属性を使用できます。

  • all_inclusive: この料金に税金と手数料が含まれているかどうかを示すブール値。通常、米国とカナダのエンドユーザーの場合、この値を false に設定し、<Tax> 要素と <OtherFees> 要素の値を指定します。すべて込みの料金を使用していて、米国とカナダのユーザーを対象に税金と手数料を分けた料金でなければ、リスティングに表示されない可能性があります。

    その他のエンドユーザーの場合、通常は基本料金に税金と手数料を含めて、all_inclusive 属性の値を true に設定します。詳しくは、税金と手数料のポリシーをご覧ください。

    デフォルト値は false です。

  • currency: 3 文字の通貨コード。たとえば、米ドルの場合は USD です。
<ChargeCurrency> Optional enum ユーザーが予約をいつ、どこで支払うか。この要素は、宿泊料金の <Result> 要素や条件の組み合わせの <PackageData> ブロックのトランザクション メッセージで使用できます。

指定できる値は次のとおりです。

  • web: ユーザーは予約時にオンラインで請求されます。これはデフォルト値です。実際のランディング ページは、 ランディング ページのファイルで定義され、ユーザーの通貨、地域、言語などの要因の影響を受ける可能性があります。
  • hotel: ユーザーはホテルにチェックインする際に課金されます。常にホテルの通貨で支払いを行う必要がある場合は、<ChargeCurrency> の値を hotel に設定します。実際のランディング ページは、ユーザーの通貨による影響を受けません。
  • deposit: ユーザーの一部がすぐに課金され、残りは後で(通常はユーザーがホテルのチェックアウト時に)課金されます。
  • installments: ユーザーには、総額の当初の金額が請求され、一定期間にわたって、設定された残高を定期的に支払うことが想定されます。

デフォルト値は web です。

<Checkin> Required Date 日付形式を使用した旅行プランのチェックイン日。旅行プランは <Nights> 要素と <Checkin> 要素の組み合わせで作成されます。
<Custom[1‑5]> Optional string ホテルに関連する追加データを渡すために使用できるカスタム フィールドを定義します。次の要素名を使用して、最大 5 つのカスタム値を渡すことができます。
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

<Custom> 要素を使用すると、任意のデータを渡すことができます。たとえば、このフィールドに値を指定すると、ランディング ページ ファイルでその値を使用して、ランディング ページのカスタム URL を作成できます。1 つのカスタムフィールドの最大文字数は 200 文字です。詳しくは、ランディング ページ ファイル をご覧ください。

<Rate> 要素で指定される <Custom> 要素は、<RoomBundle> 要素に継承されません。<Custom> 属性は <RoomBundle> ごとに個別に定義する必要があります。

<ExpirationTime> Optional DateTime 価格が期限切れとみなされる日時(最低 3 時間)。

有効期限のタイムスタンプが料金構成にとって重要でない場合は、指定しないことをおすすめします。

有効期限が切れた料金は提供されません。料金の期限が切れた旅行プランは、 ライブ料金クエリの対象になります。

<Nights> Required integer 旅行プランの宿泊日数。<Nights> 要素の値には正の整数を指定する必要があります。旅行プランは <Nights><Checkin> の組み合わせで作成されます。
<OtherFees> Optional float 最終的な客室料金に影響する、基本料金と税金以外の料金。<OtherFees> 要素では、1 つの必須属性 currency を使用します。この属性で、料金の 3 文字の通貨コードを定義します。例: USD

<Baserate> が 0 より大きい場合、<OtherFees> 要素は必須です。

<Occupancy> Optional integer 最大宿泊人数を指定します。<Occupancy><Result> の下に表示される場合は、2 以上を指定する必要があります。<Occupancy> には、宿泊客の種類(大人または子供)を指定する <OccupancyDetails> を含めることができます。子要素の構文と説明については、<OccupancyDetails> をご覧ください。<Occupancy> 要素が指定されていない場合、定員はデフォルトで 2 になります。

注: 2 人以外の宿泊料金を送信する機能を有効にするには、サポートにお問い合わせください。

<PackageID> Optional string 事前定義されたパッケージ データにマッピングするパッケージの一意の ID。 PACKAGE-ID ランディング ページ変数の入力にも使用されます。 詳しくは、条件の組み合わせのメタデータをご覧ください。
<Property> Required string 関連データ(料金、旅行プラン、条件の組み合わせ、メタデータ)の影響を受けるホテルの ID。この要素の値は文字列にする必要があります。この要素の値は、ホテルリスト フィードで定義したリスティング <id> と一致する必要があります。
<Rates> Optional <Rates> 1 つ以上の <Rate> ブロックのコンテナ。<Rates> の各 <Rate> は、客室と旅行プランの組み合わせに対して異なる料金を定義します。

<Rates> 要素は、同じ客室と旅行プランの組み合わせに複数の料金がある場合にのみ使用します。たとえば、 限定価格 非公開レート条件の組み合わせの限定価格に対して複数の料金を定義します。

<Refundable> Optional Object 全額払い戻し可能であること、またはキャンセル料無料として料金を掲載できるようにします。指定しない場合、払い戻しに関する情報は表示されません。 <PackageData> レベルの払い戻しポリシーは、<Result> レベルの払い戻しポリシーよりも優先されます。<Rates> レベルの払い戻しポリシーは、<PackageData> レベルの払い戻しポリシーよりも優先されます。また、トランザクション メッセージ スキーマを直接変更せずに、代替オプションを通じて払い戻し可能な料金をユーザーに強調することもできます。詳しくは、払い戻し可能な料金に関するポリシーをご覧ください。

次の例は、すべての属性が設定された <Refundable> 要素を示しています。

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

注: すべての属性を設定することをおすすめします。1 つ以上の属性が設定されていない場合、フィード ステータスの警告メッセージが生成されます。

属性を設定しない場合、料金は払い戻し可能として表示されません。属性は次のとおりです。

  • available: (必須)料金で全額払い戻しが許可されている場合は 1(または true)に設定します。それ以外の場合は 0(または false)に設定します。
  • refundable_until_days: (availabletrue の場合は必須)全額払い戻しを要求できるチェックイン日の日数を指定します。refundable_until_days の値は 0 ~ 330 の整数にする必要があります。
  • refundable_until_time: (availabletrue の場合は強く推奨します)全額払い戻しのリクエストに応じる最も遅い時刻をホテルの現地時間で指定します。これに refundable_until_days を組み合わせることで、たとえば「チェックインの 2 日前の午後 4 時まで払い戻しが可能」のように指定できます。refundable_until_time が設定されていない場合、値はデフォルトで午前 0 時に設定されます。

    この属性の値は Time 形式を使用します。

属性を設定する際は、次の点に注意してください。

  • available または refundable_until_days が設定されていない場合、料金は払い戻し可能として表示されません。
  • available0(または false)の場合、他の属性は無視されます。他の属性のいずれかまたは両方が設定されていても、料金は払い戻し可能として表示されません。
<RoomBundle> Optional <RoomBundle> 特定のホテルと旅行プランの料金付きの客室、設備のパッケージ、購入ポリシーの詳細に関する情報のコンテナ。

通常は、この要素を使用して基本の客室と、同じ宿泊施設内の異なるタイプの客室の料金を定義します。条件の組み合わせの説明をインラインで定義することは可能ですが、個別のトランザクション メッセージを使用してその情報を定義する必要があります。Google はメタデータを保存することにより、今後のすべての料金更新で繰り返しではなく参照できるようにメタデータを保存します。

<RoomID> Optional string 事前定義された客室データにマッピングする客室の一意の ID。また、PARTNER-ROOM-ID ランディング ページ変数の入力にも使用されます。詳しくは、条件の組み合わせのメタデータをご覧ください。
<Tax> Optional float 最終的な客室料金に対して計算される税金。 <Tax> 要素では、税金の 3 文字の通貨コードを定義する単一の必須属性 currency を使用します。例: USD<Baserate> が 0 より大きい場合、<Tax> 要素は必須です。
<Unavailable> Optional Object 旅行プランは予約できないことを示します。旅行プランが利用できない詳しい理由を示すコンテナとして機能します。<Unavailable> タグの下に、次の利用不能な理由の 1 つ以上をネストできます。
  • <NoVacancy/>: 1 泊以上の宿泊で販売可能な客室が他にありません。
  • <MinNightStay value=N/>: 旅行プランが滞在日の最低宿泊日数 N を下回っています。
  • <MaxNightStay value=N/>: 旅行プランが滞在日の最長宿泊日数 N を上回っています。
  • <MinAdvancePurchase value=N/>: 旅行プランが滞在日の最低予約可能期間 N を下回っています。
  • <MaxAdvancePurchase value=N/>: 旅行プランが滞在日の N の事前予約可能期間を上回っています。
  • <ClosedToArrival/>: このプロパティでは、旅行プランの到着日にチェックインすることはできません。
  • <ClosedToDeparture/>: 宿泊施設の出発日にチェックアウトすることはできません。
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: この宿泊施設は滞在の一部または全部で閉鎖されます。推奨属性 first_openfirst_closed には、それぞれ宿泊施設が開館または閉業した到着日以上の開始日を指定します。宿泊施設が到着日以降に閉店する場合、first_open は到着日と同じで、first_closed は宿泊施設の閉店日にする必要があります。宿泊施設が到着日に閉業する場合、first_closed は到着日と同じで、first_opened は宿泊施設が開業する次の日付にする必要があります。
  • <NotFetched/>: 宿泊プランの料金がダウンストリーム データソースから提供されていません。
  • <InvalidProperty/>: リクエストされたプロパティ ID が認識されませんでした。
  • <InvalidOccupancy/>: リクエストされた宿泊人数は、宿泊施設ではサポートされていません。
  • <PriceIssue/>: 価格に関する問題により、送信されませんでした。
  • <InternalError reason=""/>: 列挙されていないエラーが発生しました。オプションの reason 属性で、エラーをテキストとして報告できます。
  • <OtherRestriction restriction=""/>: 列挙されていない予約制限により、旅行プランを利用できませんでした。オプションの制限属性を使用すると、制限をテキストとしてレポートできます。

複数のプロパティの例

次の例では、1 つの旅行プランと 2 つの宿泊施設の料金を定義します。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
  </Result>
</Transaction>

この例では、客室の説明、写真とキャプション、部屋の名前、収容人数など、客室の詳細情報は表示されていません。

この情報は、Google が保存する別の Transaction メッセージで 1 回定義できます。その後のすべての価格設定と在庫の更新で参照できます。詳しくは、条件の組み合わせのメタデータをご覧ください。

マルチレートの例

次の例では、宿泊人数ごとに複数の料金が設定された 1 つの宿泊プランと宿泊施設を定義します。<Rates> 要素を使用すると、特定の宿泊施設のマルチレート料金を指定できます。次の例は、民泊(VR)の宿泊施設の場合にも役立ちます。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2021-01-13</Checkin>
    <Nights>9</Nights>
    <Baserate currency="USD">3196.1</Baserate>
    <Tax currency="USD">559.49</Tax>
    <OtherFees currency="USD">543.34</OtherFees>
    <Occupancy>2</Occupancy>
    <Rates>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>1</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>3</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>4</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>5</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>6</Occupancy>
      </Rate>
    </Rates>
  </Result>
</Transaction>

利用できない例

次の例では、ダウンストリーム チャネルから空室状況を取得できなかった 1 つの旅行プラン、最低宿泊日数を下回って指定日ですでに予約されている 2 つ目の旅行プラン、到着日に宿泊施設が閉鎖されているが滞在中に開始する 3 つ目の旅行プランを定義しています。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NotFetched/>
    </Unavailable>
  </Result>
  <Result>
    <Property>073313</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NoVacancy/>
      <MinNightStay value=3/>
    </Unavailable>
  </Result>
  <Result>
    <Property>052213</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>10</Nights>
    <Unavailable>
      <PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
    </Unavailable>
  </Result>
</Transaction>

<Rates>

1 つ以上の <Rate> ブロックのコンテナ。<Rates> 内の各 <Rate> は、客室または旅行プランの組み合わせに対して異なる料金を定義します。

<Rates> 要素は、同じ客室または旅行プランの組み合わせに複数の料金がある場合にのみ使用します。たとえば、限定価格非公開レート条件の組み合わせの限定価格に対して複数の料金を定義できます。

<Rates> 要素は、トランザクション メッセージの XML 階層の次の場所に表示されます。

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>         // Pricing and availability
        + <Rates>
        + <RoomBundle> (Can also contain <Rates>)
        + ...

<Rate> に設定された値は、親 <Result> 要素または <RoomBundle> 要素の料金関連の値をオーバーライドします。<Rate> で設定されていない場合は、親要素から値を継承します。<AllowablePointsofSale> のみが <RoomBundle> 要素に継承されます。

構文

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <Rates>
      <Rate rate_rule_id="rate_rule_id">
        <Baserate currency="currency_code">price</Baserate>
        <Tax currency="currency_code">tax_amount</Tax>
        <OtherFees currency="currency_code">fee_amount</OtherFees>
        <ExpirationTime>expiration_time</ExpirationTime>
        <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
        <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
        <AllowablePointsOfSale>
          <PointOfSale id="landing_page_identifier"/>
        </AllowablePointsOfSale>
        <Occupancy>max_number_of_intended_occupants</Occupancy>
        <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
          ...
        <Custom[1-5]>custom_value</Custom[1-5]>
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

属性

<Rates> 要素には次の属性があります。

属性 必須かどうか 説明
rate_rule_id Optional 限定価格の場合、この ID は料金ルール定義ファイルの定義と一致します。このフィールドの文字数制限は 40 文字です。

子要素

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

子要素 必須かどうか タイプ 説明
<AllowablePointsOfSale> Optional Object ホテルの対象となる 1 つ以上のランディング ページ。この要素の構文は、<Result><AllowablePointsOfSale> と同じです。
<Baserate> Required float 滞在先の部屋の料金。この要素の構文は、<Result><Baserate> と同じです。

注: <Rate> の下にある <Baserate> 子要素は、利用できないものとして定義できません。

<ChargeCurrency> Optional enum ユーザーが予約をいつ、どこで支払うか。この要素の構文は、<Result><ChargeCurrency> と同じです。
<Custom[1‑5]> Optional string ホテルに関連する追加データをランディング ページに渡すために使用できるカスタム フィールド。この要素の構文は、<Result><Custom[1‑5]> と同じです。カスタム フィールドあたりの文字数は 200 文字までです。詳しくは、 ランディング ページ ファイルをご覧ください。

<Custom> 要素が <Result> 要素で指定されている場合、その要素は <RoomBundle> 要素で継承されないため、<RoomBundle> ごとに個別に定義するか、必要に応じて <PackageData> に含めます。

<ExpirationTime> Optional DateTime 料金の有効期限が切れているとみなす日時。この要素の構文は、<Result><ExpirationTime> と同じです。
<Occupancy> Optional integer

最大宿泊人数を指定します。<Occupancy> には、宿泊客の種類(大人または子供)を指定する <OccupancyDetails> を含めることができます。子要素の構文と説明については、<OccupancyDetails> をご覧ください。

<OtherFees> Required float 最終的な客室料金に影響する、基本料金と税金以外の料金。この要素の構文は、<Result><OtherFees> と同じです。
<Refundable> Optional Object 全額払い戻し可能であること、またはキャンセル料無料として料金を掲載できるようにします。指定しない場合、払い戻しに関する情報は表示されません。 <PackageData> レベルの払い戻しポリシーは、<Result> レベルの払い戻しポリシーよりも優先されます。<Rates> レベルの払い戻しポリシーは、<PackageData> レベルの払い戻しポリシーよりも優先されます。また、トランザクション メッセージ スキーマを直接変更せずに、代替オプションを通じて払い戻し可能な料金をユーザーに強調することもできます。これらのオプションについて詳しくは、払い戻し可能な料金に関するポリシーをご覧ください。

次の例は、すべての属性が設定された <Refundable> 要素を示しています。

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

注: すべての属性を設定することをおすすめします。1 つ以上の属性が設定されていない場合、フィード ステータスの警告メッセージが生成されます。

属性を設定しない場合、料金は払い戻し可能として表示されません。属性は次のとおりです。

  • available: (必須)料金で全額払い戻しが許可されている場合は 1(または true)に設定します。それ以外の場合は 0(または false)に設定します。
  • refundable_until_days: (availabletrue の場合は必須)全額払い戻しを要求できるチェックイン日の日数を指定します。refundable_until_days の値は 0 ~ 330 の整数にする必要があります。
  • refundable_until_time: (availabletrue の場合は強く推奨します)全額払い戻しのリクエストに応じる最も遅い時刻をホテルの現地時間で指定します。これに refundable_until_days を組み合わせることで、たとえば「チェックインの 2 日前の午後 4 時まで払い戻しが可能」のように指定できます。refundable_until_time が設定されていない場合、値はデフォルトで午前 0 時に設定されます。

    この属性の値は Time 形式を使用します。

属性を設定する際は、次の点に注意してください。

  • available または refundable_until_days が設定されていない場合、料金は払い戻し可能として表示されません。
  • available0(または false)の場合、他の属性は無視されます。他の属性のいずれかまたは両方が設定されていても、料金は払い戻し可能として表示されません。
<Tax> Required float 最終的な客室料金に対して計算される税金。この要素の構文は、<Result><Tax> と同じです。

基本レートと限定価格

次の例は、基本料金と限定価格を含む Transaction メッセージを示しています。

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

複数の限定価格

次の例では、<RoomBundle> 内に基本料金と複数の限定価格を定義しています。

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<RoomBundle>

<Transaction> メッセージの <Result> の子として条件の組み合わせの料金と空室状況を定義します。パッケージまたは旅行プランの組み合わせごとに個別の要素を定義します。条件の組み合わせのパッケージと条件を定義するには、<RoomData> を使用します。

<RoomBundle> 要素は、トランザクション メッセージの XML 階層の次の場所に表示されます。

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

詳しくは、条件の組み合わせの使用をご覧ください。

構文

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <RoomBundle>
      <!-- Required unless specified inline under <RoomData> -->
      <RoomID>room_ID</RoomID>
      <!-- Required  <PackageData> -->
      <PackageID>package_ID</PackageID>

      <!-- Required -->
      <Baserate currency="currency_code">price</Baserate>
      <!-- Required -->
      <Tax currency="currency_code">taxes</Tax>
      <!-- Required -->
      <OtherFees currency="currency_code">other_fees</OtherFees>

      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <!-- Required -->
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>

      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

      <Custom1>custom_value_1</Custom1>
      <Custom2>custom_value_2</Custom2>
      <Custom3>custom_value_3</Custom3>
      <Custom4>custom_value_4</Custom4>
      <Custom5>custom_value_5</Custom5>
    </RoomBundle>
    ...
  </Result>
</Transaction>

属性

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

子要素

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

子要素 必須かどうか タイプ 説明
<Baserate> Required float 条件の組み合わせの料金を定義します。この要素の構文は <Result><Baserate> と同じですが、以下の例外があります。
  • 旅行プランで客室が利用できない場合は、<RoomBundle> 要素を削除して、客室が在庫にないことを示します。詳しくは、 条件の組み合わせの削除をご覧ください。
<BreakfastIncluded> Optional boolean この条件の組み合わせの料金に朝食が含まれるかどうかを指定します。
<ChargeCurrency> Optional enum ユーザーが予約をいつ、どこで支払うか。この要素の構文は、<Result><ChargeCurrency> と同じです。

デフォルト値は web です。

<Custom[1‑5]> Optional string 条件の組み合わせのランディング ページに追加データを渡すためのカスタム フィールド。これらの要素の構文は、<Result><Custom[1-5]> と同じです。カスタム フィールドあたりの文字数は 200 文字までです。詳しくは、ランディング ページ ファイルをご覧ください。

<Custom> 要素が <Result> 要素で指定されている場合、その要素は <RoomBundle> 要素で継承されないため、<RoomBundle> ごとに個別に定義するか、必要に応じて <PackageData> に含めます。

<InternetIncluded> Optional boolean 条件の組み合わせに無料のインターネット接続が含まれる場合は、条件の組み合わせには含まれない場合があります。すべての客室に無料のインターネット接続を提供しているホテルの場合、条件の組み合わせに対してこの要素を設定しないでください。この要素は、客室内の有線インターネットや客室では利用できないワイヤレス インターネットには適用されません。
<Occupancy> Required integer 条件の組み合わせが対象となる宿泊客の最大数。たとえば、大きなスイートは物理的に 6 人の宿泊客を収容できるかもしれませんが、「ハネムーン パッケージ」は 2 人の利用を想定しています。

この値は、<Capacity>(客室が物理的に収容できる人数)以下の値にする必要があります。

ランディング ページ URL で宿泊人数を定義する場合は、変数と条件の使用で説明されているように、NUM-ADULTS 変数と NUM-CHILDREN 変数を使用します。デフォルト値は、大人 2 人、子供 0 人です。

<Occupancy> の値は 1 ~ 99 の正の整数にする必要があります。

:

  • <RoomBundle> には <Occupancy> を強く推奨します。必須としてフラグを立て、省略すると 1097 エラーがスローされます。
  • <Occupancy> は、データ オブジェクトから取得されます。<RoomBundle><PackageData><RoomData> の順です。いずれも値が存在しない場合、値はデフォルトで 2 になります。
  • <Occupancy> には、宿泊客の種類(大人または子供)を指定する <OccupancyDetails> を含めることができます。子要素の構文と説明については、<OccupancyDetails> をご覧ください。
  • <RoomBundle><PackageData> の両方で <Occupancy> を設定すると、<RoomBundle> の値が優先されます。
<OtherFees> Required float 最終的な客室料金に影響する、基本料金と税金以外の料金。<OtherFees> 要素では、1 つの必須属性 currency を使用します。この属性で、料金の 3 文字の通貨コードを定義します。たとえば、米ドルの場合は USD を使用します。
<PackageID> Optional (recommended) string パッケージ データの一意の ID。この ID を使用して、条件の組み合わせのデータと <PackageData> で送信された内容を照合します。詳しくは、条件の組み合わせのメタデータをご覧ください。(この ID を使用して、条件の組み合わせデータをインラインで定義するときに、1 つのトランザクション メッセージ内で使用される共通の条件の組み合わせの定義を参照することもできます)。
<ParkingIncluded> Optional boolean 条件の組み合わせに無料の駐車場が含まれているかどうか(それ以外の場合、駐車場はこのホテルの有料サービスになる場合)。無料駐車場を提供しているホテルの場合は、この要素の値を指定しないでください。

有効な値は 0(または false)と 1(または true)です。デフォルト値は false です。

<RatePlanID> Optional string 料金プラン ID は、客室とパッケージの組み合わせに対する一意の識別子を表します。たとえば、<RoomID> の値が 5 で、<PackageID> の値が ABC の場合、<RatePlanID> には 5-ABC の値を使用できます。動的ランディング ページ(旧 POS)の URL を作成する際は、RatePlanID を変数として使用することを強くおすすめします。

詳細については、変数と条件の使用をご覧ください。

<Rates> Optional <Rates> この条件の組み合わせのデフォルトをオーバーライドする料金。この要素の構文は、<Result><Rates> と同じです。
<Refundable> Optional Object 全額払い戻し可能であること、またはキャンセル料無料として料金を掲載できるようにします。指定しない場合、払い戻しに関する情報は表示されません。 <PackageData> レベルの払い戻しポリシーは、<Result> レベルの払い戻しポリシーよりも優先されます。<Rates> レベルの払い戻しポリシーは、<PackageData> レベルの払い戻しポリシーよりも優先されます。また、トランザクション メッセージ スキーマを直接変更せずに、代替オプションを通じて払い戻し可能な料金をユーザーに強調することもできます。これらのオプションについて詳しくは、払い戻し可能な料金に関するポリシーをご覧ください。

次の例は、すべての属性が設定された <Refundable> 要素を示しています。

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

注: すべての属性を設定することをおすすめします。1 つ以上の属性が設定されていない場合、フィード ステータスの警告メッセージが生成されます。

属性を設定しない場合、料金は払い戻し可能として表示されません。属性は次のとおりです。

  • available: (必須)料金で全額払い戻しが許可されている場合は 1(または true)に設定します。それ以外の場合は 0(または false)に設定します。
  • refundable_until_days: (availabletrue の場合は必須)全額払い戻しを要求できるチェックイン日の日数を指定します。refundable_until_days の値は 0 ~ 330 の整数にする必要があります。
  • refundable_until_time: (availabletrue の場合は強く推奨します)全額払い戻しのリクエストに応じる最も遅い時刻をホテルの現地時間で指定します。これに refundable_until_days を組み合わせることで、たとえば「チェックインの 2 日前の午後 4 時まで払い戻しが可能」のように指定できます。refundable_until_time が設定されていない場合、値はデフォルトで午前 0 時に設定されます。

    この属性の値は Time 形式を使用します。

属性を設定する際は、次の点に注意してください。

  • available または refundable_until_days が設定されていない場合、料金は払い戻し可能として表示されません。
  • available0(または false)の場合、他の属性は無視されます。他の属性のいずれかまたは両方が設定されていても、料金は払い戻し可能として表示されません。
<RoomID> Required string 客室データの一意の ID。この ID を使用して、条件の組み合わせのデータと <RoomData> で送信した情報を照合します。詳しくは、 条件の組み合わせのメタデータをご覧ください。(この ID を使用して、インラインで客室データを定義するときに、1 つのトランザクション メッセージで共通の客室の定義を参照することもできます)。
<Tax> Required float 最終的な客室料金に対して計算される税金。 <Tax> 要素では、税金の 3 文字の通貨コードを定義する単一の必須属性 currency を使用します。たとえば、米ドルの場合は USD を使用します。

1 人宿泊バンドル

次の例では、宿泊人数が 1 つのバンドルを含むレスポンスを定義しています。ユーザーが宿泊人数選択ツールで 1 を選択すると、宿泊人数に関係なく、最低対象料金が表示されます。

1 人部屋の料金が利用できない場合、Google は 2 人部屋の最安料金を表示します。旅行プランで 2 人以上の宿泊料金がキャッシュに保存されている場合、1 人部屋の料金はライブクエリされません。

この例では、<RoomID> 要素と <PackageID> 要素を使用して、事前定義された客室とパッケージのメタデータを参照します。<RoomData> 要素と <PackageData> 要素を使用して、この情報を定義します。

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note:  Once defined it does not have to be repeated for future
              Transaction Messages.
              PropertyDataSets can also be defined and sent in their own
              Transaction Message separately from pricing. Google can be
              configured to pull just PropertyDataSets once per day
              (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P11111</PackageID>
      <Occupancy>1</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <!-- Single occupancy pricing will be specified in a room bundle below -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P11111</PackageID>
      <!-- Price for 1 ("occupancy") is the lowest price and will be
           displayed -->
      <Baserate currency="USD">174.99</Baserate>
      <Tax currency="USD">22.08</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P11111</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
           occupancy will be displayed-->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>436233-P12345</RatePlanID>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 1 or more occupancies..-->
  </Result>
</Transaction>


2 人以上の宿泊人数

次の例では、2 人以上の宿泊人数を含むレスポンスを定義しています。

この例では、<RoomID> 要素と <PackageID> 要素を使用して、事前定義された客室とパッケージのメタデータを参照します。<RoomData> 要素と <PackageData> 要素を使用して、この情報を定義します。

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Efficient method of defining Room Bundles-->
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P33333</PackageID>
      <Occupancy>3</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
    <!-- Base Room Bundle -->
    <RoomBundle>
      <!-- Baserate above and attributes must match atleast one room bundle
           below -->
      <RoomID>060773</RoomID>
      <PackageID>P33333</PackageID>
      <Baserate currency="USD">499.99</Baserate>
      <Tax currency="USD">55.12</Tax>
      <OtherFees currency="USD">22.00</OtherFees>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
      <Baserate currency="USD">598.88</Baserate>
      <Tax currency="USD">62.12</Tax>
      <OtherFees currency="USD">30.00</OtherFees>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 2 or more occupancies..-->
  </Result>
</Transaction>


複数の条件の組み合わせ

次の例では、複数の客室バンドルの定員を設定して、ホステルの客室料金の可能性を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <!-- Suite Room Bundle -->
    <RoomBundle>
      <RoomID>suite1</RoomID>
      <PackageID>standard</PackageID>
      <Occupancy>2</Occupancy>
      <!-- Price for room -->
      <Baserate currency="USD">80.00</Baserate>
      <Tax currency="USD">5.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="Suite for 2" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Small Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>small_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">35.00</Baserate>
      <Tax currency="USD">3.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in small dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Large Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>large_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">20.00</Baserate>
      <Tax currency="USD">2.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in large dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>
    ...
  </Result>
</Transaction>

複数の限定価格

次の例では、<RoomBundle> 内に基本料金と複数の限定価格を定義しています。

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

トランザクション メッセージの <Occupancy> は、客室またはパッケージの宿泊客の最大数を指定します。<OccupancyDetails> には、宿泊客の人数やタイプ(大人または子供)などの追加情報を含めることができます。

<Occupancy><OccupancyDetails><Result> または <RoomBundle><Rates> 要素内に表示される場合、料金は宿泊人数の詳細によって制限されていることを意味します。

構文

<OccupancyDetails> は、必ず先頭に <Occupancy> が付きます。次の構文に注意してください。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
  ...
    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <OccupancyDetails>
      <NumAdults>number_of_adults</NumAdults>
      <Children>
        <Child age=age_of_one_child_guest/>
        <Child age=age_of_one_child_guest/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

子要素

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

子要素 必須かどうか タイプ 説明
<NumAdults> Required integer 大人の宿泊客の数。最小:1、最大:20。
<Children> Optional Object 1 つ以上の <Child> 要素のコンテナ。
<Child age> Optional integer この子の最高年齢(例: <Child age="17">)。

次の例は、<OccupancyDetails><Results><RoomBundle>、または <Rates> 子要素内でどのように表示されるかを示しています。

結果のレスポンス

次の例では、ユーザーがゲストの人数とタイプを指定したライブ料金クエリに応答して、1 つの宿泊プランと 1 つの宿泊施設の料金を定義します。ここでは、<OccupancyDetails>(大人 2 人と子供 1 人)が <Result> に返されます。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
    <Occupancy>3</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
      <Children>
        <Child age="17"/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

レスポンス率

次の例では、大人 1 人と子供 1 人の宿泊プランと料金を定義します。ここでは、<Result><Rates> 要素で <OccupancyDetails> が返されます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
  <Result>
    <Property>8251</Property>
    <Checkin>2018-06-20</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">62.18</Baserate>
    <Tax currency="USD">2.45</Tax>
    <OtherFees currency="USD">0.00</OtherFees>
    <Rates>
      <Rate rate_rule_id="rule-951">
        <Occupancy>2</Occupancy>
        <OccupancyDetails>
          <NumAdults>1</NumAdults>
          <Children>
            <Child age="17"/>
          </Children>
        </OccupancyDetails>
        <Baserate currency="USD">42.61</Baserate>
        <Tax currency="USD">5.70</Tax>
        <OtherFees currency="USD">0.00</OtherFees>
        <Custom1>abc4</Custom1>
        <AllowablePointsOfSale>
          <PointOfSale id="yourhotelpartnersite.com"/>
        </AllowablePointsOfSale>
      </Rate>
    </Rates>
  </Result>
</Transaction>

条件の組み合わせ

次の例では、大人 2 人と子供 1 人の 2 泊の宿泊人数を、払い戻し可能な料金で定義しています。ここで、<OccupancyDetails><RoomBundle> 内にあります。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>6781291</Property>
    <Checkin>2017-08-05</Checkin>
    <Nights>2</Nights>
    ...
    <RoomBundle>
      <RoomID>10291</RoomID>
      <RatePlanID>564739</RatePlanID>
      <PackageID>564739</PackageID>
      <Occupancy>3</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
      <Baserate currency="USD">185.34</Baserate>
      <Tax currency="USD">37.06</Tax>
      <OtherFees currency="USD">2.22</OtherFees>
    </RoomBundle>
  </Result>
</Transaction>

複数の条件の組み合わせ

次の例では、大人 2 人と子供 2 人の宿泊人数に制限される複数の <RoomBundle> 料金を定義しています。ここで、<OccupancyDetails><RoomBundle><Rates> 要素内にあります。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">275.00</Baserate>
    <Tax currency="USD">27.50</Tax>
    <OtherFees currency="USD">0</OtherFees>
    <RoomBundle>
      <RoomID>5</RoomID>
      <PackageID>STD</PackageID>
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">0</OtherFees>
      <InternetIncluded>1</InternetIncluded>
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <Custom2>ratebasic</Custom2>
      <Occupancy>4</Occupancy>
      <OccupancyDetails>
          <NumAdults>2</NumAdults>
          <Children>
              <Child age="17"/>
              <Child age="17"/>
          </Children>
      </OccupancyDetails>
      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <ChargeCurrency>hotel</ChargeCurrency>
          <Custom1>ratecode321</Custom1>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <Custom1>ratecode432</Custom1>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>