가격 및 객실 인벤토리 (거래) XML 참조

이 페이지에서는 XML 기반 거래 메시지에 대한 참조를 제공합니다.

<Transaction>

거래 메시지의 루트 요소는 <Transaction>입니다. 객실 및 패키지에 대한 설명 정보와 객실 및 패키지의 가격 및 예약 가능 여부를 위한 컨테이너입니다.

<Transaction> 요소는 거래 메시지 XML 계층 구조의 다음 위치에 표시됩니다.

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

<Transaction>를 루트 요소로 사용하는 메시지에는 하나 이상의 하위 요소가 필요합니다. 트랜잭션 메시지는 전체 메시지 크기가 100MB를 초과하지 않는 한 원하는 수의 하위 요소를 가질 수 있습니다.

구문

<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:10:00인 메시지 후에 수신된 타임스탬프가 2019-05-03 14:09:00인 가격 업데이트는 순서대로 처리되며 타임스탬프가 2019-05-03 14:10:00인 메시지의 가격이 사용됩니다.

하위 요소

<Transaction> 요소에는 다음과 같은 하위 요소가 있습니다.

하위 요소 필수 여부 유형 설명
<PropertyDataSet> Optional* <PropertyDataSet>

특정 객실 및 객실 패키지를 설명합니다. 일반적으로 이 요소는 별도의 트랜잭션 메시지에서 사용되어 객실 번들의 공유 값을 정의하고 트랜잭션 메시지의 크기를 줄입니다.

<Result> Optional* <Result>

객실의 숙박 일정 또는 <RoomBundle> 요소의 가격 데이터입니다. 이 요소는 객실 패키지 및 숙박 시설의 추가 객실 유형을 정의합니다. <Result> 요소를 사용하여 인벤토리에서 여정을 삭제할 수도 있습니다.

* <PropertyDataSet> 또는 <Result> 중 하나가 필요합니다.

객실 데이터

다음 예에서는 트랜잭션 메시지에서 객실 데이터를 정의합니다.

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

가격 책정 데이터

다음 예에서는 거래 메시지에서 가격 데이터를 정의합니다.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
    <MilesIncluded>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines"/>
      </Provider>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>
  </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>
      </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>
        + ...

자세한 내용은 Room Bundle 메타데이터를 참고하세요.

구문

<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를 참조합니다.

자세한 내용은 Room Bundle 메타데이터를 참고하세요.

<Property> Required string 연결된 데이터가 적용되는 호텔의 ID입니다. 이 요소의 값은 호텔 목록 피드의 숙박 시설 <id>와 일치하는 문자열이어야 합니다.
<RoomData> Optional* <RoomData> 방을 설명합니다. 이 데이터는 파트너 및 호텔과 연결되지만 여정과는 연결되지 않습니다.

가격 업데이트에서 객실 ID를 참조합니다.

* <PackageData> 또는 <RoomData> 중 하나가 필요합니다.

객실 및 패키지 데이터

다음 예는 <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를 참조합니다. 결과적으로 메시지 크기가 크게 줄어들고 중복 데이터로 인해 발생할 수 있는 오류의 양도 줄어듭니다. 자세한 내용은 Room Bundle 메타데이터를 참고하세요.

<RoomData>

객실에 관한 숙박 일정과 무관한 메타데이터를 정의합니다. 객실 패키지는 객실에 추가 편의시설이 더해진 것이므로 객실 패키지에 관한 메타데이터도 정의합니다. <RoomData>를 사용하여 가격 피드의 설명 데이터 반복을 줄입니다.

<RoomData> 요소는 거래 메시지 XML 계층 구조의 다음 위치에 표시됩니다.

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

<RoomData> 요소에는 파트너 및 호텔과 관련이 있지만 여행 일정과는 관련이 없는 정보가 포함됩니다. 의도된 용도는 모든 여정 외 데이터입니다.

<RoomData> 요소는 <PackageData>와 비슷하지만 패키지의 편의시설 및 약관이 아닌 실제 객실을 설명합니다. <RoomData><PackageData>을 함께 사용하여 Room 번들에 관한 세부정보를 제공합니다. 패키지에 포함되지 않은 개별 객실의 경우 <RoomData>만 사용합니다.

동일한 방 또는 Room 번들에 대해 <RoomData><PackageData> 요소를 모두 정의할 수 있습니다. Google에서 검색 결과에 해당 객실 또는 패키지를 표시할 때 하이픈으로 구분된 두 설명이 모두 포함됩니다.

자세한 내용은 Room Bundle 메타데이터를 참고하세요.

구문

<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> 요소는 단일 하위 요소인 <Text>를 사용하며, 이 요소에는 다음과 같은 두 가지 필수 속성이 있습니다.

  • text: 방에 대한 자세한 설명입니다.
  • language: 두 글자 언어 코드입니다(예: 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 방 카테고리의 이름입니다. 이 값은 호텔 방문 페이지 (이전에는 판매 시점)에 표시되는 값과 일치해야 합니다. 이 요소의 값을 모두 대문자로 설정하지 마세요.

이 요소는 단일 하위 요소인 <Text>를 사용하며, 이 요소에는 다음과 같은 두 가지 필수 속성이 있습니다.

  • text: 회의실 이름입니다.
  • language: 두 글자 언어 코드입니다(예: fr).

광고 또는 무료 예약 링크가 표시될 수 있는 각 언어에 대해 별도의 <Text> 요소를 사용합니다 (language 속성의 값이 다름).

다음 예는 프랑스어와 영어 버전의 방 이름을 보여줍니다.

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer 객실이 적합한 최대 투숙객 수입니다. 예를 들어 대형 스위트룸은 물리적으로 6명의 게스트를 수용할 수 있지만 (용량 = 6) 최대 4명의 게스트만 수용하도록 설계되었습니다.

이 값은 방에 실제로 수용할 수 있는 인원수인 <Capacity> 요소보다 작거나 같아야 합니다.

<Occupancy> 값은 1에서 99 사이의 양의 정수여야 합니다.

<Occupancy>에는 게스트 유형 (성인 또는 아동)을 지정하는 <OccupancyDetails>가 함께 제공될 수 있습니다. 구문 및 하위 요소 설명은 <OccupancyDetails>를 참고하세요.

<OccupancySettings> Optional Object 회의실의 재실 요구사항을 제한하거나 수정할 수 있는 설정입니다.

<OccupancySettings> 요소는 다음 하위 요소를 사용합니다.

  • <MinOccupancy>: 방에 머물 수 있는 게스트의 최소 수입니다. 예를 들어 이 값이 2로 설정된 경우 이 객실은 1명의 게스트가 예약할 수 없습니다.

    <MinOccupancy> 값은 1에서 99 사이의 양의 정수여야 합니다.

  • <MinAge>: 객실에 투숙하는 모든 게스트의 최소 연령입니다. 예를 들어 이 값이 18로 설정된 경우 모든 게스트가 18세 이상인 그룹만 이 객실을 예약할 수 있습니다.

    <MinAge> 값은 0~99 사이의 양의 정수여야 합니다.

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

모든 하위 요소를 포함할 필요는 없습니다.

<PhotoURL> Optional Object 지정된 객실 또는 객실 패키지의 사진 URL과 선택적 캡션입니다. 회의실 또는 회의실 번들에 <PhotoURL>를 두 개 이상 지정할 수 있습니다. 각 사진 URL은 자체 <PhotoURL>에 있어야 합니다.

이 요소는 다음 하위 요소를 사용합니다.

  • <URL>: 사진의 위치를 지정합니다. 위치는 공개되어야 하며 (방화벽 뒤에 있지 않음) 프로토콜 (예: https://)을 포함해야 합니다. <PhotoURL>당 하나의 <URL>만 사용하세요.
  • <Caption>: 사진의 설명을 정의합니다. 이 요소는 <Text>라는 단일 하위 요소를 사용하며, 이 요소에는 textlanguage라는 두 가지 필수 속성이 있습니다. text 속성은 캡션이고 language 속성은 en와 같은 두 글자로 된 언어 코드를 지정합니다.

예:

<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> 블록과 객실 데이터를 일치시킵니다. 자세한 내용은 Room Bundle 메타데이터를 참고하세요. (객실 데이터를 인라인으로 정의할 때 이 ID를 사용하여 단일 거래 메시지에서 공통 객실 정의를 참조할 수도 있습니다.)

객실 데이터

다음 예에서는 방 데이터를 정의합니다.

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

여러 객실 패키지

다음 예시는 여러 Room 번들의 룸 및 패키지 메타데이터를 정의합니다.

<?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 (선택사항): 유효한 값은 single, semi_double, double, queen, king입니다.
<Bed>에는 다음과 같은 하위 요소가 있습니다.
  • <Width> (선택사항): 침대 너비를 지정합니다. cm 값이 있는 unit 속성과 침대의 너비가 정수 센티미터로 표시된 number 속성이 있어야 합니다.
  • <Length> (선택사항): 침대 길이를 지정합니다. cm 값이 있는 unit 속성과 침대의 길이를 정수 센티미터로 나타내는 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 이 방이 소유자나 다른 게스트와 같은 다른 점유자와 공유되는지 여부입니다. 유효한 값은 shared, private입니다.
<Outdoor> Optional empty 이 객실이 고정된 벽, 배관, 온도 조절 장치가 없는 야외 숙박 시설인 경우 이 요소를 제공합니다. 예를 들어 호텔 객실은 야외 숙박 시설이 아니지만, 투숙객이 텐트에서 숙박하는 캠핑장과 투숙객이 자체 RV를 가져오는 RV 캠핑장은 야외 숙박 시설입니다.
<MobilityAccessible> Optional empty 이 회의실이 휠체어 이용 가능인 경우 이 요소를 제공합니다.
<Smoking> Optional enum 이 객실이 금연 객실인지 흡연 객실인지 여부입니다. 유효한 값은 non_smokingsmoking입니다.
<BathAndToilet> Optional Object 객실의 욕실 및 화장실에 관한 정보를 포함합니다.

속성은 다음과 같습니다.

  • relation (선택사항): 욕조와 화장실이 서로 어떻게 배치되는지 나타냅니다. 유효한 값은 together(욕실과 화장실이 서로 바로 옆에 있는 동일한 방(예: 욕실)에 함께 있음) 및 separate(욕실과 화장실에 각각 전용 공간이 있음)입니다. 이 속성은 방에 욕조와 화장실이 모두 없는 경우 설정하면 안 됩니다.

이 요소는 선택적으로 다음 하위 요소를 사용합니다.

  • <Bath> (선택사항): 이 요소의 존재는 객실에 욕조가 있음을 나타냅니다.

    속성은 다음과 같습니다.

    • bathtub (선택사항): 욕실에 욕조가 있음을 나타냅니다. 유효한 값은 0(또는 false) 및 1 (또는 true)입니다.
    • shower (선택사항): 욕실에 샤워기가 있음을 나타냅니다. 유효한 값은 0 (또는 false) 및 1 (또는 true)입니다.
  • <Toilet> (선택사항): 이 요소의 존재는 이 객실에 화장실이 있음을 나타냅니다.

    속성은 다음과 같습니다.

    • electronic_bidet (선택사항): 화장실에 전자 비데가 있음을 나타냅니다. 유효한 값은 0 (또는 false) 및 1 (또는 true)입니다.
    • mobility_accessible (선택사항): 화장실이 휠체어 접근 가능함을 나타냅니다. 유효한 값은 0(또는 false) 및 1 (또는 true)입니다.

예:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty 이 객실에 전용 노천탕이 있는 경우 이 요소를 제공합니다.
<AirConditioning> Optional empty 이 객실에 에어컨이 있는 경우 이 요소를 제공합니다.
<Balcony> Optional empty 이 객실에 발코니 또는 라나이가 있는 경우 이 요소를 제공합니다.
<Views> Optional Object 유효한 옵션은 다음과 같습니다.

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

JapaneseHotelRoomStyle에는 기본값이 없습니다. 값을 생략해도 XML 오류가 발생하지는 않지만, 사용자가 객실 스타일이나 침대로 필터링할 때 등록정보가 검색 결과에 표시되지 않습니다.

싱글 사이즈 침대 2개

다음 예시에서는 <RoomFeatures>를 사용하는 방법을 보여줍니다.

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

더블 사이즈 침대 2개

다음은 double 침대가 2개 있는 western 스타일 일본식 객실의 예입니다.

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


침대가 없는 일본식 객실

다음은 침대가 없는 일본식 방의 예입니다. japanese 스타일 객실에는 침대 정보가 필요하지 않습니다.

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

침대가 있는 일본식/서양식 혼합 객실

다음은 king 크기 침대가 있는 japanese_western 스타일 객실의 예시입니다.

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

파트너가 japanese_western 객실에 침대 수 정보가 없는 경우 다음 예시를 따르세요.

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

<PackageData>

숙박 시설의 객실 패키지에 관한 여정 독립적인 메타데이터를 정의합니다. 이 요소에는 파트너 및 호텔과 관련이 있지만 일정과는 관련이 없는 정보가 포함됩니다. 의도된 목적은 모든 여정 외 데이터를 한 번 정의하고 여정 데이터에서 이를 참조하는 것입니다.

<PackageData> 요소는 거래 메시지 XML 계층 구조의 다음 위치에 표시됩니다.

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

<PackageData> 요소는 <RoomData>와 유사하지만 실제 객실 설명에 포함되지 않는 요금 기능과 약관을 설명합니다. <RoomData><PackageData>를 함께 사용하여 객실 패키지 및 요금 기능에 관한 세부정보를 제공합니다. 패키지에 포함되지 않은 개별 객실의 경우 <RoomData>만 사용합니다.

동일한 회의실 또는 회의실 번들에 대해 <RoomData><PackageData> 요소를 모두 정의할 수 있습니다. Google에서 검색 결과에 해당 객실 또는 패키지를 표시할 때 하이픈으로 구분된 두 설명이 모두 포함됩니다.

속성의 단일 <PackageData> 요소를 업데이트하는 경우 속성의 모든 <PackageData><RoomData> 요소를 업데이트해야 합니다. 각 <PropertyDataSet>은 속성에 관한 모든 데이터로 간주되며 기존 데이터를 덮어씁니다.

자세한 내용은 Room Bundle 메타데이터를 참고하세요.

구문

<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>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <!-- Add Loyalty point information -->
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

속성

<PackageData> 요소에 속성이 없습니다.

하위 요소

<PackageData> 요소에는 다음과 같은 하위 요소가 있습니다.

하위 요소 필수 여부 유형 설명
<BreakfastIncluded> Optional boolean 이 패키지에 요금과 함께 조식이 포함되는지 여부를 지정합니다. 유효한 값은 0 (또는 false) 및 1(또는 true)입니다.

<BreakfastIncluded> 대신 <Meals>을 사용하는 것이 좋습니다.

<ChargeCurrency> Optional enum 사용자가 예약을 결제하는 시점과 장소입니다. 이 요소는 <Result>에서 <ChargeCurrency>과 동일한 구문을 사용합니다.

기본값은 web입니다.

<CheckinTime> Optional Time 가장 빠른 체크인 시간입니다. 시간은 호텔의 현지 시간으로 24:00 미만이어야 합니다.
<CheckoutTime> Optional Time 호텔의 현지 시간으로 가능한 가장 늦은 체크아웃 시간입니다.
<Description> Optional Object 패키지에 대한 자세한 설명입니다. 이 요소에는 다른 요소나 <Name> 요소로 설명되지 않는 정보가 포함되어야 합니다. 객실 설명을 지정할 때는 모든 글자를 대문자로 사용하면 안 됩니다.

<Description> 요소는 필수 속성 textlanguage가 있는 단일 하위 요소 <Text>를 사용합니다. text 속성은 설명이고 language 속성은 다음 예와 같이 두 글자로 된 언어 코드를 지정합니다.

<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>를 사용합니다.

  • 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 meals, breakfast only, dinner only, breakfast and dinner)가 작동하려면 <Breakfast><Dinner>included 속성이 제공되어야 합니다.

<Name> Required string 패키지의 이름입니다. 이 값은 호텔 방문 페이지에 표시되는 값과 일치해야 합니다. 이 요소의 값을 모두 대문자로 설정하지 마세요.

이 요소는 textlanguage의 두 속성이 있는 단일 하위 요소 <Text>를 사용합니다. text 속성은 설명이고 language 속성은 다음 예와 같이 두 글자로 된 언어 코드를 지정합니다.

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer 객실 패키지가 적용되는 최대 투숙객 수입니다. 예를 들어 대형 스위트룸은 물리적으로 6명의 게스트를 수용할 수 있지만 최대 4명의 게스트만 수용하도록 설계되었습니다.

이 값은 <Capacity> 요소보다 작거나 같아야 합니다. <Capacity> 요소는 방에 실제로 수용할 수 있는 인원수입니다.

<Occupancy> 값은 1에서 99 사이의 양의 정수여야 합니다.

<RoomBundle><PackageData> 모두에 이 요소를 지정하면 <RoomBundle>의 값이 우선합니다.

참고:

<Occupancy>에는 게스트 유형(성인 또는 아동)을 지정하는 <OccupancyDetails>이(가) 함께 올 수 있습니다. 하위 요소의 구문과 설명은 <OccupancyDetails>를 참고하세요.
<PackageID> Required string

패키지의 고유 ID입니다. 이 ID를 사용하여 가격 업데이트의 <Result> 블록과 Room 번들 데이터를 일치시킵니다. 자세한 내용은 Room 번들 메타데이터를 참고하세요.

(이 ID를 사용하여 객실 패키지 데이터를 인라인으로 정의할 때 단일 트랜잭션 메시지에서 사용되는 공통 객실 패키지 정의를 참조할 수도 있습니다.)

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

참고: 모든 속성을 설정하는 것이 좋습니다. 하나 이상의 속성이 설정되지 않으면 피드 상태 경고 메시지가 생성됩니다.

속성을 설정하지 않으면 요금이 환불 가능으로 표시되지 않습니다. 속성은 다음과 같습니다.

  • 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이 설정되지 않은 경우 기본값은 자정입니다.

    이 속성의 값은 시간 형식을 사용합니다.

속성을 설정할 때는 다음 사항에 유의하세요.

  • available 또는 refundable_until_days이 설정되지 않은 경우 요금이 환불 가능으로 표시되지 않습니다.
  • available0 또는 false이면 다른 속성은 무시됩니다. 다른 속성 중 하나 또는 둘 다 설정되어 있어도 요금이 환불 가능으로 표시되지 않습니다.
<MembershipBenefits Included> Optional boolean 요금에는 숙박 기간 동안의 엘리트 등급 혜택이 포함됩니다. 다음 매개변수가 포함됩니다.
  • ProgramName: 엘리트 등급 프로그램의 이름
  • ProgramLevel: 프로그램 수준입니다. 예를 들면 'Gold'입니다.
  • NightlyValue (optional): 혜택의 일일 값입니다.
<CarRentalIncluded> Optional boolean 요금에는 숙박 기간 동안의 무료 렌터카가 포함됩니다.
<MilesIncluded> Optional boolean 요금에 항공사 마일리지가 포함됩니다. 매개변수는 다음과 같습니다.
  • NumberOfMiles: 여정당 마일 수입니다.
  • Provider: 항공사 마일리지 제공업체입니다.
  • LoyaltyCampaignID: Google에서 구성하고 업데이트한 특정 포인트 캠페인을 식별하는 고유 ID입니다. 호텔 가격에 적립 포인트를 추가합니다.

    <MilesIncluded> 요소를 포함하려면 충성도 캠페인 구성에 캠페인 ID가 구성되어야 합니다. Google에서 결과에 포인트가 표시되는 방식에 관한 구체적인 세부정보는 포인트 캠페인 구성에 따라 결정됩니다.

    <MilesIncluded> 요소에는 획득한 포인트 수를 계산하는 하위 요소 <NumberOfMiles>이 있습니다. <NumberOfMiles>이 설정되지 않은 경우 획득한 포인트는 포인트 적립 캠페인 구성에 따라 결정됩니다.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • 참고: <NumberOfMiles><Provider>은 선택사항입니다.

<OnPropertyCredit> Optional boolean 요금에는 숙박 시설 내 크레딧 (식음료, 리조트, 스파 등)이 포함됩니다. 매개변수:
  • Amount: 여정당 크레딧 값(현지 통화)입니다.
<AirportTransportationIncluded> Optional Object 요금에는 인근 공항 왕복 무료 교통편이 포함되어 있습니다. 선택사항인 direction 속성은 전송의 방향을 지정합니다. 유효한 값은 다음과 같습니다.
    from: 공항에서 숙소까지 교통편이 제공됩니다. 방향을 지정하지 않으면 이 값이 기본값입니다. to: 숙박 시설에서 공항까지 교통편이 제공됩니다. round_trip: 공항 왕복 교통편이 제공됩니다.

단일 객실 패키지

다음 예에서는 성인 1명과 아동 1명으로 구성된 2인용 객실 번들을 정의하고 조식을 포함합니다.

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

여러 객실 패키지

다음 예시는 여러 Room 번들의 룸 및 패키지 메타데이터를 정의합니다.

<?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>
        <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      </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>를 사용하여 여정을 삭제할 수 있습니다. 거래 메시지를 사용하여 가격과 재고를 업데이트하는 방법에 대한 자세한 내용은 인벤토리 추가 및 업데이트를 참고하세요.

메시지 크기가 100MB를 초과하지 않는 한 단일 트랜잭션 메시지에는 원하는 수의 <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. -->
    <!-- Child occupancy rates should only be sent through Live pricing
         with context and not through Pull or Changed pricing -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

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

    <MilesIncluded>
      <NumberOfMiles>integer</NumberOfMiles>
      <Provider>
        <Text language="en" text="provider-name">
      </Provider>
      <!-- Add Loyalty point information -->
      <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
  ...
  </Transaction>

속성

<Result> 요소는 다음과 같은 속성을 포함합니다.

속성 필수 여부 유형 설명
mergeable Optional boolean 기본적으로 특정 호텔 및 숙박 일정 쌍의 새 가격은 Google 캐시에 있는 이전 (만료되지 않은) 가격을 덮어씁니다. 병합 가능한 속성을 사용하면 이전 가격 정보를 삭제하지 않고도 Google의 캐시에 추가 가격을 저장할 수 있습니다. 컨텍스트 응답이 있는 실시간 가격 쿼리에는 항상 이 속성이 true로 설정됩니다(거래 메시지 응답과 관계없음).

하위 요소

<Result> 요소에는 다음과 같은 하위 요소가 있습니다.

하위 요소 필수 여부 유형 설명
<AllowablePointsOfSale> Optional Object 호텔에 적합한 하나 이상의 방문 페이지입니다. 방문 페이지는 최종 사용자의 예약 절차를 처리할 수 있는 웹사이트입니다. 특정 방문 페이지를 명시적으로 포함하고 다른 방문 페이지를 제외하려면 방문 페이지 파일에서 <PointOfSale> 요소의 id 속성과 일치하는 <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 Date 형식을 사용하는 일정의 체크인 날짜입니다. <Nights> 요소와 <Checkin> 요소의 조합이 여정을 구성합니다.
Optional string 지원 중단됨: 호텔과 연결된 추가 데이터를 전달하는 데 사용할 수 있는 맞춤 필드를 정의합니다. 다음 요소 이름으로 최대 5개의 맞춤 값을 전달할 수 있습니다.
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

<Custom> 요소를 사용하면 임의의 데이터를 전달할 수 있습니다. 예를 들어 이 필드에 값을 지정하면 방문 페이지 파일에서 이 값을 사용하여 방문 페이지의 맞춤 URL을 구성합니다. 맞춤 필드당 글자 수는 200자(영문 기준)로 제한됩니다. 자세한 내용은 방문 페이지 파일 을 참고하세요. <Rate> 요소에 제공된 <Custom> 요소는 <RoomBundle> 요소로 상속되지 않습니다. 각 <RoomBundle>에서 <Custom> 속성을 별도로 정의해야 합니다.

중요: CUSTOM 변수를 사용하려면 기술계정 관리자 (TAM)에게 문의하세요.

<ExpirationTime> Optional DateTime 가격이 만료된 것으로 간주되는 날짜와 시간입니다 (최소 3시간).

가격 책정 구조에 중요하지 않은 경우 만료 타임스탬프를 제공하지 않는 것이 좋습니다.

Google에서는 만료된 가격을 제공하지 않으며, 가격이 만료된 모든 여행 일정은 실시간 가격 쿼리를 사용할 수 있게 됩니다.

<MilesIncluded> Optional boolean 요금에 항공사 마일리지가 포함됩니다. 매개변수는 다음과 같습니다.
  • NumberOfMiles: 여정당 마일 수입니다.
  • Provider: 항공사 마일리지 제공업체입니다.
  • LoyaltyCampaignID: Google에서 구성하고 업데이트한 특정 포인트 캠페인을 식별하는 고유 ID입니다. 호텔 가격에 적립 포인트를 추가합니다.

    <MilesIncluded> 요소를 포함하려면 캠페인 ID가 포인트 캠페인 구성에 구성되어야 합니다. Google에서 결과에 포인트가 표시되는 방식에 관한 구체적인 세부정보는 포인트 캠페인 구성에 따라 결정됩니다.

    <MilesIncluded> 요소에는 획득한 포인트 수를 계산하는 하위 요소 <NumberOfMiles>이 있습니다. <NumberOfMiles>이 설정되지 않은 경우 획득한 포인트는 포인트 적립 캠페인 구성에 따라 결정됩니다.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • 참고: <NumberOfMiles><Provider>은 선택사항입니다.

<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 방문 페이지 변수를 채우는 데도 사용됩니다. 자세한 내용은 Room 번들 메타데이터를 참고하세요.

<Result> 요소에서 <PackageID><RoomID>를 정의하려면 <RoomBundle>를 포함해야 합니다. 하지만 <Result> 요소 대신 <RoomBundle> 요소 내에서만 패키지 및 룸 ID를 지정하는 것이 좋습니다.

<Property> Required string 연결된 데이터 (가격, 숙박 일정, 객실 번들 또는 메타데이터)의 영향을 받는 호텔의 ID입니다. 이 요소의 값은 문자열이어야 합니다. 이 요소의 값은 호텔 목록 피드에 정의한 숙박 시설 <id>와 일치해야 합니다.
<Rates> Optional <Rates> 하나 이상의 <Rate> 블록을 위한 컨테이너입니다. <Rates>의 각 <Rate>는 객실/일정 조합의 서로 다른 가격을 정의합니다.

동일한 객실/여행 일정 조합에 요금이 여러 개 있거나 <Result> 수준에서 요금을 지정할 수 없는 경우 <Rates> 요소를 사용합니다. 예를 들어 조건부 요금, 특별 요금, 객실 패키지의 조건부 요금 또는 다양한 숙박 인원에 대해 여러 요금을 정의합니다.

참고: <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"/>

참고: 모든 속성을 설정하는 것이 좋습니다. 하나 이상의 속성이 설정되지 않으면 피드 상태 경고 메시지가 생성됩니다.

속성을 설정하지 않으면 요금이 환불 가능으로 표시되지 않습니다. 속성은 다음과 같습니다.

  • 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이 설정되지 않은 경우 기본값은 자정입니다.

    이 속성의 값은 시간 형식을 사용합니다.

속성을 설정할 때는 다음 사항에 유의하세요.

  • available 또는 refundable_until_days이 설정되지 않은 경우 요금이 환불 가능으로 표시되지 않습니다.
  • available0 (또는 false)이면 다른 속성은 무시됩니다. 다른 속성 중 하나 또는 둘 다 설정되어 있어도 요금이 환불 가능으로 표시되지 않습니다.
<RoomBundle> Optional <RoomBundle> 객실의 가격이 책정된 실제 설명, 편의시설의 포장, 지정된 호텔 및 일정의 일부 구매 정책 세부정보에 관한 정보의 컨테이너입니다.

일반적으로 이 요소를 사용하여 기본 객실과 동일한 숙박 시설 내의 다양한 유형의 객실의 요금을 정의합니다. 인라인으로 Room Bundle 설명을 정의할 수 있지만 별도의 트랜잭션 메시지를 사용하여 해당 정보를 정의해야 합니다. Google은 향후 모든 가격 업데이트에서 메타데이터를 반복하지 않고 참조할 수 있도록 메타데이터를 저장합니다.

<RoomID> Optional string 사전 정의된 객실 데이터에 매핑할 객실의 고유 ID입니다. PARTNER-ROOM-ID 방문 페이지 변수를 채우는 데도 사용됩니다. 자세한 내용은 Room 번들 메타데이터를 참고하세요.

<Result> 요소에서 <PackageID><RoomID>를 정의하려면 <RoomBundle>를 포함해야 합니다. 하지만 <Result> 요소 대신 <RoomBundle> 요소 내에서만 패키지 및 룸 ID를 지정하는 것이 좋습니다.

<Tax> Optional float 객실의 최종 가격에 대해 계산된 세금입니다. <Tax> 요소는 세금의 3자리 통화 코드를 정의하는 단일 필수 속성인 currency를 사용합니다. 예를 들면 USD입니다. <Baserate>이 0보다 큰 경우 <Tax> 요소가 필요합니다.

<Baserate> 요소의 'all_inclusive' 속성이 명시적으로 true로 설정된 경우 이 값을 설정하는 것은 선택사항입니다.

<Unavailable> Optional Object 일정을 예약할 수 없음을 나타냅니다. 여행 일정을 사용할 수 없는 이유를 더 자세히 설명하는 컨테이너 역할을 합니다. 다음과 같은 사용 불가능 이유 중 하나 이상이 <Unavailable> 태그 아래에 중첩될 수 있습니다.
  • <NoVacancy/>: 숙박 기간 중 하나 이상의 밤에 판매 가능한 객실이 없습니다.
  • <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/>: 요청된 속성 식별자가 인식되지 않았습니다.
  • <InvalidOccupancy/>: 요청된 숙박 인원이 숙박 시설에서 지원되지 않습니다.
  • <PriceIssue/>: 가격에 문제가 있어 전송되지 않았습니다.
  • <InternalError reason=""/>: 열거되지 않은 오류가 발생했습니다. 선택사항인 이유 속성은 오류를 텍스트로 보고할 수 있습니다.
  • <OtherRestriction restriction=""/>: 열거되지 않은 예약 제한으로 인해 여정을 사용할 수 없습니다. 선택사항인 제한 속성을 사용하면 제한을 텍스트로 보고할 수 있습니다.

다중 속성 예

다음 예에서는 두 숙박 시설의 일정과 가격을 정의합니다.

<?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>
    <MilesIncluded>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines"/>
      </Provider>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
</Transaction>

이 예시에는 설명, 사진 및 캡션, 방 이름, 수용 인원과 같은 방에 관한 세부정보가 표시되지 않습니다.

Google에서 저장하는 별도의 트랜잭션 메시지에서 해당 정보를 한 번 정의할 수 있습니다. 그런 다음 모든 후속 가격 및 인벤토리 업데이트에서 이를 참조할 수 있습니다. 자세한 내용은 Room 번들 메타데이터를 참고하세요.

다중 요금 예

다음 예에서는 다양한 숙박 인원에 대한 여러 요금이 있는 단일 운항 일정과 숙박 시설을 정의합니다. <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개, 최소 숙박 일수 미만이고 지정된 날짜에 이미 예약된 여정 1개, 도착일에 숙박 시설이 문을 닫지만 숙박 기간에 문을 여는 여정 1개를 정의합니다.

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

하나 이상의 <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>
          ...
        <MilesIncluded>
          <NumberOfMiles>integer</NumberOfMiles>
          <Provider>
            <Text language="en" text="provider-name">
          </Provider>
          <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
        </MilesIncluded>
          ...
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

속성

<Rates> 요소는 다음과 같은 속성을 포함합니다.

속성 필수 여부 설명
rate_rule_id Optional 조건부 요금의 경우 이 ID는 요금을 요금 규칙 정의 파일의 정의와 일치시킵니다. 이 입력란의 글자 수 제한은 40자(영문 기준)입니다.

하위 요소

<Rates> 요소에는 다음과 같은 하위 요소가 있습니다.

하위 요소 필수 여부 유형 설명
<AllowablePointsOfSale> Optional Object 호텔에 적합한 하나 이상의 방문 페이지입니다. 이 요소는 <Result><AllowablePointsOfSale>과 동일한 구문을 사용합니다.
<Baserate> Required float 숙박 기간의 객실 가격입니다. 이 요소는 <Result><Baserate>과 동일한 구문을 사용합니다.

참고: <Rate> 아래의 <Baserate> 하위 요소는 사용할 수 없는 것으로 정의할 수 없습니다.

<ChargeCurrency> Optional enum 사용자가 예약을 결제하는 시점과 장소입니다. 이 요소는 <Result><ChargeCurrency>와 동일한 구문을 사용합니다.
Optional string 지원 중단됨: 호텔과 관련된 추가 데이터를 방문 페이지에 전달하는 데 사용할 수 있는 맞춤 필드입니다. 이 요소는 <Result><Custom[1‑5]>와 동일한 구문을 사용합니다. 맞춤 필드당 글자 수는 200자(영문 기준)로 제한됩니다. 자세한 내용은 방문 페이지 파일을 참고하세요. <Result> 요소에 <Custom> 요소가 제공되면 <RoomBundle> 요소에서 상속되지 않으며 각 <RoomBundle>에 대해 별도로 정의해야 합니다. 필요한 경우 <PackageData>에 포함할 수 있습니다.

중요: CUSTOM 변수를 사용하려면 기술계정 관리자 (TAM)에게 문의하세요.

<ExpirationTime> Optional DateTime 요율이 만료된 것으로 간주되는 날짜와 시간입니다. 이 요소는 <Result><ExpirationTime>와 동일한 구문을 사용합니다.
<MilesIncluded> Optional boolean 요금에 항공사 마일리지가 포함됩니다. 매개변수는 다음과 같습니다.
  • NumberOfMiles: 여정당 마일 수입니다.
  • Provider: 항공사 마일리지 제공업체입니다.
  • LoyaltyCampaignID: Google에서 구성하고 업데이트한 특정 포인트 캠페인을 식별하는 고유 ID입니다. 호텔 가격에 적립 포인트를 추가합니다.

    <MilesIncluded> 요소를 포함하려면 캠페인 ID가 포인트 캠페인 구성에 구성되어야 합니다. Google에서 결과에 포인트가 표시되는 방식에 관한 구체적인 세부정보는 포인트 캠페인 구성에 따라 결정됩니다.

    <MilesIncluded> 요소에는 획득한 포인트 수를 계산하는 하위 요소 <NumberOfMiles>이 있습니다. <NumberOfMiles>이 설정되지 않은 경우 획득한 포인트는 포인트 적립 캠페인 구성에 따라 결정됩니다.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • 참고: <NumberOfMiles><Provider>은 선택사항입니다.

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

참고: 모든 속성을 설정하는 것이 좋습니다. 하나 이상의 속성이 설정되지 않으면 피드 상태 경고 메시지가 생성됩니다.

속성을 설정하지 않으면 요금이 환불 가능으로 표시되지 않습니다. 속성은 다음과 같습니다.

  • 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이 설정되지 않은 경우 기본값은 자정입니다.

    이 속성의 값은 시간 형식을 사용합니다.

속성을 설정할 때는 다음 사항에 유의하세요.

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

      <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>
        </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>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<RoomBundle>

<Transaction> 메시지에서 <Result>의 하위 요소로 Room 번들의 가격과 이용 가능 여부를 정의합니다. 각 패키지 또는 일정 조합에 대해 별도의 요소를 정의합니다. Room Bundles의 패키지 및 약관을 정의하려면 <RoomData>를 사용하세요.

<RoomBundle> 요소는 거래 메시지 XML 계층 구조의 다음 위치에 표시됩니다.

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

자세한 내용은 Room 번들 사용을 참고하세요.

구문

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

      <!-- Add Loyalty point information -->
      <MilesIncluded>
        <NumberOfMiles>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>>
      </MilesIncluded>

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

    </RoomBundle>
    ...
  </Result>
</Transaction>

속성

<RoomBundle> 요소에 속성이 없습니다.

하위 요소

<RoomBundle> 요소에는 다음과 같은 하위 요소가 있습니다.

하위 요소 필수 여부 유형 설명
<Baserate> Required float 숙박의 객실 번들 가격을 정의합니다. 이 요소는 <Result><Baserate>와 동일한 구문을 사용하지만 다음 예외가 있습니다.
  • 일정에 객실을 사용할 수 없는 경우 <RoomBundle> 요소를 삭제하여 객실이 더 이상 인벤토리에 없음을 나타냅니다. 자세한 내용은 회의실 번들 삭제를 참고하세요.
<BreakfastIncluded> Optional boolean 이 객실 번들에 요금과 함께 조식이 포함되는지 여부를 지정합니다.
<ChargeCurrency> Optional enum 사용자가 예약을 결제하는 시점과 장소입니다. 이 요소는 <Result>에서 <ChargeCurrency>과 동일한 구문을 사용합니다.

기본값은 web입니다.

Optional string 지원 중단됨: Room 번들의 방문 페이지에 추가 데이터를 전달하기 위한 맞춤 필드입니다. 이러한 요소는 <Result>에서 <Custom[1-5]>와 동일한 구문을 사용합니다. 맞춤 필드당 200자(영문 기준)로 제한됩니다. 자세한 내용은 방문 페이지 파일을 참고하세요. 맞춤 변수는 거래 메시지에서 가격을 전송할 때만 표시됩니다. <Result> 요소에 <Custom> 요소가 제공되면 <RoomBundle> 요소에서 상속되지 않으며 각 <RoomBundle>에 대해 별도로 정의해야 합니다. 필요한 경우 <PackageData>에 포함할 수 있습니다.

중요: CUSTOM 변수를 사용하려면 기술계정 관리자 (TAM)에게 문의하세요.

<InternetIncluded> Optional boolean 객실 번들에 무료 인터넷 액세스가 포함되어 있지만 다른 번들에는 해당 편의시설이 포함되어 있지 않은 경우 모든 객실에 무료 인터넷을 제공하는 호텔의 객실 번들에는 이 요소를 설정하지 마세요. 이 요소는 객실에서 사용할 수 없는 객실 내 유선 인터넷 또는 무선 인터넷에는 적용되지 않습니다.
<MilesIncluded> Optional boolean 요금에 항공사 마일리지가 포함됩니다. 매개변수는 다음과 같습니다.
  • NumberOfMiles: 여정당 마일 수입니다.
  • Provider: 항공사 마일리지 제공업체입니다.
  • LoyaltyCampaignID: Google에서 구성하고 업데이트한 특정 포인트 캠페인을 식별하는 고유 ID입니다. 호텔 가격에 적립 포인트를 추가합니다.

    <MilesIncluded> 캠페인 ID를 포함하려면 로열티 캠페인 구성에서 구성해야 합니다. Google에서 결과에 포인트가 표시되는 방식에 관한 구체적인 세부정보는 포인트 캠페인 구성에 따라 결정됩니다.

    <MilesIncluded> 요소에는 획득한 포인트 수를 계산하는 하위 요소 <NumberOfMiles>이 있습니다. <NumberOfMiles>이 설정되지 않은 경우 획득한 포인트는 포인트 적립 캠페인 구성에 따라 결정됩니다.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • 참고: <NumberOfMiles><Provider>은 선택사항입니다.

<Occupancy> Required integer 이 요금에 허용되는 최대 숙박 인원을 지정합니다. 예를 들어 대형 스위트룸은 물리적으로 6명의 게스트를 수용할 수 있지만 '허니문 패키지'는 2명의 게스트만 허용합니다.

이 값은 방에 실제로 수용할 수 있는 인원수인 <Capacity>보다 작거나 같아야 합니다.

방문 페이지 URL에서 숙박 인원을 정의할 때는 변수 및 조건 사용에 설명된 대로 NUM-ADULTSNUM-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를 사용하여 Room 번들 데이터를 <PackageData>에서 전송된 데이터와 일치시킵니다. 자세한 내용은 Room 번들 메타데이터를 참고하세요. (이 ID를 사용하여 객실 패키지 데이터를 인라인으로 정의할 때 단일 트랜잭션 메시지에서 사용되는 공통 객실 패키지 정의를 참조할 수도 있습니다.)
<ParkingIncluded> Optional boolean 객실 번들에 무료 주차가 포함되는지 여부입니다. 이 호텔에서 주차는 유료 서비스입니다. 무료 주차를 제공하는 호텔의 경우 이 요소의 값을 지정하지 마세요.

유효한 값은 0 (또는 false) 및 1 (또는 true)입니다. 기본값은 false입니다.

<RatePlanID> Optional string 요금제 ID는 객실과 패키지 조합의 고유 식별자를 나타냅니다. 예를 들어 <RoomID> 값이 5이고 <PackageID> 값이 ABC인 경우 <RatePlanID>에 5-ABC 값을 사용할 수 있습니다. RatePlanID를 변수로 사용하여 동적 방문 페이지(이전 명칭: 판매 시점) URL을 빌드하는 것이 좋습니다.

자세한 내용은 변수 및 조건 사용을 참고하세요.

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

참고: 모든 속성을 설정하는 것이 좋습니다. 하나 이상의 속성이 설정되지 않으면 피드 상태 경고 메시지가 생성됩니다.

속성을 설정하지 않으면 요금이 환불 가능으로 표시되지 않습니다. 속성은 다음과 같습니다.

  • 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이 설정되지 않은 경우 기본값은 자정입니다.

    이 속성의 값은 시간 형식을 사용합니다.

속성을 설정할 때는 다음 사항에 유의하세요.

  • available 또는 refundable_until_days이 설정되지 않은 경우 요금이 환불 가능으로 표시되지 않습니다.
  • available0 (또는 false)이면 다른 속성은 무시됩니다. 다른 속성 중 하나 또는 둘 다 설정되어 있어도 요금이 환불 가능으로 표시되지 않습니다.
<RoomID> Required string 객실 데이터의 고유 ID입니다. 이 ID를 사용하여 룸 번들 데이터를 <RoomData>에서 전송한 데이터와 일치시킵니다. 자세한 내용은 Room Bundle 메타데이터를 참고하세요. (이 ID를 사용하여 객실 데이터를 인라인으로 정의할 때 단일 거래 메시지에서 공통 객실 정의를 참조할 수도 있습니다.)
<Tax> Required float 객실의 최종 가격에 대해 계산된 세금입니다. <Tax> 요소는 세금의 3자리 통화 코드를 정의하는 단일 필수 속성인 currency를 사용합니다. 예를 들어 미국 달러의 경우 USD을 사용합니다.

1인 숙박 번들

다음 예에서는 단일 점유 번들이 포함된 응답을 정의합니다. 사용자가 숙박 인원 선택기에서 1를 선택하면 Google은 숙박 인원과 관계없이 자격 요건을 충족하는 가장 저렴한 가격을 표시합니다.

1인 객실 요금을 사용할 수 없는 경우 Google에서 가장 낮은 2인 객실 요금을 표시합니다. 2인 이상 객실 요금이 여정에 대해 캐시된 경우 1인 객실 요금은 실시간으로 쿼리되지 않습니다.

이 예시에서는 <RoomID><PackageID> 요소를 사용하여 사전 정의된 룸 및 패키지 메타데이터를 참조합니다. <RoomData><PackageData> 요소를 사용하여 해당 정보를 정의합니다.

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

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

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


2개 이상의 점유

다음 예에서는 두 개 이상의 점유를 포함하는 응답을 정의합니다.

이 예시에서는 <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>


여러 객실 패키지

다음 예에서는 가능한 호스텔 객실 가격을 보여주기 위해 여러 Room 번들에서 Occupancy를 설정합니다.

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

      <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>
        </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>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

트랜잭션 메시지의 <Occupancy>는 객실 또는 패키지의 최대 투숙 인원을 지정합니다. <OccupancyDetails>에는 게스트 수와 유형 (성인 또는 어린이)과 같은 추가 정보가 포함될 수 있습니다.

<Result> 또는 <RoomBundle><Rates> 요소 내에 <Occupancy><OccupancyDetails>이 표시되면 요금이 숙박 세부정보에 의해 제한된다는 의미입니다.

<RoomBundle><OccupancyDetails>을 포함하는 경우 중첩된 <Rate> 요소와 함께 <Rate> 내에서 기본 <Occupancy>을 보낼 수 없습니다. 대신 다음 옵션 중 하나를 사용하는 것이 좋습니다.

  • <Rate>에서 점유율 생략: 이 경우 <Rate><RoomBundle>에서 직접 <OccupancyDetails>을 상속합니다.

또는

  • 중복 <OccupancyDetails>: 이 경우 <RoomBundle> 및 중첩된 <Rate> 요소 모두에 동일한 <OccupancyDetails>을 추가로 전송합니다.

구문

<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 하나 이상의 <Child> 요소를 위한 컨테이너입니다.
<Child age> Optional integer 이 자녀의 최대 연령입니다(예: <Child age="17">).

다음 예시에서는 <Results>, <RoomBundle> 또는 <Rates> 하위 요소 내에 <OccupancyDetails>가 표시되는 방법을 보여줍니다.

결과 응답

다음 예에서는 사용자가 게스트 수와 유형을 지정한 실시간 가격 쿼리에 대한 응답으로 하나의 숙박 일정과 하나의 숙박 시설에 대한 가격을 정의합니다. 여기서 <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>
        <AllowablePointsOfSale>
          <PointOfSale id="yourhotelpartnersite.com"/>
        </AllowablePointsOfSale>
      </Rate>
    </Rates>
  </Result>
</Transaction>

객실 패키지

다음 예에서는 환불 가능한 요금으로 2박 동안 성인 2명과 어린이 1명의 숙박을 정의합니다. 여기서는 <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>
      <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>
        </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>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>