개요
이 API를 사용하면 가능한 할인을 지정할 수 있습니다. 지정된 프로모션 중에서 Google은 가장 낮은 가격으로 이어지는 요건을 충족하는 프로모션 또는 프로모션 세트를 적용합니다. 조건이 충족될 때 가격을 올리거나 내릴 수 있는 임의의 요금 조정을 지원하는 API를 찾고 있다면 Rate Modifications API를 사용해 보세요. 두 API가 모두 있는 경우 할인 혜택 전에 요금 수정이 적용됩니다.
요청
구문
Promotions
메시지는 다음 문법을 사용합니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
id="message_ID"
timestamp="timestamp">
<HotelPromotions hotel_id="HotelID" action="[overlay]">
<Promotion id="PromotionID" action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
</BookingDates>
<BookingWindow min="integer_or_duration" max="integer_or_duration"/>
<Ceiling amount_per_night="float"/>
<Floor amount_per_night="float"/>
<CheckinDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckoutDates>
<!-- Specify only one of percentage, percentage_of_base, fixed_amount,
fixed_amount_per_night, fixed_price, or fixed_price_per_night;
applied_nights is only used with percentage, fixed_amount_per_night,
and fixed_price_per_night. -->
<Discount percentage="float" percentage_of_base="float"
fixed_amount="float" fixed_amount_per_night="float"
fixed_price="float" fixed_price_per_night="float"
applied_nights="integer_1_to_99" rank="integer_1_to_99">
<!-- FreeNights may not be used in conjunction with attributes on Discount -->
<FreeNights stay_nights="integer" discount_nights="integer"
discount_percentage="float" night_selection="[cheapest|last]"
repeats="boolean"/>
</Discount>
<!-- Exactly one of Discount or BestDailyDiscount must be specified.
Specify only one of percentage, fixed_amount, or fixed_price. -->
<BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<InventoryCount min="integer" max="integer"/>
<LengthOfStay min="integer" max="integer"/>
<MembershipRateRule id="RateRuleID"/>
<MinimumAmount before_discount="integer"/>
<Occupancy min="integer" max="integer"/>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<Stacking type="[any|base|none|second]"/>
<StayDates application="[all|any|overlap]">
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</StayDates>
<UserCountries type="[include|exclude]">
<Country code="country_code"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
요소 및 속성
프로모션 메시지에는 다음과 같은 요소와 속성이 있습니다.
요소 / @속성 | 발생 횟수 | 유형 | 설명 |
---|---|---|---|
Promotions | 1 | Complex element | 프로모션 메시지의 루트 요소입니다. |
Promotions / @partner | 1 | string | 이 메시지의 파트너 계정입니다. 이 문자열 값은 Hotel Center의
계정 설정 페이지에 표시된 '파트너 키' 값입니다.
여러 계정의 피드를 제공하는 백엔드가 있는 경우 이 값은 동일한 계정의 |
Promotions / @id | 1 | string | 이 요청 메시지의 고유 식별자입니다. 이 값은 응답 메시지에 반환됩니다. 허용되는 문자는 a~z, A~Z, 0~9, _(밑줄), - (대시)입니다. |
Promotions / @timestamp | 1 | DateTime | 이 메시지의 생성 날짜 및 시간입니다. |
Promotions / HotelPromotions | 0..n | HotelPromotions | 숙박 시설의 프로모션입니다. 각 프로모션은 단일 숙박 시설에 적용됩니다.
|
Promotions / HotelPromotions / @hotel_id | 1 | string | 숙박 시설의 고유 식별자입니다. 이 값은 호텔 목록 피드의 <listing> 요소에서
<id> 를 사용하여 지정된 호텔 ID와 일치해야 합니다. 호텔 ID는 Hotel Center에도 표시됩니다. |
Promotions / HotelPromotions / @action | 0..1 | enum | 지정된 경우 값은 지정하지 않으면 현재 메시지에 지정된 각 프로모션은 다음 중 하나입니다.
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | 숙박 시설의 단일 프로모션입니다. 프로모션을 99개 이상 사용해야 하는 경우 기술계정 관리자 (TAM)에게 문의하세요. |
Promotions / HotelPromotions / Promotion / @id | 1 | string | 프로모션의 고유 식별자입니다. 허용되는 최대 문자 수는 40자(영문 기준)입니다. 허용되는 문자는 a~z, A~Z, 0~9, _ (밑줄), - (하이픈), .입니다. (마침표)를 누릅니다. |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | 지정된 경우 값은
|
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | 프로모션을 적용하기 위해 예약이 이루어져야 하는 시점을 정의하는 하나 이상의 범위의 컨테이너입니다. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | 프로모션이 적용되려면 예약이 이루어져야 하는 기간을 지정합니다. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date 또는 DateTime | 기간의 시작 날짜 또는 날짜 시간입니다 (속성의 시간대를 기준으로 함).
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date 또는 DateTime | 기간의 종료일 또는 날짜 시간(숙박 시설의 시간대를 기준으로 함)입니다(기간에 포함).
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | 기간에 허용되는 요일입니다. 지정하지 않으면 기간 내 모든 날짜가 허용됩니다. 문자열의 각 문자는 하루를 지정합니다. 예를 들어 'MTWHF'는 기간에 평일이 허용됨을 지정합니다. 유효한 문자는 다음과 같습니다.
모든 문자 조합이 유효합니다. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | 체크인 날짜를 기준으로 예약이 이루어져야 하는 기간을 지정합니다 (숙박 시설의 시간대를 기준으로 함). 예를 들어 예약 기간은 체크인 날짜로부터 최소 7일 이상, 최대 180일 이내로 설정할 수 있습니다. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | 프로모션이 적용되려면 예약 시 체크인까지의 최소 기간이 경과해야 합니다. 지정되지 않거나 값이 0 이면 최솟값이 없습니다.
유효한 값 유형은 다음과 같습니다.
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | 프로모션이 적용되도록 예약해야 하는 체크인 전 최대 일수입니다. 지정되지 않거나 값이 0 인 경우 최대값은 없습니다.
유효한 값 유형은 다음과 같습니다.
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
프로모션이 적용된 후 요금을 설정할 수 있는 최대 값에 대한 제한을 정의합니다. 프로모션은 항상 중복 적용이 구성된 경우 예:
계산 순서는 다음과 같습니다.
60이 더 엄격한 전체 상한선이라는 사실은 관련이 없습니다. 자체 프로모션에만 유효하며 전체 프로모션 스택에 걸쳐 단일 상한선이 있을 수 없기 때문입니다. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
할인이 적용된 후 숙박 요금을 설정할 수 있는 최대 금액입니다.
|
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
프로모션이 적용된 후 요금을 설정할 수 있는 최소값에 대한 제한을 정의합니다. 프로모션은 항상 무료 숙박에 중복 적용이 구성된 경우 예:
계산 순서는 다음과 같습니다.
90이 전체적으로 더 엄격한 하한선이라는 사실은 관련이 없습니다. 자체 프로모션에만 유효하며 전체 프로모션 스택에 걸쳐 단일 하한선을 설정할 수 없기 때문입니다. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
할인이 적용된 후 1박 요금을 설정할 수 있는 최소 금액입니다.
|
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | 프로모션이 적용되기 위해 체크인이 이루어져야 하는 시점을 정의하는 하나 이상의 기간을 위한 컨테이너입니다. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | 프로모션이 적용되려면 체크인이 언제 이루어져야 하는지 지정하는 기간입니다. 하나 이상의 프로모션을 삭제하는 경우에는 이 요소가 필요하지 않습니다. YearlessDate 형식도 지원됩니다.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | 기간의 시작일(숙박 시설의 시간대를 기준으로 함)입니다(기간에 포함). 이 날짜는 end 날짜 이전이거나 그와 같아야 합니다. start 가 지정되지 않으면 시작일 측면에서 날짜 범위가 사실상 무제한입니다. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | 기간의 종료일(숙박 시설의 시간대 기준)입니다(기간에 포함). 이 날짜는 start 날짜와 같거나 그 이후여야 합니다. end 가 지정되지 않으면 종료일 측면에서 기간이 사실상 무제한입니다. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | 기간에 허용되는 요일입니다. 지정하지 않으면 기간 내 모든 날짜가 허용됩니다. 문자열의 각 문자는 하루를 지정합니다. 예를 들어 'MTWHF'는 기간에 평일이 허용됨을 지정합니다. 유효한 문자는 다음과 같습니다.
모든 문자 조합이 유효합니다. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | 프로모션이 적용되기 위해 결제가 이루어져야 하는 시점을 정의하는 하나 이상의 기간을 위한 컨테이너입니다. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | 프로모션이 적용되기 위해 체크아웃이 이루어져야 하는 기간을 지정하는 날짜 범위입니다. 하나 이상의 프로모션을 삭제하는 경우에는 이 요소가 필요하지 않습니다. YearlessDate 형식도 지원됩니다.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | 기간의 시작일(숙박 시설의 시간대를 기준으로 함)입니다(기간에 포함). 이 날짜는 end 날짜 이전이거나 그와 같아야 합니다. start 가 지정되지 않으면 시작일 측면에서 날짜 범위가 사실상 무제한입니다. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | 기간의 종료일(숙박 시설의 시간대 기준)입니다(기간에 포함). 이 날짜는 start 날짜와 같거나 그 이후여야 합니다. end 가 지정되지 않으면 종료일 측면에서 기간이 사실상 무제한입니다. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | 기간에 허용되는 요일입니다. 지정하지 않으면 기간 내 모든 날짜가 허용됩니다. 문자열의 각 문자는 하루를 지정합니다. 예를 들어 'MTWHF'는 기간에 평일이 허용됨을 지정합니다. 유효한 문자는 다음과 같습니다.
모든 문자 조합이 유효합니다. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | 프로모션 대상 사용자 기기를 나열하는 컨테이너입니다. 지정된 경우 나열된 기기의 요건을 충족하는 사용자에게만 할인 요금이 제공됩니다. 지정하지 않으면 모든 기기의 요건을 충족하는 사용자에게 할인 요금이 제공됩니다. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | 프로모션 대상인 사용자 기기 유형을 하나 정의합니다. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | 기기 유형 값은 desktop , tablet 또는 mobile 여야 합니다. |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount |
이 프로모션에 적용할 할인을 지정합니다. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float |
할인율을 지정하는 0~100 사이의 십진수 값입니다.
예:
|
Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float |
기본 할인율을 지정하는 0~100 사이의 십진수 값입니다.
예:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float |
예:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float |
각 예:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float |
예:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float |
예:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer |
할인이 적용되는 숙박 일수로, 가장 저렴한 숙박부터 시작됩니다. 1~99 사이의 정수여야 합니다. 지정하지 않으면 모든 숙박에 할인이 적용됩니다. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | 최소 숙박 일수가 충족되는 경우 숙박 기간 중 특정 밤에 적용되는 할인을 지정합니다. 이 요소가 사용되면 상위 Discount 요소의 속성은 허용되지 않습니다. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | 할인을 적용하기 위해 필요한 숙박 일수입니다. 각 할인은 숙박 일수의 별도 세그먼트에 적용됩니다. 예를 들어 |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | 숙박 일수의 각 세그먼트 내에서 할인된 숙박 일수입니다. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | 할인 숙박에 적용되는 할인입니다. 이 값이 50 이면 선택한 숙박 일수별로 50% 할인됩니다. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | cheapest 또는 last 중 하나여야 합니다. last 인 경우 숙박 일수 세그먼트의 끝에 있는 숙박 일수에 할인이 적용됩니다. cheapest 인 경우 숙박 일수 세그먼트 내에서 가장 저렴한 숙박 일수가 할인됩니다. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | 할인을 여러 숙박 일수 세그먼트에 적용할 수 있는지 여부입니다. 예를 들어 |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | 이 프로모션에 순위를 할당하고 순위 선택으로 선택합니다. 이 경우 순위가 가장 낮은 프로모션만 적용되도록 선택됩니다. 값은 1~99 사이여야 합니다(양 끝값 포함). 여러 프로모션이 동일한 순위를 공유하는 경우 하나가 임의로 선택되어 적용됩니다. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount |
숙박 1박에 적용할 수 있는 일일 할인을 지정합니다. 이는 전체 숙박에 할인을 적용하는 각 숙박 시설에는 '최고의 일일'로 간주되는 프로모션 그룹이 하나 있을 수 있습니다. 즉, 숙박하는 밤마다 요건을 충족하고 해당 밤에 가장 큰 할인을 제공하는 단일 '최고의 일일' 프로모션이 선택되어 적용될 수 있습니다.
이 유형의 할인으로 |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float |
할인율을 지정하는 0~100 사이의 십진수 값입니다.
예:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float |
단일 예:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float |
예:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | 이 프로모션을 적용하기 위해 이용 가능한 객실 수에 대한 제한을 정의합니다. 제약 조건을 충족하는 숙박 일수에만 할인이 적용됩니다. fixed_amount 할인과 함께 사용할 수 없습니다. 사용 가능한 객실 수는 OTA_HotelInvCountNotifRQ (InvCount ) 또는 OTA_HotelAvailNotifRQ(BookingLimit )로 지정됩니다. |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | 프로모션을 1박 요금에 적용하려면 예약할 수 있는 최소 객실 수입니다. 지정하지 않으면 최솟값은 없습니다. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | 프로모션을 숙박 요금에 적용할 수 있는 최대 객실 수입니다. 지정하지 않으면 최대값이 없습니다. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | 이 프로모션을 적용할 수 있는 숙박 일수 한도를 정의합니다. 숙박 기간이 최솟값과 최댓값을 벗어나면 프로모션이 적용되지 않습니다. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | 프로모션이 적용되기 위해 숙박에 허용되는 최소 숙박 일수입니다. 지정하지 않으면 최솟값은 없습니다. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | 프로모션이 적용될 수 있는 숙박의 최대 숙박 일수입니다. 지정하지 않으면 최대값이 없습니다. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
연결된 할인에 대한 특정 UI 처리를 트리거하는 멤버십 요금 규칙의 컨테이너입니다.
|
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
멤버십 프로그램과 연결된 요금 규칙의 ID입니다. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | 프로모션을 적용하려면 초과해야 하는 최소 일일 객실 요금 합계 (AmountBeforeTax 또는 AmountAfterTax 중 더 큰 값 사용)를 지정합니다. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | 프로모션이 적용되려면 초과해야 하는 값입니다. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | 이 프로모션이 적용되는 숙박 인원에 대한 제한사항을 정의합니다. 숙박 인원이 최솟값과 최댓값을 벗어나면 프로모션이 적용되지 않습니다. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | 할인을 적용하려면 사용자가 지정한 숙박 인원이 이 값 이상이어야 합니다. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | 할인을 적용하려면 사용자가 지정한 숙박 인원이 이 값을 초과하지 않아야 합니다. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | 프로모션이 적용되는 요금제 목록의 컨테이너입니다.
<RatePlans> 를 지정하지 않으면 프로모션이 모든 요금제에 적용됩니다. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | 요금제를 지정합니다. 요금제는 트랜잭션(숙박 시설 데이터), OTA_HotelRateAmountNotifRQ, OTA_HotelAvailNotifRQ 메시지에 정의된 대로 패키지, 요금, 이용 가능 여부의 조합으로 정의되며 PackageID로 식별됩니다. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | 요금제의 고유 식별자입니다. 이 값은 거래 (숙박 시설 데이터) 메시지의 <PackageData> 에 있는 PackageID 값과 <OTA_HotelRateAmountNotifRQ> 및 <OTA_HotelAvailNotifRQ> 메시지 모두의 <StatusApplicationControl> 에 있는 RatePlanCode 속성에 매핑됩니다.
허용되는 최대 문자 수는 50자(영문 기준)입니다. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | 프로모션이 적용되는 객실 유형 목록의 컨테이너입니다.
프로모션은 지정된 각 <RoomType> 에 적용됩니다. <RoomTypes> 가 지정되지 않으면 프로모션이 모든 방에 적용됩니다. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | 객실 유형을 지정합니다. 객실 유형은 거래 (숙박 시설 데이터) 메시지의 <RoomData> 요소에 정의되며 <RoomID> 값을 사용하여 참조됩니다. (<RoomID> 값은 OTA_HotelRateAmountNotifRQ 메시지의 InvTypeCode 속성에서도 참조됩니다.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | 인벤토리의 고유 식별자 (객실 유형)입니다. 이 값은 거래 (숙박 시설 데이터) 메시지의 <RoomID> 에 매핑됩니다.
허용되는 최대 문자 수는 50자(영문 기준)입니다. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | 프로모션을 결합하는 방법을 지정합니다. 지정하지 않으면 '유형'이 base 으로 간주됩니다. |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | 이 설정에 따라 단일 요금에 여러 프로모션을 적용할 수 있습니다.
허용되는 조합 중 가장 큰 할인을 제공하는 프로모션 세트가 요금에 적용됩니다. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | 시즌별 할인을 적용하는 등 프로모션 적용 방식을 결정하는 하나 이상의 기간을 위한 컨테이너입니다. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | 프로모션을 적용하는 방법을 설명합니다. 유효한 값은 다음과 같습니다.
이 속성은 항상 지정되어야 합니다.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | 프로모션이 적용될 날짜를 지정하는 기간입니다. YearlessDate 형식도 지원됩니다.
특정 요일에 프로모션을 허용하도록 |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | 기간의 시작일(숙박 시설의 시간대를 기준으로 함)입니다(기간에 포함). 이 날짜는 end 날짜 이전이거나 그와 같아야 합니다. start 가 지정되지 않으면 시작일 측면에서 날짜 범위가 사실상 무제한입니다.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | 기간의 종료일(숙박 시설의 시간대 기준)입니다(기간에 포함). 이 날짜는 start 날짜와 같거나 그 이후여야 합니다. end 가 지정되지 않으면 날짜 범위는 start 날짜 이후로 사실상 무제한입니다.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | 기간에 허용되는 요일입니다. 지정하지 않으면 기간 내 모든 날짜가 허용됩니다. 문자열의 각 문자는 하루를 지정합니다. 예를 들어 'MTWHF'는 기간에 평일이 허용됨을 지정합니다. 유효한 문자는 다음과 같습니다.
모든 문자 조합이 유효합니다. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | 프로모션 대상 사용자 위치 (국가)를 나열하는 컨테이너입니다. 지정된 경우 나열된 국가의 자격 요건을 충족하는 사용자에게만 할인 요금이 제공됩니다. 지정하지 않으면 모든 국가의 자격 요건을 충족하는 사용자에게 할인 요금이 제공됩니다. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | UserCountries 사양의 유형입니다.
유효한 값은 UserCountries UserCountries UserCountries |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | 사용자가 프로모션 혜택을 받을 수 있는 국가를 하나 정의합니다. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | DE 또는 FR 와 같은 CLDR 국가 코드입니다. 일부 국가의 경우 CLDR 국가 코드가 2자리 ISO 국가 코드와 다릅니다. 또한 CLDR 지역 코드는 지원되지 않습니다. |
예
속성당 프로모션은 500개로 제한됩니다. 숙박 시설에서 프로모션을 삭제하려면 '프로모션 1개 삭제' 예시를 참고하세요.
기본 메시지
다음 예는 기본 Promotions
메시지를 보여줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<BookingWindow min="7" max="330"/>
<CheckinDates>
<DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
</CheckoutDates>
<Devices>
<Device type="mobile"/>
<Device type="tablet"/>
</Devices>
<Discount percentage="20" applied_nights="2"/>
<LengthOfStay min="2" max="14"/>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<Stacking type="base"/>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
인벤토리 상태
다음 예는 도착일이 가까워 재고가 초과된 경우 할인을 만드는 방법을 보여줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow max="7"/>
<Discount percentage="10"/>
<InventoryCount min="3"/>
</Promotion>
</HotelPromotions>
</Promotions>
프로모션 1개 삭제하기
다음 예는 숙박 시설의 프로모션 하나를 삭제하는 방법을 보여줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1" action="delete"/>
</HotelPromotions>
</Promotions>
모든 프로모션 삭제
다음 예는 숙박 시설의 모든 프로모션을 삭제하는 방법을 보여줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>
모든 프로모션 오버레이
다음 예는 속성의 <HotelPromotions>
를 하나 이상의 새 프로모션으로 오버레이하는 방법을 보여줍니다. action="overlay"
인 경우 현재 메시지에 지정된 프로모션을 저장하기 전에 저장된 모든 프로모션이 삭제됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<Discount percentage="10"/>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<Stacking type="base"/>
</Promotion>
</HotelPromotions>
</Promotions>
3가지 서로 다른 비슷한 사진 유형
다음 예는 세 가지 프로모션 (base
, second
, any
)이 적용되는 사례를 보여줍니다. 다른 프로모션이 더 큰 할인을 제공하므로 none
프로모션은 적용되지 않습니다. 원래 가격이 100달러였다면 할인된 가격은 72.90달러입니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="second"/>
</Promotion>
<Promotion id="3">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="4">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
비슷한 이미지 없음 비슷한 이미지 유형
다음 예는 다른 프로모션 조합이 더 적은 할인을 제공하므로 none
프로모션이 사용되는 사례를 보여줍니다. 원래 가격이 100달러였다면 할인된 가격은 75달러입니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="3">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
예약 기간 기간 경계
다음 예는 BookingWindow
요소가 ISO 8601 Duration 유형으로 정의된 시작 및 종료 경계와 함께 사용되는 사례를 보여줍니다. 이 예약 기간 제한사항에 따라 도착 전날 18:00 이전 또는 도착 전 2일 12:00 이후에 예약해야 합니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
예약 날짜 DateTime 경계
다음 예는 BookingDates
요소가 start
및 end
속성과 함께 DateTime 유형으로 사용되는 사례를 보여줍니다. 이 예약 날짜 제한에 따라 2020년 7월 1일 6시 30분부터 2020년 7월 2일 18시 45분 사이에 예약해야 합니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01T06:30:00" end="2020-07-02T18:45:00"/>
</BookingDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
연도가 없는 기간
다음 예는 CheckInDates
요소에 연도가 없는 start
및 end
필드가 있는 DateRanges
가 포함된 사례를 보여줍니다. 이 예시에서 프로모션은 연도와 관계없이 12월 29일부터 1월 2일까지의 체크인 날짜에 적용됩니다. 연도가 없는 기간이 새해 경계를 넘으면 잘못된 것이므로 DateRange는 인접한 두 기간으로 표현됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
FreeNights 할인
다음 예에서는 지정된 예약 기간 동안 숙박한 4박마다 2박에 대해 50% 할인을 제공합니다. 10박 일정의 경우 총 4박이 50% 할인됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2022-01-01" end="2022-05-31"/>
</BookingDates>
<Discount>
<FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
다음 예에서는 지정된 숙박 기간 동안 3박 숙박 시 1박에 대해 50% 할인을 제공합니다. 겹치는 숙박 일수만 할인 요건 충족에 반영됩니다. 2022년 1월 1일에 체크인하고 2022년 1월 7일에 체크아웃하는 다음 숙박 일정의 경우 요건을 충족하는 숙박 일수 및 할인이 다음과 같이 적용됩니다.
- 2022-01-01 (숙박)
- 2022-01-02 (유지)
- 2022-01-03
- 2022-01-04 (할인)
- 2022-01-05 (숙박)
- 2022-01-06 (숙박)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
순위 선택
다음 예에서는 20% 할인과 15% 할인이라는 두 가지 할인을 제공합니다. 평가 중에는 순위가 낮은 15% 할인만 적용됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
BestDailyDiscount
다음 예에서는 Discount
와 함께 쌓인 BestDailyDiscount
를 적용하여 2박 숙박에 할인을 제공합니다.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="HotelID" action="overlay">
<Promotion id="general">
<BestDailyDiscount fixed_amount="20"/>
</Promotion>
<Promotion id="may">
<BestDailyDiscount fixed_amount="50"/>
<StayDates application="overlap">
<DateRange start="2023-05-01" end="2023-05-31"/>
</StayDates>
</Promotion>
<Promotion id="fiesta">
<Discount fixed_amount_per_night="5"/>
<Stacking type="any"/>
</Promotion>
</HotelPromotions>
</Promotions>
2023년 4월 30일부터 2023년 5월 2일까지 2박 숙박을 예로 들 수 있습니다. 계산을 위해 가장 큰 할인을 제공하는 일일 할인 조합이 먼저 찾습니다.
첫 번째 밤의 경우 '일반' 프로모션만 요건을 충족하며 고정 할인 20원이 적용됩니다.
2번째 밤에는 '5월' 프로모션이 '일반' 할인보다 더 큰 할인을 제공합니다. 따라서 'may'가 선택되면 고정 할인 금액은 50입니다.
그러면 숙박에 대해 'fiesta' 프로모션이 적용되어 1박당 5, 000원 또는 총 10, 000원의 할인이 적용됩니다. 'fiesta'의 스택 유형이 any
로 설정되어 있으므로 가장 좋은 일일 할인 조합과 함께 적용할 수 있습니다. base
로 설정된 경우 최적의 일일 할인 또는 'fiesta' 할인 조합만 적용됩니다. 자세한 내용은 Stacking
설명을 참고하세요.
`전체적으로 숙박 가격에 20 + 50 + 10 = 80의 고정 금액 할인이 적용됩니다.
응답
구문
PromotionsResponse
메시지는 다음 문법을 사용합니다.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code"
status="issue_type">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
요소 및 속성
PromotionsResponse
메시지에는 다음과 같은 요소와 속성이 있습니다.
요소 / @속성 | 발생 횟수 | 유형 | 설명 |
---|---|---|---|
PromotionsResponse | 1 | Complex element | 수신된 프로모션 요청 메시지의 성공 또는 문제를 나타내는 루트 요소입니다. |
PromotionsResponse / @timestamp | 1 | DateTime | 이 메시지의 생성 날짜 및 시간입니다. |
PromotionsResponse / @id | 1 | string | 연결된 프로모션 메시지의 고유 식별자입니다. |
PromotionsResponse / @partner | 1 | string | 이 메시지의 파트너 계정입니다. |
PromotionsResponse / Success | 0..1 | Success | 프로모션 메시지가 경고, 오류, 실패 없이 성공적으로 처리되었음을 나타냅니다.
각 메시지에 |
PromotionsResponse / Issues | 0..1 | Issues | 프로모션 메시지를 처리하는 중에 발생한 하나 이상의 문제를 위한 컨테이너입니다.
각 메시지에 |
PromotionsResponse / Issues / Issue | 1..n | Issue | 프로모션 메시지를 처리하는 중에 발생한 경고, 오류 또는 실패에 관한 설명입니다. 이러한 문제에 관한 자세한 내용은 피드 상태 오류 메시지를 참고하세요. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | 문제의 식별자입니다. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | 발생한 문제의 유형입니다. 유효한 값은 |
예
성공
다음은 처리가 완료된 프로모션 메시지에 대한 응답입니다.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
문제
다음은 오류로 인해 처리되지 않은 프로모션 메시지에 대한 응답입니다.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</PromotionsResponse>