料金と客室在庫(トランザクション)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>: 1 室に宿泊するすべてのゲストの最低年齢。たとえば、この値が 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>: 写真のキャプションを定義します。この要素は、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>(省略可): ベッドの幅を指定します。値が cm の属性 unit と、ベッドの幅をセンチメートルの整数で指定した属性 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 台

以下は、2 つの double ベッドがある 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>

宿泊施設の条件の組み合わせについて、旅行プランに依存しないメタデータを定義します。この要素はパートナーとホテルに関連する情報を指定しますが、旅行プランに関連した情報は指定しません。この要素の使用目的は、旅行プラン以外のすべてのデータを 1 度定義して、それを旅行プランのデータから参照できるようにすることです。

<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> 要素は、次の属性を持つ 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)が機能するには、<Breakfast><Dinner> の両方に included 属性を指定する必要があります。

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

この要素は、2 つの属性(textlanguage)を持つ単一の子要素 <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 時です。

    この属性の値には、時間形式を使用します。

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

  • 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> で定義される客室やパッケージに関する旅行プランに依存しないメタデータ(説明や設備など)を参照します。

通常、料金の更新を含む Transaction メッセージは非常に頻繁に送信します。送信方法と頻度は、配信モードによって異なります。

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

メッセージの合計サイズが 100 MB を超えなければ、1 つのトランザクション メッセージで <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 属性と一致する、1 つ以上の <AllowablePointsOfSale> 要素を追加します。

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

<Baserate> Optional float

宿泊する客室の料金。この要素の値には、次の条件を反映させる必要があります。

  • 個室には、提供している最安値の 2 人部屋の料金を設定します。2 名分の料金がなく、アカウントで 2 名以外の料金が有効になっている場合は、より多くの宿泊人数を設定できます。2 人以外の宿泊料金を有効にするには、Google までお問い合わせください。 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> 要素では、料金の 3 文字の通貨コードを定義する currency という単一の必須属性を使用します。例: 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> は、客室と旅行プランの 1 つの組み合わせに対して異なる料金を定義します。

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

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

<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 時です。

    この属性の値には、時間形式を使用します。

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

  • 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> 要素を指定する必要があります。

<Baserate> 要素の「all_inclusive」属性が明示的に true に設定されている場合、この値の設定は省略可能です。

<Unavailable> Optional Object 旅行プランを予約できないことを示します。旅行プランが利用できなかった理由をより詳細に示すコンテナとして機能します。<Unavailable> タグの下に、次のいずれかの利用不可の理由がネストされている場合があります。
  • <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>

使用できない例

次の例では、ダウンストリーム チャネルから在庫を取得できなかった旅行プラン、最小宿泊日数を下回り、指定された日付の予約がすでに入っている旅行プラン、到着日に宿泊施設が休業しているが、滞在中に営業する旅行プランを定義します。

<?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> は、客室または旅行プランの 1 つの組み合わせに対して異なる料金を定義します。

<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> と同じです。

<Baserate> 要素の「all_inclusive」属性が明示的に true に設定されている場合、この値の設定は省略可能です。

<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 時です。

    この属性の値には、時間形式を使用します。

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

  • 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 文字まで入力できます。詳しくは、ランディング ページ ファイルをご覧ください。カスタム変数は、Transaction メッセージで料金を送信した場合にのみ一覧表示されます。

<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> 要素では、料金の 3 文字の通貨コードを定義する currency という単一の必須属性を使用します。たとえば、米ドルの場合は USD を使用します。
<PackageID> Optional (recommended) string 一意のパッケージ データ ID。この ID を使用して、条件の組み合わせのデータと <PackageData> で送信された内容を一致させます。詳しくは、条件の組み合わせのメタデータをご覧ください。また、インラインで条件の組み合わせデータを定義する場合に、この ID を使用して 1 つのトランザクション メッセージ内で使われる共通の条件の組み合わせの定義を参照することもできます。
<ParkingIncluded> Optional boolean 条件の組み合わせに無料の駐車場が含まれるかどうか(その他の条件の組み合わせでは駐車場利用が有料のサービスとなるホテルの場合)。無料で駐車場を提供しているホテルの場合は、この要素の値を指定しないでください。

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

<RatePlanID> Optional string 料金プラン ID は、客室とパッケージを組み合わせた一意の 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 時です。

    この属性の値には、時間形式を使用します。

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

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

1 人用バンドル

次の例では、1 人部屋の組み合わせに関する応答を定義します。ユーザーが Occupancy Picker で 1 を選択すると、定員にかかわらず、予約できる最低価格が表示されます。

1 人部屋の料金がない場合は、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 人を対象にした 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>