쿼리 &힌트 XML 참조

이 섹션에서는 Google XML 기반 힌트 요청 메시지, 힌트 응답 메시지, 쿼리 메시지의 참조를 제공합니다.

<Hint> (힌트 응답 메시지)

힌트 응답 메시지의 루트 요소입니다. 힌트 응답 메시지는 가격을 재조정해야 하는 호텔/여행 일정 조합을 지정합니다. Google의 힌트 요청 메시지에 대한 응답입니다.

힌트 응답 메시지에는 Google이 마지막으로 서버로부터 성공적인 힌트 응답을 받은 이후 가격이 변경된 호텔만 지정해야 합니다.

힌트 응답 메시지는 다음 메서드 중 하나를 사용하여 Google에서 가격을 재조정해야 하는 호텔 및 여행 일정을 지정합니다.

  • 정확한 여행 일정: 체크인 날짜 및 숙박 기간의 조합입니다.

  • 체크인 날짜 범위: 첫 번째 체크인 날짜부터 마지막 체크인 날짜로 끝나는 체크인 날짜 범위를 지정합니다.

  • 범위 지정 숙박 (또는 범위 지정 여행 일정)

각 메서드에는 힌트 응답 메시지에 다른 구문이 필요합니다.

자세한 내용은 힌트 응답 메시지를 참고하세요.

문법

<Hint> 요소는 힌트 응답 메시지의 유형에 따라 다른 구문을 사용합니다.

정확한 여행 일정

다음은 힌트 응답 메시지의 정확한 여행 일정에 대한 문법을 보여줍니다.

<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <Property>hotel_ID</Property>
    ...
    <Stay>
      <CheckInDate>checkin_date</CheckInDate>
      <LengthOfStay>number_of_nights</LengthOfStay>
    </Stay>
  </Item>
  ...
</Hint>

체크인 범위

다음은 힌트 응답 메시지의 체크인 범위 문법입니다.

<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <!-- At least one is required -->
    <!-- Can be > 1 if MultipleItineraries is "checkin_range" in your
         QueryControl message -->
    <Property>hotel_ID</Property>
    [...]

    <!-- Required -->
    <FirstDate>first_checkin_date</FirstDate>
    <!-- Required -->
    <LastDate>last_checkin_date</LastDate>
  </Item>
  ...
</Hint>

원거리 숙소

다음은 힌트 응답 메시지에 표시되는 범위 지정 체류의 문법입니다.

<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <!-- At least one is required -->
    <!-- Can be > 1 if MultipleItineraries is "affected_dates" in your
         QueryControl message -->
    <Property>hotel_ID</Property>
    [...]

    <StaysIncludingRange>
      <!-- Required -->
      <FirstDate>first_date</FirstDate>

      <!-- Optional -->
      <LastDate>last_date</LastDate>
    </StaysIncludingRange>
  </Item>
  ...
</Hint>

속성

<Hint> 요소에는 선택적 속성(id)이 포함됩니다. 제공되는 경우 이 <Hint>를 기반으로 전송되는 <Query> 메시지에 hintId 속성으로 포함됩니다.

하위 요소

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

하위 요소 필수 여부 유형 힌트 응답 유형 설명
<CheckInDate> Required Date 정확한 여행 일정 숙박 일정의 체크인 날짜입니다.
<FirstDate> Required Date 체크인 범위 및 범위 지정 여행 일정 체크인 범위 또는 기간 지정 숙박 힌트 응답 메시지의 날짜 범위의 첫 번째 날짜입니다. 날짜도 포함됩니다.
<Item> Required Object 전체 업데이트할 호텔/여행 일정의 컨테이너입니다.
<LastDate> Required* Date 체크인 범위 및 범위 지정 여행 일정

체크인 범위 또는 기간 지정 숙박 힌트 응답 메시지의 기간 중 마지막 날짜입니다. 날짜도 포함됩니다.

* 이 요소는 원격 숙박의 선택사항입니다.

<LengthOfStay> Required integer 정확한 여행 일정 숙박 일정의 숙박 일수이며 양의 정수로 표시됩니다.
<Property> Required string 전체

호텔 목록과 동일한 ID를 사용하는 호텔 ID입니다. 단일 <Item> 블록에서 지정할 수 있는 <Property> 요소의 수는 힌트 응답 메시지의 유형에 따라 결정됩니다.

  • 정확한 여행 일정: 최대 100개의 호텔
  • 체크인 범위: <QueryControl> 메시지에서 <MultipleItineraries>"checkin_range" 로 설정한 경우 2개 이상입니다.
  • 범위 지정 숙박: <QueryControl> 메시지에서 <MultipleItineraries>"affected_dates" 로 설정한 경우 2개 이상.
<Stay> Required Object 정확한 여행 일정 정확한 여행 일정 힌트 응답 메시지의 <CheckinDate><LengthOfStay> 요소에 대한 컨테이너입니다. 각 <Item>에는 <Stay>가 하나만 포함될 수 있습니다.
<StaysIncludingRange> Required Object 원거리 여행 일정 범위가 지정된 숙박 힌트 응답 메시지에 있는 <FirstDate><LastDate> 요소의 컨테이너입니다.

예시

정확한 여행 일정

다음 예에서는 단일 속성 힌트 응답 메시지에 대한 여러 개의 운항 일정을 정의합니다.

<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <Property>12345</Property>
    <Stay>
      <CheckInDate>2018-07-03</CheckInDate>
      <LengthOfStay>3</LengthOfStay>
    </Stay>
  </Item>
  <Item>
    <Property>12345</Property>
    <Stay>
      <CheckInDate>2018-07-03</CheckInDate>
      <LengthOfStay>4</LengthOfStay>
    </Stay>
  </Item>
</Hint>

체크인 범위

다음 예시에서는 가격이 변경되었으며 다시 가져와야 하는 두 호텔을 지정합니다. Google은 숙박 시설 12345와 67890에 대한 7월 3일과 7월 6일 사이의 모든 일정을 가져옵니다.

<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <Property>12345</Property>
    <Property>67890</Property>
    <FirstDate>2018-07-03</FirstDate>
    <LastDate>2018-07-06</LastDate>
  </Item>
</Hint>

체크인 범위 메시지에서 단일 <Item>에 여러 속성을 지정할 수 있으려면 <QueryControl><MultipleItineraries> 값을 "checkin_range"로 설정해야 합니다.

원거리 숙소

다음 예시는 일정 기간 및 하루를 위한 범위별 숙박의 두 가지 용도를 보여줍니다.

<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <!-- Google fetches prices for all itineraries (first and last date are set) -->
  <Item>
    <Property>12345</Property>
    <StaysIncludingRange>
      <FirstDate>2018-07-03</FirstDate>
      <LastDate>2018-07-06</LastDate>
    </StaysIncludingRange>
  </Item>

  <!-- Google fetches prices for a single night (first date only) -->
  <Item>
    <Property>67890</Property>
    <StaysIncludingRange>
      <FirstDate>2018-07-03</FirstDate>
    </StaysIncludingRange>
  </Item>
</Hint>

범위 지정 숙박 일수 메시지가 단일 <Item>에 여러 속성을 지정할 수 있으려면 <QueryControl><MultipleItineraries> 값을 "affected_dates"로 설정해야 합니다.

이러한 각 예에서 Google은 <Query>로 응답하면 개발자는 지정된 호텔/여행 일정의 가격 업데이트가 포함된 <Transaction>로 응답해야 합니다.

<HintRequest>

힌트 요청 메시지의 루트 요소입니다. Google은 서버에 힌트 요청 메시지를 전송하고 Google이 마지막으로 서버에서 성공적인 힌트 응답을 수신한 이후 가격이 변경된 호텔 및 여행 일정을 지정하는 응답을 예상합니다.

가격 변경사항이 있는 경우 Google에서는 표시된 호텔 및 여행 일정의 업데이트된 가격 데이터를 가져오는 <Query>를 전송합니다.

자세한 내용은 힌트 요청 메시지를 참고하세요.

문법

<HintRequest> 요소는 다음 구문을 사용합니다.

문법

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

속성

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

하위 요소

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

하위 요소 유형 설명
<LastFetchTime> DateTime Google이 힌트 요청 메시지로 힌트 응답 메시지를 가져오는 데 마지막으로 성공한 시간입니다.

이 시간이 서버에서 마지막으로 가격을 업데이트한 시간보다 오래된 경우 변경된 호텔을 명시하는 힌트 응답 메시지로 응답해야 합니다.

최근에 성공한 가져오기가 없는 경우 큰 백로그와 관련된 더 심각한 문제를 방지하기 위해 고정된 간격 값으로 설정됩니다. 현재 고정 간격 값은 1, 000초이며 변경될 수 있습니다.

자세한 내용은 힌트 응답 메시지를 참고하세요.

예시

다음 예는 힌트 요청 메시지를 보여줍니다.

힌트 요청 메시지

다음 예는 힌트 요청 메시지를 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<HintRequest id="ABCDEF" timestamp="2018-06-07T16:20:00Z">
  <LastFetchTime>2018-03-25T00:04:09Z</LastFetchTime>
</HintRequest>

<Query>

Query 메시지의 루트 요소입니다. Query 메시지는 Google의 가격 또는 메타데이터 업데이트 요청입니다. 가져오기 및 변동된 가격 게재 모드에서 모두 사용됩니다.

Query 메시지에는 세 가지 유형이 있습니다.

  • 실시간 가격: Google은 특정 사용자 요청에 응답하여 실시간 가격 업데이트를 요청합니다. 파트너가 Live pricing query 메시지를 수신하면 파트너는 <Result> 요소에 요청된 가격 정보가 포함된 <Transaction> 메시지로 응답해야 합니다.

  • 컨텍스트 가격 책정: Google은 역사적으로 인기가 많은 컨텍스트를 기반으로 가격 캐시를 업데이트합니다. With context query 메시지를 수신하면 <Result> 요소에 요청된 가격 정보가 포함된 <Transaction> 메시지로 응답해야 합니다.

  • 메타데이터: Google은 지정된 호텔의 객실 및 객실 패키지와 관련된 메타데이터 업데이트를 요청합니다. Metadata Query 메시지를 수신하면 <PropertyDataSet> 요소의 방 및 객실 번들에 관한 데이터를 지정하는 <Transaction> 메시지로 응답해야 합니다.

자세한 내용은 가격 책정 쿼리의 경우 가격 책정 개요를, 메타데이터 쿼리의 경우 Room 번들 메타데이터를 참고하세요.

세 가지 유형의 문법은 아래에 설명되어 있습니다.

문법

<Query> 요소는 다음 구문을 사용합니다.

실시간 가격

<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
  <Checkin>YYYY-MM-DD</Checkin>
  <Nights>number_of_nights</Nights>
  <!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
  <FirstDate>YYYY-MM-DD</FirstDate>
  <LastDate>YYYY-MM-DD</LastDate>
  <!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
  <AffectedNights>number_of_nights</AffectedNights>
  <PropertyList>
    <Property>hotel_id</Property>
    ...
  </PropertyList>
  <!-- See documentation below for <Context> -->
  <Context>
   ...
  </Context>
</Query>

맥락 포함

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <Checkin>YYYY-MM-DD</Checkin>
  <Nights>number_of_nights</Nights>
  <!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
  <FirstDate>YYYY-MM-DD</FirstDate>
  <LastDate>YYYY-MM-DD</LastDate>
  <!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
  <AffectedNights>number_of_nights</AffectedNights>
  <PropertyContextList>
    <PropertyContext>
      <Property>hotel_id</Property>
      ...
      <!-- See documentation below for <Context> -->
      <Context>
      ...
      </Context>
    </PropertyContext>
  </PropertyContextList>
</Query>

메타데이터

<HotelInfoProperties>
  <Property>property_ID</Property>
  ...
</HotelInfoProperties>

속성

<Query> 요소는 하나의 속성(latencySensitive)을 포함할 수 있습니다.

latencySensitive 속성은 선택사항입니다. 제공되고 true로 설정된 경우 쿼리가 Live Pricing Query임을 나타냅니다. Google에서 latencySensitive 속성이 포함된 쿼리를 전송하도록 하려면 기술계정 관리자 (TAM)에게 문의하세요.

하위 요소

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

하위 요소 검색어 유형 유형 설명
<AffectedNights> Pricing integer 범위 지정 숙박 일수입니다. 이 요소는 변동된 요금과 함께 사용되는 범위 지정 숙박 가격 쿼리에만 사용됩니다.
<Checkin> Pricing Date 특정 가격 변경 날짜입니다.
<Context> Pricing (Live Pricing Queries only) <Context> 실시간 가격 쿼리의 경우 쿼리가 실행되는 특정 매개변수를 지정합니다. 하위 요소에는 다음이 포함됩니다.
  • <Occupancy>: 총 투숙객 수
  • <OccupancyDetails>: 게스트 유형(예: 성인 또는 어린이)
  • <UserCountry>: 사용자가 있는 국가입니다.
  • <UserDevice>: 게스트가 호텔을 검색하는 데 사용한 기기의 유형입니다(예: "mobile, 'tablet', 'desktop').

<Context> 요소는 단일 요청에서 반복될 수 있으므로 다른 점유율에 대한 쿼리가 가능합니다. 하위 요소, 구문, 예의 목록은 <Context>를 참고하세요.

<FirstDate> Pricing Date 가격이 적용되는 여행 일정의 시작일입니다. 이 요소는 변동된 가격 책정과 함께 사용되는 체크인 기간 가격 책정 쿼리에만 사용됩니다.
<HotelInfoProperties> Metadata string Google에서 메타데이터 Query 메시지에 업데이트된 객실 및 Room 번들 메타데이터를 원하는 하나 이상의 속성 이 요소는 호텔 속성 ID를 지정하는 하나 이상의 <Property> 요소를 포함할 수 있습니다.
<LastDate> Pricing Date 가격이 적용되는 여행 일정의 종료일입니다. 이 요소는 가져오기 + 힌트와 함께 사용되는 체크인 기간 가격 책정 쿼리에만 사용됩니다.
<Nights> Pricing integer 특정 숙박 일정의 숙박 일수(최대 30일)입니다.
<PropertyList> Pricing Object

가격 업데이트가 필요한 호텔의 ID가 하나 이상입니다.

<Property> 요소에 각 호텔을 정의합니다. 이 값은 호텔 목록의 호텔 ID와 일치하는 문자열입니다. 예:

<PropertyList>
  <Property>pid1</Property>
  <Property>pid2</Property>
</PropertyList>

예시

가격 책정 쿼리

다음 예시는 2018년 6월 10일부터 3박 동안 이용 가능한 호텔 집합의 가격 업데이트를 요청하는 가격 쿼리 메시지를 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <Checkin>2023-05-23</Checkin>
  <Nights>3</Nights>
  <PropertyList>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </PropertyList>
</Query>

실시간 가격 쿼리

다음 예시는 응답 시간 제한이 500밀리초인 실시간 가격 쿼리를 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
  <Checkin>2017-06-07</Checkin>
  <Nights>5</Nights>
  <DeadlineMs>500</DeadlineMs>
  <PropertyList>
    <Property>8675309</Property>
  </PropertyList>
  <Context>
    <Occupancy>4</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
      <Children>
        <Child age="8"/>
        <Child age="5"/>
      </Children>
    </OccupancyDetails>
    <UserCountry>US</UserCountry>
    <UserDevice>mobile</UserDevice>
  </Context>
</Query>

컨텍스트 쿼리 포함

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <Checkin>2023-05-23</Checkin>
  <Nights>2</Nights>
  <PropertyContextList>
    <PropertyContext>
      <Property>8675309</Property>
      <!-- In the future, occupancy and device might be specified -->
      <Context><UserCountry>US</UserCountry></Context>
      <Context><UserCountry>GB</UserCountry></Context>
    </PropertyContext>
    <PropertyContext>
      <Property>8675310</Property>
      <Property>8675311</Property>
      <Context><UserCountry>CA</UserCountry></Context>
    </PropertyContext>
  </PropertyContextList>
</Query>

메타데이터 쿼리

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <HotelInfoProperties>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </HotelInfoProperties>
</Query>

범위 지정 숙박 및 체크인 기간 가격 쿼리를 포함한 추가 예시는 Query 메시지 예시를 참조하세요.

<Context>

<Context> 요소는 게스트의 수와 유형, 사용자 국가, 사용자 기기 등 Live pricing query에 관한 정보를 설명합니다.

여러 <Context>가 다른 사용자 국가나 사용자 기기에서 사용되지 않습니다. 여러 숙박 인원을 쿼리하는 데 여러 <Context>를 사용하는 경우 각 숙박 인원 가격을 상응하는 숙박 시설/여행 일정의 추가 객실 번들로 제공하세요. 각 숙박 시설/여행 일정에는 여러 숙박 인원의 가격이 포함된 단일 <Result> 블록이 있어야 합니다.

<Context> 쿼리의 응답 세부정보는 <OccupancyDetails>를 참고하세요.

문법

<Context> 요소는 다음 구문을 사용합니다.

문법

<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
  <Checkin>date</Checkin>
  <Nights>number_of_nights</Nights>
  <DeadlineMs>number_of_milliseconds</DeadlineMs>
  <PropertyList>
    <Property>property_ID</Property>
  </PropertyList>
  <Context>
  <Occupancy>total_number_of_guests</Occupancy>
  <OccupancyDetails>
    <NumAdults>number_of_adults</NumAdults>
    <Children>
      <Child age=age_of_one_child_guest/>
      <Child age=age_of_one_child_guest/>
    </Children>
  </OccupancyDetails>
  <UserCountry>end_user_country</UserCountry>
  <UserDevice>user_device_type</UserDevice>
  </Context>
</Query>

하위 요소

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

하위 요소 검색어 유형 유형 설명
<Occupancy> Pricing integer 총 투숙객 수를 지정합니다.

필수는 아니지만 <Occupancy>가 포함된 쿼리는 각 <Occupancy> 쿼리에 정의된 적절한 Room 번들이 포함된 트랜잭션 메시지를 생성합니다.

참고:<Occupancy>가 항상 쿼리에 표시되는 것은 아닙니다. 이러한 경우 모든 숙박 인원의 가격을 반환해야 합니다.

<OccupancyDetails> Pricing Object 앞에 <Occupancy>가 옵니다. 다음을 포함한 유형별로 게스트를 지정합니다.

  • <NumAdults>: 성인 투숙객 수
  • <Children><Child="age">: 어린이 (일반적으로 0~17세)인 게스트를 지정하고 각 자녀의 연령을 선택적으로 포함합니다.
  • 필수는 아니지만 <OccupancyDetails>가 포함된 쿼리는 쿼리되는 각 <Occupancy>에 정의된 적절한 Room 번들이 포함된 트랜잭션 메시지를 생성합니다.

    참고: <OccupancyDetails>가 항상 쿼리에 표시되는 것은 아닙니다. 이러한 경우 모든 참석자가 성인이라고 가정해야 합니다.

<UserCountry> Pricing string

사용자가 위치한 국가를 기준으로 요금을 필터링합니다. 값은 2자리 국가 코드(예: 미국의 경우 “US”) 또는 지역 코드(예: '유럽'의 경우 "EU")입니다.

<UserCountry>가 정의된 쿼리에서는 쿼리된 국가에 대해 적절한 <Rates> 블록이 정의된 트랜잭션 메시지가 생성됩니다.

<UserDevice> Pricing string

사용자가 검색하는 기기 유형별로 요금을 필터링합니다. 가능한 값은 다음과 같습니다.

  • mobile
  • desktop
  • tablet

<UserDevice>가 정의된 쿼리는 쿼리된 기기 유형에 정의된 적절한 <Rates> 블록이 포함된 트랜잭션 메시지가 생성됩니다.

예시

숙박 인원

다음 예시는 <Context><Occupancy>의 실시간 가격 쿼리를 보여줍니다. 실시간 가격 쿼리는 성인 투숙객 3명에 대한 것입니다.

<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
  <Checkin>2017-06-07</Checkin>
  <Nights>4</Nights>
  <DeadlineMs>500</DeadlineMs>
  <PropertyList>
    <Property>45617</Property>
  </PropertyList>
  <Context>
    <Occupancy>3</Occupancy>
    <UserCountry>US</UserCountry>
    <UserDevice>mobile</UserDevice>
  </Context>
</Query>

숙박 인원 세부정보

다음 예는 <Context> 내에 <OccupancyDetails>를 사용한 실시간 가격 쿼리를 보여줍니다. 실시간 가격 쿼리는 투숙객 4명(이 중 2명은 어린이)을 대상으로 하며, 다음과 같이 휴대기기에서 미국 투숙객 예약에 적용되는 요금을 찾습니다.

<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
  <Checkin>2017-06-07</Checkin>
  <Nights>5</Nights>
  <DeadlineMs>500</DeadlineMs>
  <PropertyList>
    <Property>8675309</Property>
  </PropertyList>
  <Context>
    <Occupancy>4</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
      <Children>
        <Child age="4"/>
        <Child age="12"/>
      </Children>
    </OccupancyDetails>
    <UserCountry>US</UserCountry>
    <UserDevice>mobile</UserDevice>
  </Context>
</Query>

여러 컨텍스트

다음 예시에서는 실시간 가격 쿼리에 <Context> 요소를 추가로 사용하는 방법을 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
  <Checkin>2017-06-07</Checkin>
  <Nights>4</Nights>
  <DeadlineMs>500</DeadlineMs>
  <PropertyList>
    <Property>45617</Property>
  </PropertyList>
  <Context>
    <Occupancy>3</Occupancy>
    <UserCountry>US</UserCountry>
    <UserDevice>mobile</UserDevice>
  </Context>
  <Context>
    <Occupancy>6</Occupancy>
    <OccupancyDetails>
      <NumAdults>4</NumAdults>
      <Children>
        <Child age="6"/>
        <Child age="10"/>
      </Children>
    </OccupancyDetails>
    <UserCountry>US</UserCountry>
    <UserDevice>mobile</UserDevice>
  </Context>
</Query>