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

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

<Transaction>

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

トランザクション メッセージが送信された時刻。

過去 24 時間以内にタイムスタンプが付けられて送信されたメッセージはすべて処理され、そうでないメッセージは破棄されます。

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

子要素

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

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

特定の客室と条件の組み合わせについての説明です。この要素は、通常、条件の組み合わせの共有値を定義し、トランザクション メッセージのサイズを小さくするために、別のトランザクション メッセージ内で使用します。

<Result> Optional* <Result>

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

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

客室データ

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

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

料金データ

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


基本料金と限定価格

次の例は、基本料金と限定価格を含むトランザクション メッセージを示しています。

<?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>: 1 室に宿泊できる宿泊客の最小数。たとえば、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> ごとに <URL> を 1 つだけ使用します。
  • <Caption>: 写真の説明を定義します。この要素は、2 つの必須属性(textlanguage)を持つ単一の子要素 <Text> を使用します。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 にはベッドの幅(整数センチメートル)を指定します。
  • <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> 要素を 1 つ更新する場合は、そのプロパティのすべての <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> 要素は、2 つの必須属性(textlanguage)を持つ単一の子要素 <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> 要素では、<Breakfast><Dinner> という 2 つのオプションの子要素を使用します。これらの子要素には次の属性があります。

  • 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: 空港までの交通手段を提供します。

1 つの部屋の組み合わせ

次の例では、定員 2 名(大人 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 のキャッシュにある以前の(期限切れでない)料金を上書きします。統合可能な属性を使用すると、以前の料金情報を削除せずに、追加の料金を Google のキャッシュに保存できます。コンテキストを使用したライブ料金クエリのレスポンスでは、(トランザクション メッセージのレスポンスに関係なく)この属性は常に true に設定されます。

子要素

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

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

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

<Baserate> Optional float

滞在中の客室の料金。この要素の値は、次の内容を反映している必要があります。

  • 個室の場合は、提供している最安値の 2 人部屋の料金を設定します。アカウントで 2 人部屋の宿泊料金がなく、アカウントで 2 人以外の宿泊料金が有効になっている場合は、それ以上の宿泊人数を指定できます。2 人以外の宿泊料金を有効にするには、お問い合わせください。 ここでは 1 人宿泊料金は使用できません。<Rates> で設定する必要があります。
  • 共有する部屋の場合は、空のままにして <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 を作成できます。カスタム フィールドあたりの文字数は 200 文字までです。詳しくは、ランディング ページ ファイル をご覧ください。

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

<ExpirationTime> Optional DateTime 料金の有効期限が切れたとみなされる日時(最短で 3 時間)。

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

Google は期限切れの料金を提供しません。料金の有効期限が切れている旅行プランは、 ライブ料金クエリの対象となります。

<Nights> Required integer 旅行プランの宿泊日数。<Nights> 要素の値は正の整数である必要があります。旅行プランは <Nights><Checkin> の組み合わせで作成されます。
<OtherFees> Optional float 最終的な客室料金に影響する基本料金と税金以外の手数料。<OtherFees> 要素では、単一の必須属性 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> は、客室と宿泊プランの組み合わせに対して異なる料金を定義します。

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

注: <Result> 内では、1 人部屋の宿泊料金は <Rates> でのみ指定できます。2 人以外の宿泊料金を許可する場合は、お問い合わせください。

<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> 要素では、単一の必須属性 currency を使用して、税金の 3 文字の通貨コードを定義します。例: USD<Baserate> が 0 より大きい場合、<Tax> 要素は必須です。
<Unavailable> Optional Object 旅行プランが予約できないことを示します。旅行プランが利用できない詳細な理由に対するコンテナとして機能します。次の利用不能理由のうち 1 つ以上が <Unavailable> タグの下にネストされている可能性があります。
  • <NoVacancy/>: 1 泊以上の宿泊で販売できる部屋がないこと。
  • <MinNightStay value=N/>: その宿泊プランの最低宿泊日数(N)を下回っていました。
  • <MaxNightStay value=N/>: その宿泊プランの最大 1 泊の滞在日数(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 が保存する個別のトランザクション メッセージで 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> で設定されていない場合は、親要素から値を継承します。<RoomBundle> 要素に継承されるのは、<AllowablePointsofSale> のみです。

構文

<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 文字までです。詳しくは、 ランディング ページ ファイルをご覧ください。

<Result> 要素で <Custom> 要素が指定されている場合、これらの要素は <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> と同じです。

基本レートと限定価格

次の例は、基本料金と限定価格を含むトランザクション メッセージを示しています。

<?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 つの <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 文字までです。詳しくは、ランディング ページ ファイルをご覧ください。

<Result> 要素で <Custom> 要素が指定されている場合、これらの要素は <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> 要素では、単一の必須属性 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> 要素では、単一の必須属性 currency を使用して、税金の 3 文字の通貨コードを定義します。たとえば、米ドルの場合は USD を使用します。

1 人部屋の一括販売

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

1 人 1 人 1 人部屋の料金が用意されていない場合、Google は 2 人 1 人 1 人部屋の最安料金を表示します。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>

複数の限定価格

次の例では、1 つの <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">)。

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

結果のレスポンス

次の例では、ユーザーが宿泊客の人数と種類を指定したライブ料金クエリに応答して、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 人と子供 1 人分の料金を定義しています。ここで、<OccupancyDetails><Result><Rates> 要素で返されます。

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