숙박 기간 (LoS) 요금

Travel Partner Prices API

Travel Partner Prices API는 숙박 시설 가격을 Google에 전송하기 위한 RESTful 인터페이스를 제공합니다.

서비스: travelpartnerprices.googleapis.com

이 서비스를 호출하려면 Google에서 제공하는 클라이언트 라이브러리를 사용하는 것이 좋습니다. 애플리케이션에서 자체 라이브러리를 사용하여 이 서비스를 호출해야 한다면 테크니컬 어카운트 매니저 (TAM)에게 문의하여 이 서비스의 검색 문서를 받으세요.

서비스 엔드포인트

서비스 엔드포인트는 API 서비스의 네트워크 주소를 지정하는 기준 URL입니다. 하나의 서비스는 여러 서비스 엔드포인트를 포함할 수 있습니다. 이 서비스에는 다음 서비스 엔드포인트가 포함되고, 나열된 모든 URI가 이 서비스 엔드포인트와 관련됩니다.

https://travelpartnerprices.googleapis.com
메서드
ingestLosPropertyPrices POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices

지정된 숙박 시설에 대해 제공된 숙박 기간별 가격을 업로드합니다.

JSON으로 인코딩된 LoS 가격 메시지 (아래 참고)가 HTTP 메시지 본문으로 필요합니다.

account_id: 이 문자열 값은 Hotel Center의 계정 설정 페이지에 나열된 '계정 ID' 값입니다.

property_id: 이 요소의 값은 호텔 목록 피드의 등록정보 ID와 일치하는 문자열이어야 합니다.

API 인증

여행 파트너 가격 API는 OAuth 2.0을 사용하여 애플리케이션을 인증하므로 API에 액세스할 수 있습니다.

OAUTH 2.0 설정 안내에 따라 여행 파트너 가격 API에 대한 승인을 받으세요.

Travel Partners Prices API의 새 프로젝트를 만들 때는 Travel Partner API에 제공된 안내와 유사하게 새 Google Cloud 콘솔 프로젝트에 대한 액세스를 사용 설정해야 합니다.

Travel Partner API에 제공된 단계를 참고하고 'Travel Partner API'의 모든 인스턴스를 'Travel Partner Prices API'로 대체하여 프로젝트를 사용 설정합니다.

Travel Partner Prices API의 범위는 다음과 같습니다. "https://travelpartnerprices.googleapis.com"

Travel Partner Prices API의 업로드 경로는 다음과 같습니다. "/travel/lodging/uploads/accounts/<account_id>/property_data"

요청

구문

LoS Prices 메시지는 다음 구문을 사용합니다.

{
  "requestTime": YYYY-MM-DDTHH:mm:ss.SSSZ,
  "propertyPrices": {
    "arrivalDatePrices": [{
      "startDate": {
        "year": int
        "month": int
        "day": int
      }
      "endDate": {
        "year": int
        "month": int
        "day": int
      }
      "productPrices": [{
        "roomTypeId": "string"
        "ratePlanId": "string"
        "occupancyPrices": [{
          "adults": int
          "prices": [{
            "rateRuleId": "string"
            "currencyCode": "string"
            "rates": [night_1,night_2,...]
            "taxes": [night_1,night_2,...]
            "fees": [night_1,night_2,...]
          }]
        }]
      }]
    }]
  }
}

요소 및 속성

숙박 기간 가격 메시지에는 다음과 같은 요소와 속성이 있습니다.

요소 발생 횟수 유형 설명
requestTime 1 string

LoS 가격 메시지가 전송된 시점을 RFC 3339 형식의 문자열로 표현합니다.

이전 24시간 이내에 requestTime로 전송된 메시지는 처리되고 그렇지 않은 메시지는 삭제됩니다.

메시지는 수신된 순서와 관계없이 requestTime 순서대로 처리됩니다. 예를 들어 requestTime2019-05-03T14:09:00Z인 가격 업데이트는 requestTime2019-05-03T14:10:00Z인 동일한 여정의 메시지 이후에 수신되므로 나중에 타임스탬프가 지정된 메시지가 우선합니다.

RFC 3339에서는 YYYY-MM-DDThh:mm:ss.SSZ와 같이 완전히 지정된 날짜 및 시간을 요구합니다. 시간대는 필수이며, UTC로부터의 양수 또는 음수 hh:mm 오프셋으로 지정하거나 UTC의 약어인 Z로 지정합니다.

초수는 선택사항이며 나노초 단위까지 표현할 수 있습니다. 예를 들어 2017-01-15T01:30:15.01-08:00은 2017년 1월 15일 01:30(PST)에서 15.01초가 지난 시간을 인코딩합니다.

propertyPrices 1 Object 숙박 시설의 가격입니다. 이 propertyPrices 내의 모든 가격은 동일한 숙박 시설에 적용됩니다.

이 요소는 반복되지 않습니다. 여러 숙박 시설의 가격을 전송하려면 HTTP 요청을 여러 번 (숙박 시설당 최소 1회) 해야 합니다.

arrivalDayPrices[] 1..n Object 도착 날짜의 가격입니다. 이 arrivalDayPrices 내의 모든 가격은 특정 숙박 시설에 적용되지만 도착 날짜가 다릅니다.
startDate 1 Object productPricesstartDateendDate 사이의 모든 도착 날짜에 적용됩니다(포함).

범위가 아닌 도착 날짜 하나만 지정하려면 startDateendDate에 도착 날짜를 입력합니다.

startDate.year 1 integer startDate의 연도입니다. 1~9999 사이의 값이어야 합니다.
startDate.month 1 integer 연도의 월입니다. 1~12 사이의 값이어야 합니다.
startDate.day 1 integer 월의 일입니다. 1~31 사이여야 하고 해당 연도 및 월에 유효해야 합니다.
endDate 0..1 Object productPrices는 startDateendDate 사이의 모든 도착 날짜에 적용됩니다(양 끝값 포함).

범위가 아닌 하나의 도착 날짜만 지정하려는 경우 endDate을 생략할 수 있습니다.

endDate.year 1 integer endDate의 연도입니다. 1~9999 사이의 값이어야 합니다.
endDate.month 1 integer 연도의 월입니다. 1~12 사이의 값이어야 합니다.
endDate.day 1 integer 월의 일입니다. 1~31 사이여야 하고 해당 연도 및 월에 유효해야 합니다.
productPrices[] 1..n Object 제품의 가격입니다. 이 productPrices 내의 모든 가격은 특정 숙박 시설, 도착 날짜 조합에 적용되지만 제품은 다릅니다.
roomTypeId 0..1 string 이 가격이 참조하는 객실의 고유 ID입니다. 이 ID를 사용하여 Room 번들 데이터를 roomdata에서 전송한 데이터와 일치시킵니다. 자세한 내용은 Room Bundle 메타데이터를 참고하세요.
ratePlanId 0..1 string 이 가격이 참조하는 패키지 데이터의 고유 ID입니다. 이 ID를 사용하여 Room 번들 데이터를 packagedata에서 전송한 데이터와 일치시킵니다. 자세한 내용은 Room Bundle 메타데이터를 참고하세요.
occupancyPrices[] 1..n Object 숙박 요금입니다. 이 occupancyPrices 내의 모든 가격은 특정 숙박 시설, 도착 날짜, 제품 조합에 적용되지만 숙박 인원에는 적용되지 않습니다.
adults 1 integer 성인과 어린이를 포함하여 객실당 예약할 수 있는 최대 투숙객 수입니다. 이 값은 해당 occupancyPrices 필드 내의 모든 요금에 대해 설정되며 1~99 사이의 양의 정수여야 합니다.

참고: 성인 5명 이상의 숙박을 보내려면 지원팀에 문의하세요.

prices[] 1..n Object 숙박 기간별 가격입니다. prices 내의 모든 가격은 특정 숙박 시설, 도착 날짜, 제품, 숙박 인원 조합에 적용됩니다.
rateRuleId 0..1 string 조건부 요금의 경우 이 ID는 요금 규칙 정의 파일의 정의와 요금을 일치시킵니다. 이 입력란의 글자 수 제한은 40자(영문 기준)입니다.
currencyCode 1 string ratestaxes이 제공되는 3자리 통화 코드입니다. 예를 들어 미국 달러의 경우 "USD"입니다.
rates[] 30 float 숙박 기간 가격의 기본 요금 구성요소입니다.

해당 taxes 값이 제공되면 이 요율에는 세금이 포함되지 않습니다. 총가격은 관련 요금과 세금의 합계입니다.

n 인덱스의 값은 n+1 체류 기간에 해당합니다.

한 번에 30개 가격의 전체 LoS 세트를 전송해야 합니다. 30개 미만을 보내면 제공된 모든 LoS 가격이 정상적으로 처리되고 나머지 요금은 LoS 30까지 사용할 수 없습니다. 30개를 초과하여 전송하면 30번째 요율을 초과하는 가격은 삭제됩니다 .

이용할 수 없는 숙박 기간은 0로 표시해야 합니다.

taxes[] 30 float 숙박 기간 가격의 세금 구성요소입니다.

n 인덱스의 값은 n+1 체류 기간에 해당합니다.

fees[] 30 float 숙박 기간 가격의 수수료 구성요소입니다.

n 인덱스의 값은 n+1 체류 기간에 해당합니다.

LOS에 따른 요금 및 세금

다음 예에서는 한 체크인 날짜의 최소 숙박 일수를 2로 설정하고 다른 체크인 날짜의 예약 가능 여부를 없음으로 설정하는 방법을 보여줍니다. endDate 없이 2023년 9월 1일부터 startDate을 설정하면 한 날짜의 요율만 지정하는 것이므로 endDate을 생략할 수 있습니다.

2로 설정된 occupancyPrices 배열을 사용하면 숙박 인원마다 다른 요금을 설정할 수 있습니다. 따라서 2023년 9월 4일에 예약이 불가능하면 사용 가능한 rates가 제한됩니다.

표시된 taxes 배열은 비율의 10% 로 계산됩니다.

표시된 fees 배열은 숙박당 50달러의 청소 요금을 적용합니다.

체크인 날짜 전체(2023년 9월 3일)를 사용할 수 없는 경우 날짜를 명시적으로 전송하고 rates, taxes, productPrices를 생략하여 요청된 날짜에 예약이 불가능함을 나타내야 합니다.

{
  "requestTime": "2023-08-10T12:15:222",
  "propertyPrices": {
    "arrivalDatePrices": [
      {
        "startDate": {
          "year": 2023,
          "month": 9,
          "day": 1
        },
        "productPrices": [
          {
            "occupancyPrices": [
              {
                "adults": 2,
                "prices": [
                  {
                    "currencyCode": "USD",
                    "rates": [
                      0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "taxes": [
                      0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "fees": [
                      0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "startDate": {
          "year": 2023,
          "month": 9,
          "day": 3
        },
        "productPrices": [
          {
            "occupancyPrices": [
              {
                "adults": 2,
                "prices": [
                  {
                    "currencyCode": "USD",
                    "rates": [
                      0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "taxes": [
                      0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "fees": [
                      0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

응답 본문

성공한 경우 응답 본문은 다음과 같은 구조의 데이터를 포함합니다.

JSON 표현
        {
          "name": "string"
        }
        
필드
name 수정된 PropertyPrices의 리소스 이름입니다.
accounts/{account}/properties/{property} 형식을 사용합니다.