نمای کلی
این API به شما امکان می دهد تخفیف های احتمالی را مشخص کنید. از میان تبلیغات مشخص شده، Google تبلیغات واجد شرایط یا مجموعه تبلیغاتی را که به پایینترین قیمت منجر میشود، اعمال میکند. اگر به دنبال API هستید که از تنظیمات نرخ دلخواه پشتیبانی میکند که میتواند در صورت برآورده شدن شرایط، قیمت را افزایش یا کاهش دهد، 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>
عناصر و صفات
پیام تبلیغات دارای عناصر و ویژگی های زیر است:
عنصر / @Attribute | رخدادها | تایپ کنید | توضیحات |
---|---|---|---|
Promotions | 1 | Complex element | عنصر اصلی پیام تبلیغاتی |
Promotions / @partner | 1 | string | حساب شریک برای این پیام. این مقدار رشته، مقدار «کلید شریک» است که در صفحه تنظیمات حساب در مرکز هتل فهرست شده است. اگر پشتیبان دارید که برای چندین حساب فید ارائه می کند، این مقدار باید با مقدار مشخصه |
Promotions / @id | 1 | string | یک شناسه منحصر به فرد برای این پیام درخواست. این مقدار در پیام پاسخ برگردانده می شود. کاراکترهای مجاز عبارتند از: az، AZ، 0-9، _ (خط زیر)، و - (خط تیر). |
Promotions / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
Promotions / HotelPromotions | 0..n | HotelPromotions | تبلیغات برای یک ملک هر تبلیغی برای یک ملک خاص اعمال می شود. مگر اینکه از |
Promotions / HotelPromotions / @hotel_id | 1 | string | شناسه منحصر به فرد ملک این مقدار باید با شناسه هتل مشخص شده با استفاده از <id> در عنصر <listing> در فید لیست هتل مطابقت داشته باشد. شناسه هتل نیز در مرکز هتل درج شده است. |
Promotions / HotelPromotions / @action | 0..1 | enum | اگر مشخص شده است، مقدار باید اگر مشخص نشده باشد، هر تبلیغی که در پیام فعلی مشخص شده است:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | یک تبلیغ واحد برای یک ملک. توجه داشته باشید که اگر اگر نیاز به استفاده از بیش از 99 تبلیغات دارید، با مدیر حساب فنی خود (TAM) تماس بگیرید. |
Promotions / HotelPromotions / Promotion / @id | 1 | string | یک شناسه منحصر به فرد برای تبلیغات. حداکثر تعداد نویسههای مجاز 40 است. نویسههای مجاز عبارتند از: az، AZ، 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 | حداقل مبلغی که پس از اعمال تخفیف می توان نرخ شبانه را تعیین کرد. اگر یک عنصر |
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 | تعداد شب های لازم برای اعمال تخفیف. هر تخفیف برای بخش جداگانه ای از شب های اقامت اعمال می شود. به عنوان مثال، برای اقامت 10 شب که |
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 | دقیقاً یکی از تخفیف روزانه را مشخص می کند که ممکن است برای یک شب اقامت اعمال شود. این برخلاف هر ملک ممکن است دارای یک گروه از تبلیغات باشد که "بهترین روزانه" در نظر گرفته می شوند. این بدان معناست که برای هر شب اقامت، تبلیغات تکی "بهترین روزانه" که واجد شرایط است و عمیق ترین تخفیف را برای آن شب به همراه دارد انتخاب شده و ممکن است اعمال شود. |
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 | حداقل تعداد اتاق هایی که باید برای تبلیغات در دسترس باشد تا در نرخ شب اعمال شود. اگر این مشخص نشده باشد، هیچ حداقلی وجود ندارد. |
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 | شناسه قانون نرخ مرتبط با برنامه عضویت. |
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 | یک طرح نرخ را مشخص می کند. طرح نرخ با ترکیبی از بسته، نرخها و در دسترس بودن تعریف میشود، همانطور که در پیامهای Transaction (Property Data)، OTA_HotelRateAmountNotifRQ، و OTA_HotelAvailNotifRQ تعریف شده است، و توسط PackageID مشخص شده است. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | شناسه منحصر به فرد برای طرح نرخ. این مقدار به مقدار PackageID در <PackageData> در پیام Transaction (Property Data) و در ویژگی RatePlanCode در <StatusApplicationControl> در هر دو پیام <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> منطبق می شود. حداکثر تعداد کاراکترهای مجاز 50 کاراکتر است. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | کانتینری برای فهرستی از انواع اتاقهایی که تبلیغات برای آنها اعمال میشود. این تبلیغ برای هر <RoomType> مشخص شده اعمال می شود. اگر <RoomTypes> مشخص نشده باشد، تبلیغ برای همه اتاق ها اعمال می شود. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | نوع اتاق را مشخص می کند. یک نوع اتاق در یک عنصر <RoomData> در پیام تراکنش (داده های ویژگی) تعریف می شود و با استفاده از مقدار <RoomID> آن ارجاع داده می شود. (مقدار <RoomID> آن نیز توسط ویژگی InvTypeCode در پیام های OTA_HotelRateAmountNotifRQ ارجاع داده می شود.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | شناسه منحصر به فرد موجودی (نوع اتاق). این مقدار در پیام Transaction (Property Data) به <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. مقادیر معتبر اگر اگر اگر |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | کشوری را تعریف می کند که در آن کاربران واجد شرایط تبلیغ هستند. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | یک کد کشور CLDR ، مانند DE یا FR . توجه داشته باشید که برای برخی از کشورها، کد کشور CLDR با کد کشور ISO 2 حرفی یکسان نیست. همچنین، کدهای منطقه CLDR پشتیبانی نمی شوند. |
نمونه ها
محدودیت 500 تبلیغات برای هر ملک وجود دارد. برای حذف تبلیغات از یک ملک به مثال "حذف یک تبلیغ" مراجعه کنید.
پیام اصلی
مثال زیر یک پیام 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>
حذف یک تبلیغ
مثال زیر نحوه حذف یک تبلیغ برای یک ملک را نشان می دهد:
<?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 روز قبل از ورود، و در یا بعد از ساعت 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>
تاریخ رزرو تاریخ زمان محدود
مثال زیر موردی را نشان می دهد که در آن عنصر BookingDates
با ویژگی های start
و end
به عنوان انواع DateTime استفاده می شود. این محدودیت تاریخ رزرو مستلزم این است که رزرو بین ساعت 06:30 در 01-07-2020 و ساعت 18:45 در 2020-07-02 انجام شود.
<?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
شامل DateRanges
است که دارای فیلدهای start
و end
بدون سال است. در این مثال، این تبلیغات صرفنظر از سال، برای تاریخهای اعلام حضور بین ۲۹/۱۲ و ۲/۱ اعمال میشود. محدوده تاریخ بدون سال که از مرز سال جدید عبور می کند نامعتبر است، بنابراین محدوده تاریخ به صورت دو محدوده تاریخ مجاور بیان می شود.
<?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>
تخفیف شبانه رایگان
مثال زیر به ازای هر چهار شب اقامت در محدوده تعیین شده از تاریخ رزرو، دو شب را 50% تخفیف می دهد. برای یک برنامه سفر ده شبه، در مجموع چهار شب 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>
مثال بعدی برای هر سه شب اقامت در محدوده های مشخص شده از تاریخ اقامت، یک شب 50% تخفیف می دهد. فقط شبهای اقامت با هم تداخل دارند برای واجد شرایط بودن برای تخفیف. برای برنامه سفر زیر با ورود در تاریخ 01/01/2022 و خروج در 2022/01/07، شبهای اقامت واجد شرایط و تخفیفها به شرح زیر اعمال میشود.
- 01-01-2022 (بمانید)
- 02-01-2022 (بمانید)
- 03-01-2022
- 04/01/2022 (تخفیف داده شده)
- 05-01-2022 (بمانید)
- 06-01-2022 (بمانید)
<?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
، اقامت دو شب را تخفیف می دهد.
<?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>
دو شب اقامت از 30 آوریل 2023 تا 2 مه 2023 را در نظر بگیرید برای محاسبه، ابتدا ترکیبی از بهترین تخفیف های روزانه که عمیق ترین تخفیف را به همراه دارد، پیدا می شود.
برای شب اول، تبلیغات "عمومی" تنها مبلغ واجد شرایط با تخفیف ثابت 20 است.
برای شب دوم، تبلیغات "می" تخفیف عمیق تری نسبت به تخفیف "عمومی" ارائه می دهد. بنابراین ، هنگامی که "مه" انتخاب شد ، مبلغ تخفیف ثابت 50 است.
سپس برای اقامت ، تخفیف های تبلیغاتی "فیستا" به 5 در هر شب یا 10 کل تخفیف می یابد. این می تواند با ترکیب بهترین تخفیف های روزانه جمع شود زیرا "فیستا" نوع انباشته شده روی 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
عناصر و ویژگی های زیر را دارد:
عنصر / @Attribute | رخدادها | تایپ کنید | توضیحات |
---|---|---|---|
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>
نمای کلی
این API به شما امکان می دهد تخفیف های احتمالی را مشخص کنید. از بین تبلیغات مشخص شده ، Google تبلیغات واجد شرایط یا مجموعه تبلیغاتی را که منجر به کمترین قیمت می شود ، اعمال می کند. اگر به دنبال API هستید که از تنظیمات نرخ دلخواه پشتیبانی می کند که می تواند در صورت برآورده شدن شرایط ، قیمت را افزایش یا کاهش دهد ، پس 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>
عناصر و صفات
پیام تبلیغات دارای عناصر و ویژگی های زیر است:
عنصر / @Attribute | رخدادها | تایپ کنید | توضیحات |
---|---|---|---|
Promotions | 1 | Complex element | عنصر اصلی پیام تبلیغات. |
Promotions / @partner | 1 | string | حساب شریک برای این پیام. این مقدار رشته، مقدار «کلید شریک» است که در صفحه تنظیمات حساب در مرکز هتل فهرست شده است. اگر یک باطن دارید که فید برای چندین حساب |
Promotions / @id | 1 | string | یک شناسه منحصر به فرد برای این پیام درخواست. این مقدار در پیام پاسخ برگردانده می شود. شخصیت های مجاز AZ ، AZ ، 0-9 ، _ (زیرکانه) و - (dash) هستند. |
Promotions / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
Promotions / HotelPromotions | 0..n | HotelPromotions | تبلیغات برای یک ملک. هر تبلیغ برای یک ملک واحد اعمال می شود. مگر در مواردی که از |
Promotions / HotelPromotions / @hotel_id | 1 | string | شناسه منحصر به فرد ملک این مقدار باید با شناسه هتل مشخص شده با استفاده از <id> در عنصر <listing> در فید لیست هتل مطابقت داشته باشد. شناسه هتل نیز در مرکز هتل درج شده است. |
Promotions / HotelPromotions / @action | 0..1 | enum | در صورت مشخص شدن ، مقدار باید اگر مشخص نشده باشد ، پس از آن هر تبلیغی که در پیام فعلی مشخص شده است نیز است:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | یک تبلیغ واحد برای یک ملک. توجه داشته باشید که اگر اگر نیاز به استفاده از بیش از 99 تبلیغ دارید ، با مدیر حساب فنی خود (TAM) تماس بگیرید. |
Promotions / HotelPromotions / Promotion / @id | 1 | string | یک شناسه منحصر به فرد برای تبلیغ. حداکثر تعداد کاراکترهای مجاز 40 است. کاراکترهای مجاز AZ ، AZ ، 0-9 ، _ (زیرکور) ، - (dash) ، و. (دوره). |
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 | تاریخ شروع یا DateTime (بر اساس منطقه زمانی خاصیت) ، شامل محدوده.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date یا DateTime | تاریخ پایان یا 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 | حداقل مبلغی که می توان نرخ شبانه را پس از اعمال تخفیف تعیین کرد. اگر یک عنصر |
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | یک کانتینر برای یک یا چند محدوده تاریخ که تعریف می کنند هنگام ورود به سیستم باید برای اعمال ارتقاء رخ دهد. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | محدوده تاریخ مشخص می کند که چه زمانی باید ورود به سیستم انجام شود تا ارتقاء اعمال شود. در صورت حذف یک یا چند تبلیغ ، این عنصر لازم نیست. فرمت بی سال نیز پشتیبانی می شود.
|
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 | محدوده تاریخ مشخص می شود که باید در هنگام استفاده از آن ، اقدام به انجام شود. در صورت حذف یک یا چند تبلیغ ، این عنصر لازم نیست. فرمت بی سال نیز پشتیبانی می شود.
|
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 | تعداد شبهای مورد نیاز برای اعمال تخفیف. هر تخفیف در یک بخش جداگانه از شب های اقامت اعمال می شود. به عنوان مثال ، برای یک اقامت 10 شب که در آن |
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 | دقیقاً یکی از تخفیف روزانه را مشخص می کند که ممکن است برای یک شب اقامت اعمال شود. این برخلاف هر ملک ممکن است یک گروه واحد از تبلیغات داشته باشد که "بهترین روزانه" در نظر گرفته می شود. این بدان معناست که برای هر شب اقامت ، تک آهنگ "بهترین روزانه" که واجد شرایط است و عمیق ترین تخفیف را برای آن شب انتخاب می کند و ممکن است اعمال شود. |
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 | حداقل تعداد اتاق هایی که باید برای ارتقاء در نرخ شبانه در دسترس باشد. اگر این مشخص نشده باشد ، حداقل وجود ندارد. |
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 | شناسه قانون نرخ مرتبط با یک برنامه عضویت. |
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 | یک طرح نرخ را مشخص می کند. طرح نرخ با ترکیبی از بسته، نرخها و در دسترس بودن تعریف میشود، همانطور که در پیامهای Transaction (Property Data)، OTA_HotelRateAmountNotifRQ، و OTA_HotelAvailNotifRQ تعریف شده است، و توسط PackageID مشخص شده است. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | شناسه منحصر به فرد برای طرح نرخ. این مقدار به مقدار PackageID در <PackageData> در پیام Transaction (Property Data) و در ویژگی RatePlanCode در <StatusApplicationControl> در هر دو پیام <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> منطبق می شود. حداکثر تعداد کاراکترهای مجاز 50 کاراکتر است. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | کانتینر برای لیستی از انواع اتاق که تبلیغات در آن اعمال می شود. ارتقاء برای هر <RoomType> مشخص شده اعمال می شود. اگر <RoomTypes> مشخص نشده باشد ، تبلیغ در مورد همه اتاق ها اعمال می شود. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | نوع اتاق را مشخص می کند. یک نوع اتاق در یک عنصر <RoomData> در پیام تراکنش (داده های ویژگی) تعریف می شود و با استفاده از مقدار <RoomID> آن ارجاع داده می شود. (مقدار <RoomID> آن نیز توسط ویژگی InvTypeCode در پیام های OTA_HotelRateAmountNotifRQ ارجاع داده می شود.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | شناسه منحصر به فرد موجودی (نوع اتاق). این مقدار در پیام Transaction (Property Data) به <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 | یک محدوده تاریخی که تاریخ هایی را که قرار است تبلیغات اعمال شود را مشخص می کند. فرمت بی سال نیز پشتیبانی می شود.
اگر می خواهید محدوده |
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. مقادیر معتبر اگر اگر اگر |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | کشوری را تعریف می کند که کاربران واجد شرایط ارتقاء هستند. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | کد کشور CLDR ، مانند DE یا FR توجه داشته باشید که ، برای برخی از کشورها ، کد کشور CLDR همان کد کشور ISO 2 حرفی نیست. همچنین ، کدهای منطقه CLDR پشتیبانی نمی شوند. |
نمونه ها
محدودیت 500 تبلیغ در هر ملک وجود دارد. برای حذف تبلیغات از یک ویژگی ، به مثال "حذف یک تبلیغ" مراجعه کنید.
پیام اصلی
مثال زیر یک پیام 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>
یک تبلیغ را حذف کنید
مثال زیر نحوه حذف یک تبلیغ برای یک ملک را نشان می دهد:
<?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 استفاده می شود. این محدودیت پنجره رزرو نیاز به رزرو در روز یا قبل از ساعت 18:00 روز قبل از ورود و بعد از ساعت 12 یا بعد از ساعت 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="Property_1">
<Promotion id="1">
<BookingWindow min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
تاریخ رزرو مرزهای DateTime
مثال زیر موردی را نشان می دهد که از عنصر BookingDates
با ویژگی های start
و end
به عنوان انواع DateTime استفاده می شود. این محدودیت تاریخ رزرو نیاز به رزرو بین ساعت 06:30 در 2020-07-01 و 18:45 در 2020-07-02 دارد.
<?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
شامل DateRanges
است که بدون سالها زمینه های start
و end
دارند. در این مثال ، این تبلیغ در مورد تاریخ های چک بین 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
مثال زیر تخفیف دو شب 50 ٪ برای هر چهار شب برای محدوده مشخص تاریخ رزرو باقی مانده است. For a ten night itinerary, a total of four nights would be discounted 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>
The next example discounts one night 50% for each three nights stayed for the specified ranges of stay dates. Only the overlapping nights of stay count towards qualifying for the discount. For the following itinerary with check-in on 2022-01-01 and check-out on 2022-01-07, the qualified nights of stay and discounts are applied as follows.
- 2022-01-01 (stay)
- 2022-01-02 (stay)
- 03-01-2022
- 2022-01-04 (discounted)
- 2022-01-05 (stay)
- 2022-01-06 (stay)
<?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>
Ranked Selection
The following example offers two discounts, one for 20% off and another for 15% off. During evaluation, only the 15% discount is applied because it has a lower rank.
<?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
The following example discounts a two night stay by applying BestDailyDiscount
stacked with a Discount
.
<?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>
Consider a two night stay from April 30, 2023 to May 2, 2023 For calculation, the combination of best daily discounts that yields the deepest discount is found first.
For the first night, the "general" promotion is the only eligible amount with a fixed discount of 20.
For the second night, the "may" promotion offers a deeper discount than the "general" discount. So, when "may" is selected the fixed discount amount is 50.
Then for the stay, the "fiesta" promotion discounts to 5 per night, or 10 total. It can be stacked with the combination of best daily discounts because "fiesta" has stacking type set to any
. If it were set to base
, then only the combination of best daily discounts or the "fiesta" discount is applied. See description of Stacking
for more information.
`Overall, the price of the stay receives a 20 + 50 + 10 = 80 fixed amount discount.
پاسخ ها
نحو
The PromotionsResponse
message uses the following syntax:
<?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>
عناصر و صفات
The PromotionsResponse
message has the following elements and attributes:
عنصر / @Attribute | رخدادها | تایپ کنید | توضیحات |
---|---|---|---|
PromotionsResponse | 1 | Complex element | The root element indicating the success or issues for a received Promotions request message. |
PromotionsResponse / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
PromotionsResponse / @id | 1 | string | The unique identifier from the associated Promotions message. |
PromotionsResponse / @partner | 1 | string | حساب شریک برای این پیام. |
PromotionsResponse / Success | 0..1 | Success | Indicates that the Promotions message was processed successfully without warnings, errors, or failures. یا |
PromotionsResponse / Issues | 0..1 | Issues | A container for one or more issues encountered while processing the Promotions message. یا |
PromotionsResponse / Issues / Issue | 1..n | Issue | The description of a warning, error, or failure encountered while processing the Promotions message. جزئیات مربوط به این مسائل را میتوانید در پیامهای خطای وضعیت فید مشاهده کنید. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | شناسه مشکل |
PromotionsResponse / Issues / Issue / @status | 1 | enum | نوع مشکل مواجه شده مقادیر معتبر |
نمونه ها
موفقیت
The following is a response to a successfully processed Promotions message.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
مسائل
The following is a response to a Promotions message not processed due to errors.
<?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>
نمای کلی
This API lets you specify possible discounts. Of the promotions specified, Google applies the eligible promotion or set of promotions that leads to the lowest price. If you are looking for an API which supports arbitrary rate adjustments that can either increase or decrease the price when conditions are satisfied, then consider our Rate Modifications API . Note that if both APIs are present, rate modifications are applied before promotions.
درخواست ها
نحو
The Promotions
message uses the following syntax:
<?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>
عناصر و صفات
The Promotions message has the following elements and attributes:
عنصر / @Attribute | رخدادها | تایپ کنید | توضیحات |
---|---|---|---|
Promotions | 1 | Complex element | The root element of a promotions message. |
Promotions / @partner | 1 | string | حساب شریک برای این پیام. این مقدار رشته، مقدار «کلید شریک» است که در صفحه تنظیمات حساب در مرکز هتل فهرست شده است. If you have a backend that provides feeds for multiple accounts, this value needs to match the |
Promotions / @id | 1 | string | یک شناسه منحصر به فرد برای این پیام درخواست. این مقدار در پیام پاسخ برگردانده می شود. Allowed characters are az, AZ, 0-9, _ (underscore), and - (dash). |
Promotions / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Promotions for a property. Each promotion applies to a single property. Unless |
Promotions / HotelPromotions / @hotel_id | 1 | string | شناسه منحصر به فرد ملک این مقدار باید با شناسه هتل مشخص شده با استفاده از <id> در عنصر <listing> در فید لیست هتل مطابقت داشته باشد. شناسه هتل نیز در مرکز هتل درج شده است. |
Promotions / HotelPromotions / @action | 0..1 | enum | If specified, the value must be If not specified, then each promotion specified in the current message is either:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | A single promotion for a property. Note that if If you need to use more than 99 promotions, contact your Technical Account Manager (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | A unique identifier for the promotion. The maximum number of characters allowed is 40. Allowed characters are az, AZ, 0-9, _ (underscore), - (dash), and . (دوره). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | If specified, the value must be If |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | A container for one or more ranges that define when booking must occur in order for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | A range specifying when booking must occur for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date or DateTime | The starting date or datetime (based on the property's time zone), inclusive, of the range.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date or DateTime | The ending date or datetime (based on the property's time zone), inclusive, of the range.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | روزهایی از هفته که در محدوده تاریخ مجاز هستند. اگر مشخص نشده باشد، همه روزها در محدوده تاریخ مجاز هستند. هر کاراکتر در رشته یک روز را مشخص می کند. به عنوان مثال، "MTWHF" مشخص می کند که روزهای هفته در محدوده تاریخ مجاز هستند. شخصیت های معتبر عبارتند از:
هر ترکیب کاراکتری معتبر است. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Specifies the time period when booking must occur relative to the check-in date (based on the property's time zone). For example, the booking window can be set to least 7 days, but not more than 180 days, prior to check-in. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | The minimum duration prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is 0 , there is no minimum.Valid value types are:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | The maximum number of days prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is 0 , there is no maximum.Valid value types are:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling | Defines restrictions on the maximum value that a rate can be set to after promotions are applied. Promotions must always specify a If stacking is configured, then multiple promotions with مثال: Pricing a 1-night stay where
Here is the order of calculation:
The fact that 60 is a stricter overall ceiling is irrelevant since it is valid only for its own promotion, and there can be no single ceiling that spans the entire promotion stack. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float | The maximum amount that a nightly rate can be set to after the discount is applied. If a |
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor | Defines restrictions on the minimum value that a rate can be set to after promotions are applied. Promotions must always specify a If stacking is configured, then multiple promotions with مثال: Pricing a 1-night stay where
Here is the order of calculation:
The fact that 90 is a stricter overall floor is irrelevant since it is valid only for its own promotion, and there can be no single floor that spans the entire promotion stack. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float | The minimum amount that a nightly rate can be set to after the discount is applied. If a |
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | A container for one or more date ranges that define when check-in must occur for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | A date range specifying when check-in must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions. The YearlessDate format is also supported.
|
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 | A container for one or more date ranges that define when check-out must occur for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | A date range specifying when check-out must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions. The YearlessDate format is also supported.
|
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 | Container for listing the user devices that are eligible for the promotion. If specified, only eligible users on the listed devices are offered the discounted rate. If not specified, eligible users on any device are offered the discounted rate. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Defines one type of user device that is eligible for the promotion. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | A type of device. The value must be desktop , tablet , or mobile . |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Exactly one of Specifies the discount to be applied for this promotion. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Exactly one of A decimal value from 0-100 which specifies the percentage discount. It is applied to مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | Exactly one of A decimal value from 0-100 which specifies the percentage of base discount. Similar to Unlike مثال:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Exactly one of A fixed amount to be subtracted from the sum of the مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Exactly one of A fixed discount applied to each of the مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Exactly one of If If مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Exactly one of If If If مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | This should only be used with The number of nights to which the discount is applied, starting with the least expensive. Must be an integer from 1 to 99. If not specified, discount is applied to all nights. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Specifies a discount on certain nights of a stay when a minimum stay length is met. Attributes on the parent Discount element are not allowed if this element is used. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Number of required nights for the discount to be applied. Each discount is applied to a separate segment of stay nights. For example, for a 10-night stay where |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | The number of discounted nights within each segment of stay nights. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | The discount that is applied to the discount nights. If this value is 50 , then each selected night is 50% off. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Must be either cheapest or last . If last , then the nights at the end of the segment of stay nights are discounted. If cheapest , then the cheapest nights within the segment of stay nights are discounted. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Whether the discount may be applied to multiple stay night segments. If For example, if |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Assigns this promotion a rank and opts it into ranked selection, where only the promotion with the lowest rank is selected to be applied. Values must be between 1 and 99, inclusive. If multiple promotions share the same rank, then one is arbitrarily selected and applied. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Exactly one of Specifies a daily discount which may be applied to a night of stay. This is in contrast with Each property may have a single group of promotions that are considered "best daily." This means that for each night of stay, the single "best daily" promotion that is eligible and yields the deepest discount for that night is selected and may be applied. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Exactly one of A decimal value from 0-100 which specifies the percentage discount. It is applied to مثال ها:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Exactly one of A fixed amount to be subtracted from a single مثال ها:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Exactly one of If مثال ها:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Defines restrictions on the number of rooms that must be available in order for this promotion to be applied. Discount is applied only to the nights which meet the constraint. Not allowed with the fixed_amount discount. Note that the number of available rooms is specified with either OTA_HotelInvCountNotifRQ ( InvCount ) or OTA_HotelAvailNotifRQ ( BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | The minimum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no minimum. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | The maximum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no maximum. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Defines length of stay limits within which this promotion can be applied. The promotion is not applied when length of stay is outside of the min and max limits. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | The minimum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no minimum. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | The maximum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no maximum. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule | Container for a membership rate rule that triggers a specific UI treatment for the associated discount. This element should not be specified unless |
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string | ID of the rate rule associated with a membership program. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Specifies the minimum sum of the daily room rates (using the larger of AmountBeforeTax or AmountAfterTax ) that must be exceeded for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | The value that must be exceeded for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Defines restrictions on occupancies for which this promotion is applied. The promotion is not applied when occupancy is outside of the min and max limits. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | The user-specified occupancy must be at least this value in order for the discount to be applied. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | The user-specified occupancy must be at most this value in order for the discount to be applied. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Container for a list of rate plans to which the promotion applies. If <RatePlans> isn't specified, the promotion applies to all rate plans. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | یک طرح نرخ را مشخص می کند. طرح نرخ با ترکیبی از بسته، نرخها و در دسترس بودن تعریف میشود، همانطور که در پیامهای Transaction (Property Data)، OTA_HotelRateAmountNotifRQ، و OTA_HotelAvailNotifRQ تعریف شده است، و توسط PackageID مشخص شده است. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | شناسه منحصر به فرد برای طرح نرخ. این مقدار به مقدار PackageID در <PackageData> در پیام Transaction (Property Data) و در ویژگی RatePlanCode در <StatusApplicationControl> در هر دو پیام <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> منطبق می شود. حداکثر تعداد کاراکترهای مجاز 50 کاراکتر است. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Container for a list of room types to which the promotion applies. The promotion is applied to each <RoomType> specified. If <RoomTypes> isn't specified, the promotion applies to all rooms. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | نوع اتاق را مشخص می کند. یک نوع اتاق در یک عنصر <RoomData> در پیام تراکنش (داده های ویژگی) تعریف می شود و با استفاده از مقدار <RoomID> آن ارجاع داده می شود. (مقدار <RoomID> آن نیز توسط ویژگی InvTypeCode در پیام های OTA_HotelRateAmountNotifRQ ارجاع داده می شود.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | شناسه منحصر به فرد موجودی (نوع اتاق). این مقدار در پیام Transaction (Property Data) به <RoomID> نشان داده می شود. حداکثر تعداد کاراکترهای مجاز 50 کاراکتر است. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Specifies how promotions can be combined. If not specified, the "type" is assumed to be base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Multiple promotions can be applied to a single rate depending on this setting:
Of the allowed combinations, the set of promotions which yields the largest discount are applied to the rate. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | A container for one or more date ranges that determine how the promotion is applied, such as to accommodate seasonal discounts. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Describes how the promotion should be applied. مقادیر معتبر عبارتند از:
This attribute must always be specified.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | یک محدوده تاریخی که تاریخ هایی را که قرار است تبلیغات اعمال شود را مشخص می کند. The YearlessDate format is also supported.
If you want to set |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | تاریخ شروع (بر اساس منطقه زمانی ملک)، شامل محدوده تاریخ. این تاریخ باید قبل یا همان تاریخ end باشد. اگر start مشخص نشده باشد، محدوده تاریخ عملاً از نظر تاریخ شروع نامحدود است. You should specify |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | تاریخ پایان (بر اساس منطقه زمانی ملک)، شامل محدوده تاریخ. این تاریخ باید همان تاریخ start یا بعد از آن باشد. If end isn't specified, the date range is effectively unlimited from the start date onwards. You should specify |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | روزهایی از هفته که در محدوده تاریخ مجاز هستند. اگر مشخص نشده باشد، همه روزها در محدوده تاریخ مجاز هستند. هر کاراکتر در رشته یک روز را مشخص می کند. به عنوان مثال، "MTWHF" مشخص می کند که روزهای هفته در محدوده تاریخ مجاز هستند. شخصیت های معتبر عبارتند از:
هر ترکیب کاراکتری معتبر است. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Container for listing the user locations (countries) that are eligible for the promotion. If specified, only eligible users in the listed countries are offered the discounted rate. If not specified, eligible users in any country are offered the discounted rate. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | The type of UserCountries specification. Valid values are If the UserCountries If the UserCountries If the UserCountries |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Defines one country where users are eligible for the promotion. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | A CLDR country code , such as DE or FR . Note that, for some countries, the CLDR country code isn't the same as the 2-letter ISO country code. Also, CLDR region codes are not supported. |
نمونه ها
محدودیت 500 تبلیغ در هر ملک وجود دارد. Refer to "Delete one promotion" example to remove promotions from a property.
پیام اصلی
The following example shows a basic Promotions
message:
<?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>
Inventory condition
The following example shows how to create a discount if there is excess inventory close to the arrival date:
<?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>
Delete one promotion
The following example shows how to delete one promotion for a property:
<?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>
Delete all promotions
The following example shows how to delete all promotions for a property:
<?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>
Overlay all promotions
The following example shows how to overlay <HotelPromotions>
for a property with one or more new promotions. When action="overlay"
, all stored promotions are deleted prior to storing the promotions specified in the current message:
<?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 Different Stacking Types
The following example shows a case where three different promotions would be applied ( base
, second
, any
). Note that the none
promotion wouldn't be applied since the other promotions provide a better discount. If the original price was $100, the discounted price would be $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 Stacking Type
The following example shows a case where the none
promotion is used because the combination of other promotions provides a smaller discount. If the original price was $100, the discounted price would be $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>
Booking Window Duration Bounds
The following example shows a case where the BookingWindow
element is used with its start and end bounds defined as an ISO 8601 Duration type. This booking window restriction requires booking on or before 18:00 the day prior to arrival, and on or after 12:00 on the 2nd day before arrival.
<?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>
Booking Dates DateTime Bounds
The following example shows a case where the BookingDates
element is used with start
and end
attributes as DateTime types. This booking date restriction requires booking to occur between 06:30 on 2020-07-01 and 18:45 on 2020-07-02.
<?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>
Yearless date ranges
The following example shows a case where the CheckInDates
element contains DateRanges
that have start
and end
fields without years. In this example, the promotion applies to check-in dates between 12/29 and 1/2, regardless of the year. Yearless date ranges that cross the new-year boundary are invalid, so the DateRange is expressed as two adjacent date ranges.
<?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 discount
The following example discounts two nights 50% for each four nights stayed for the specified range of booking dates. For a ten night itinerary, a total of four nights would be discounted 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>
The next example discounts one night 50% for each three nights stayed for the specified ranges of stay dates. Only the overlapping nights of stay count towards qualifying for the discount. For the following itinerary with check-in on 2022-01-01 and check-out on 2022-01-07, the qualified nights of stay and discounts are applied as follows.
- 2022-01-01 (stay)
- 2022-01-02 (stay)
- 03-01-2022
- 2022-01-04 (discounted)
- 2022-01-05 (stay)
- 2022-01-06 (stay)
<?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>
Ranked Selection
The following example offers two discounts, one for 20% off and another for 15% off. During evaluation, only the 15% discount is applied because it has a lower rank.
<?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
The following example discounts a two night stay by applying BestDailyDiscount
stacked with a Discount
.
<?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>
Consider a two night stay from April 30, 2023 to May 2, 2023 For calculation, the combination of best daily discounts that yields the deepest discount is found first.
For the first night, the "general" promotion is the only eligible amount with a fixed discount of 20.
For the second night, the "may" promotion offers a deeper discount than the "general" discount. So, when "may" is selected the fixed discount amount is 50.
Then for the stay, the "fiesta" promotion discounts to 5 per night, or 10 total. It can be stacked with the combination of best daily discounts because "fiesta" has stacking type set to any
. If it were set to base
, then only the combination of best daily discounts or the "fiesta" discount is applied. See description of Stacking
for more information.
`Overall, the price of the stay receives a 20 + 50 + 10 = 80 fixed amount discount.
پاسخ ها
نحو
The PromotionsResponse
message uses the following syntax:
<?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>
عناصر و صفات
The PromotionsResponse
message has the following elements and attributes:
عنصر / @Attribute | رخدادها | تایپ کنید | توضیحات |
---|---|---|---|
PromotionsResponse | 1 | Complex element | The root element indicating the success or issues for a received Promotions request message. |
PromotionsResponse / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
PromotionsResponse / @id | 1 | string | The unique identifier from the associated Promotions message. |
PromotionsResponse / @partner | 1 | string | حساب شریک برای این پیام. |
PromotionsResponse / Success | 0..1 | Success | Indicates that the Promotions message was processed successfully without warnings, errors, or failures. یا |
PromotionsResponse / Issues | 0..1 | Issues | A container for one or more issues encountered while processing the Promotions message. یا |
PromotionsResponse / Issues / Issue | 1..n | Issue | The description of a warning, error, or failure encountered while processing the Promotions message. جزئیات مربوط به این مسائل را میتوانید در پیامهای خطای وضعیت فید مشاهده کنید. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | شناسه مشکل |
PromotionsResponse / Issues / Issue / @status | 1 | enum | نوع مشکل مواجه شده مقادیر معتبر |
نمونه ها
موفقیت
The following is a response to a successfully processed Promotions message.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
مسائل
The following is a response to a Promotions message not processed due to errors.
<?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>
نمای کلی
This API lets you specify possible discounts. Of the promotions specified, Google applies the eligible promotion or set of promotions that leads to the lowest price. If you are looking for an API which supports arbitrary rate adjustments that can either increase or decrease the price when conditions are satisfied, then consider our Rate Modifications API . Note that if both APIs are present, rate modifications are applied before promotions.
درخواست ها
نحو
The Promotions
message uses the following syntax:
<?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>
عناصر و صفات
The Promotions message has the following elements and attributes:
عنصر / @Attribute | رخدادها | تایپ کنید | توضیحات |
---|---|---|---|
Promotions | 1 | Complex element | The root element of a promotions message. |
Promotions / @partner | 1 | string | حساب شریک برای این پیام. این مقدار رشته، مقدار «کلید شریک» است که در صفحه تنظیمات حساب در مرکز هتل فهرست شده است. If you have a backend that provides feeds for multiple accounts, this value needs to match the |
Promotions / @id | 1 | string | یک شناسه منحصر به فرد برای این پیام درخواست. این مقدار در پیام پاسخ برگردانده می شود. Allowed characters are az, AZ, 0-9, _ (underscore), and - (dash). |
Promotions / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Promotions for a property. Each promotion applies to a single property. Unless |
Promotions / HotelPromotions / @hotel_id | 1 | string | شناسه منحصر به فرد ملک این مقدار باید با شناسه هتل مشخص شده با استفاده از <id> در عنصر <listing> در فید لیست هتل مطابقت داشته باشد. شناسه هتل نیز در مرکز هتل درج شده است. |
Promotions / HotelPromotions / @action | 0..1 | enum | If specified, the value must be If not specified, then each promotion specified in the current message is either:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | A single promotion for a property. Note that if If you need to use more than 99 promotions, contact your Technical Account Manager (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | A unique identifier for the promotion. The maximum number of characters allowed is 40. Allowed characters are az, AZ, 0-9, _ (underscore), - (dash), and . (دوره). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | If specified, the value must be If |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | A container for one or more ranges that define when booking must occur in order for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | A range specifying when booking must occur for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date or DateTime | The starting date or datetime (based on the property's time zone), inclusive, of the range.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date or DateTime | The ending date or datetime (based on the property's time zone), inclusive, of the range.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | روزهایی از هفته که در محدوده تاریخ مجاز هستند. اگر مشخص نشده باشد، همه روزها در محدوده تاریخ مجاز هستند. هر کاراکتر در رشته یک روز را مشخص می کند. به عنوان مثال، "MTWHF" مشخص می کند که روزهای هفته در محدوده تاریخ مجاز هستند. شخصیت های معتبر عبارتند از:
هر ترکیب کاراکتری معتبر است. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Specifies the time period when booking must occur relative to the check-in date (based on the property's time zone). For example, the booking window can be set to least 7 days, but not more than 180 days, prior to check-in. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | The minimum duration prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is 0 , there is no minimum.Valid value types are:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | The maximum number of days prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is 0 , there is no maximum.Valid value types are:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling | Defines restrictions on the maximum value that a rate can be set to after promotions are applied. Promotions must always specify a If stacking is configured, then multiple promotions with مثال: Pricing a 1-night stay where
Here is the order of calculation:
The fact that 60 is a stricter overall ceiling is irrelevant since it is valid only for its own promotion, and there can be no single ceiling that spans the entire promotion stack. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float | The maximum amount that a nightly rate can be set to after the discount is applied. If a |
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor | Defines restrictions on the minimum value that a rate can be set to after promotions are applied. Promotions must always specify a If stacking is configured, then multiple promotions with مثال: Pricing a 1-night stay where
Here is the order of calculation:
The fact that 90 is a stricter overall floor is irrelevant since it is valid only for its own promotion, and there can be no single floor that spans the entire promotion stack. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float | The minimum amount that a nightly rate can be set to after the discount is applied. If a |
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | A container for one or more date ranges that define when check-in must occur for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | A date range specifying when check-in must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions. The YearlessDate format is also supported.
|
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 | A container for one or more date ranges that define when check-out must occur for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | A date range specifying when check-out must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions. The YearlessDate format is also supported.
|
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 | Container for listing the user devices that are eligible for the promotion. If specified, only eligible users on the listed devices are offered the discounted rate. If not specified, eligible users on any device are offered the discounted rate. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Defines one type of user device that is eligible for the promotion. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | A type of device. The value must be desktop , tablet , or mobile . |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Exactly one of Specifies the discount to be applied for this promotion. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Exactly one of A decimal value from 0-100 which specifies the percentage discount. It is applied to مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | Exactly one of A decimal value from 0-100 which specifies the percentage of base discount. Similar to Unlike مثال:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Exactly one of A fixed amount to be subtracted from the sum of the مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Exactly one of A fixed discount applied to each of the مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Exactly one of If If مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Exactly one of If If If مثال ها:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | This should only be used with The number of nights to which the discount is applied, starting with the least expensive. Must be an integer from 1 to 99. If not specified, discount is applied to all nights. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Specifies a discount on certain nights of a stay when a minimum stay length is met. Attributes on the parent Discount element are not allowed if this element is used. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Number of required nights for the discount to be applied. Each discount is applied to a separate segment of stay nights. For example, for a 10-night stay where |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | The number of discounted nights within each segment of stay nights. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | The discount that is applied to the discount nights. If this value is 50 , then each selected night is 50% off. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Must be either cheapest or last . If last , then the nights at the end of the segment of stay nights are discounted. If cheapest , then the cheapest nights within the segment of stay nights are discounted. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Whether the discount may be applied to multiple stay night segments. If For example, if |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Assigns this promotion a rank and opts it into ranked selection, where only the promotion with the lowest rank is selected to be applied. Values must be between 1 and 99, inclusive. If multiple promotions share the same rank, then one is arbitrarily selected and applied. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Exactly one of Specifies a daily discount which may be applied to a night of stay. This is in contrast with Each property may have a single group of promotions that are considered "best daily." This means that for each night of stay, the single "best daily" promotion that is eligible and yields the deepest discount for that night is selected and may be applied. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Exactly one of A decimal value from 0-100 which specifies the percentage discount. It is applied to مثال ها:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Exactly one of A fixed amount to be subtracted from a single مثال ها:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Exactly one of If مثال ها:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Defines restrictions on the number of rooms that must be available in order for this promotion to be applied. Discount is applied only to the nights which meet the constraint. Not allowed with the fixed_amount discount. Note that the number of available rooms is specified with either OTA_HotelInvCountNotifRQ ( InvCount ) or OTA_HotelAvailNotifRQ ( BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | The minimum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no minimum. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | The maximum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no maximum. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Defines length of stay limits within which this promotion can be applied. The promotion is not applied when length of stay is outside of the min and max limits. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | The minimum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no minimum. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | The maximum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no maximum. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule | Container for a membership rate rule that triggers a specific UI treatment for the associated discount. This element should not be specified unless |
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string | ID of the rate rule associated with a membership program. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Specifies the minimum sum of the daily room rates (using the larger of AmountBeforeTax or AmountAfterTax ) that must be exceeded for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | The value that must be exceeded for the promotion to be applied. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Defines restrictions on occupancies for which this promotion is applied. The promotion is not applied when occupancy is outside of the min and max limits. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | The user-specified occupancy must be at least this value in order for the discount to be applied. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | The user-specified occupancy must be at most this value in order for the discount to be applied. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Container for a list of rate plans to which the promotion applies. If <RatePlans> isn't specified, the promotion applies to all rate plans. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | یک طرح نرخ را مشخص می کند. طرح نرخ با ترکیبی از بسته، نرخها و در دسترس بودن تعریف میشود، همانطور که در پیامهای Transaction (Property Data)، OTA_HotelRateAmountNotifRQ، و OTA_HotelAvailNotifRQ تعریف شده است، و توسط PackageID مشخص شده است. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | شناسه منحصر به فرد برای طرح نرخ. این مقدار به مقدار PackageID در <PackageData> در پیام Transaction (Property Data) و در ویژگی RatePlanCode در <StatusApplicationControl> در هر دو پیام <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> منطبق می شود. حداکثر تعداد کاراکترهای مجاز 50 کاراکتر است. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Container for a list of room types to which the promotion applies. The promotion is applied to each <RoomType> specified. If <RoomTypes> isn't specified, the promotion applies to all rooms. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | نوع اتاق را مشخص می کند. یک نوع اتاق در یک عنصر <RoomData> در پیام تراکنش (داده های ویژگی) تعریف می شود و با استفاده از مقدار <RoomID> آن ارجاع داده می شود. (مقدار <RoomID> آن نیز توسط ویژگی InvTypeCode در پیام های OTA_HotelRateAmountNotifRQ ارجاع داده می شود.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | شناسه منحصر به فرد موجودی (نوع اتاق). این مقدار در پیام Transaction (Property Data) به <RoomID> نشان داده می شود. حداکثر تعداد کاراکترهای مجاز 50 کاراکتر است. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Specifies how promotions can be combined. If not specified, the "type" is assumed to be base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Multiple promotions can be applied to a single rate depending on this setting:
Of the allowed combinations, the set of promotions which yields the largest discount are applied to the rate. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | A container for one or more date ranges that determine how the promotion is applied, such as to accommodate seasonal discounts. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Describes how the promotion should be applied. مقادیر معتبر عبارتند از:
This attribute must always be specified.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | یک محدوده تاریخی که تاریخ هایی را که قرار است تبلیغات اعمال شود را مشخص می کند. The YearlessDate format is also supported.
If you want to set |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | تاریخ شروع (بر اساس منطقه زمانی ملک)، شامل محدوده تاریخ. این تاریخ باید قبل یا همان تاریخ end باشد. اگر start مشخص نشده باشد، محدوده تاریخ عملاً از نظر تاریخ شروع نامحدود است. You should specify |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | تاریخ پایان (بر اساس منطقه زمانی ملک)، شامل محدوده تاریخ. این تاریخ باید همان تاریخ start یا بعد از آن باشد. If end isn't specified, the date range is effectively unlimited from the start date onwards. You should specify |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | روزهایی از هفته که در محدوده تاریخ مجاز هستند. اگر مشخص نشده باشد، همه روزها در محدوده تاریخ مجاز هستند. هر کاراکتر در رشته یک روز را مشخص می کند. به عنوان مثال، "MTWHF" مشخص می کند که روزهای هفته در محدوده تاریخ مجاز هستند. شخصیت های معتبر عبارتند از:
هر ترکیب کاراکتری معتبر است. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Container for listing the user locations (countries) that are eligible for the promotion. If specified, only eligible users in the listed countries are offered the discounted rate. If not specified, eligible users in any country are offered the discounted rate. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | The type of UserCountries specification. Valid values are If the UserCountries If the UserCountries If the UserCountries |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Defines one country where users are eligible for the promotion. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | A CLDR country code , such as DE or FR . Note that, for some countries, the CLDR country code isn't the same as the 2-letter ISO country code. Also, CLDR region codes are not supported. |
نمونه ها
محدودیت 500 تبلیغ در هر ملک وجود دارد. Refer to "Delete one promotion" example to remove promotions from a property.
پیام اصلی
The following example shows a basic Promotions
message:
<?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>
Inventory condition
The following example shows how to create a discount if there is excess inventory close to the arrival date:
<?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>
Delete one promotion
The following example shows how to delete one promotion for a property:
<?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>
Delete all promotions
The following example shows how to delete all promotions for a property:
<?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>
Overlay all promotions
The following example shows how to overlay <HotelPromotions>
for a property with one or more new promotions. When action="overlay"
, all stored promotions are deleted prior to storing the promotions specified in the current message:
<?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 Different Stacking Types
The following example shows a case where three different promotions would be applied ( base
, second
, any
). Note that the none
promotion wouldn't be applied since the other promotions provide a better discount. If the original price was $100, the discounted price would be $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 Stacking Type
The following example shows a case where the none
promotion is used because the combination of other promotions provides a smaller discount. If the original price was $100, the discounted price would be $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>
Booking Window Duration Bounds
The following example shows a case where the BookingWindow
element is used with its start and end bounds defined as an ISO 8601 Duration type. This booking window restriction requires booking on or before 18:00 the day prior to arrival, and on or after 12:00 on the 2nd day before arrival.
<?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>
Booking Dates DateTime Bounds
The following example shows a case where the BookingDates
element is used with start
and end
attributes as DateTime types. This booking date restriction requires booking to occur between 06:30 on 2020-07-01 and 18:45 on 2020-07-02.
<?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>
Yearless date ranges
The following example shows a case where the CheckInDates
element contains DateRanges
that have start
and end
fields without years. In this example, the promotion applies to check-in dates between 12/29 and 1/2, regardless of the year. Yearless date ranges that cross the new-year boundary are invalid, so the DateRange is expressed as two adjacent date ranges.
<?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 discount
The following example discounts two nights 50% for each four nights stayed for the specified range of booking dates. For a ten night itinerary, a total of four nights would be discounted 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>
The next example discounts one night 50% for each three nights stayed for the specified ranges of stay dates. Only the overlapping nights of stay count towards qualifying for the discount. For the following itinerary with check-in on 2022-01-01 and check-out on 2022-01-07, the qualified nights of stay and discounts are applied as follows.
- 2022-01-01 (stay)
- 2022-01-02 (stay)
- 03-01-2022
- 2022-01-04 (discounted)
- 2022-01-05 (stay)
- 2022-01-06 (stay)
<?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>
Ranked Selection
The following example offers two discounts, one for 20% off and another for 15% off. During evaluation, only the 15% discount is applied because it has a lower rank.
<?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
The following example discounts a two night stay by applying BestDailyDiscount
stacked with a Discount
.
<?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>
Consider a two night stay from April 30, 2023 to May 2, 2023 For calculation, the combination of best daily discounts that yields the deepest discount is found first.
For the first night, the "general" promotion is the only eligible amount with a fixed discount of 20.
For the second night, the "may" promotion offers a deeper discount than the "general" discount. So, when "may" is selected the fixed discount amount is 50.
Then for the stay, the "fiesta" promotion discounts to 5 per night, or 10 total. It can be stacked with the combination of best daily discounts because "fiesta" has stacking type set to any
. If it were set to base
, then only the combination of best daily discounts or the "fiesta" discount is applied. See description of Stacking
for more information.
`Overall, the price of the stay receives a 20 + 50 + 10 = 80 fixed amount discount.
پاسخ ها
نحو
The PromotionsResponse
message uses the following syntax:
<?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>
عناصر و صفات
The PromotionsResponse
message has the following elements and attributes:
عنصر / @Attribute | رخدادها | تایپ کنید | توضیحات |
---|---|---|---|
PromotionsResponse | 1 | Complex element | The root element indicating the success or issues for a received Promotions request message. |
PromotionsResponse / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
PromotionsResponse / @id | 1 | string | The unique identifier from the associated Promotions message. |
PromotionsResponse / @partner | 1 | string | حساب شریک برای این پیام. |
PromotionsResponse / Success | 0..1 | Success | Indicates that the Promotions message was processed successfully without warnings, errors, or failures. یا |
PromotionsResponse / Issues | 0..1 | Issues | A container for one or more issues encountered while processing the Promotions message. یا |
PromotionsResponse / Issues / Issue | 1..n | Issue | The description of a warning, error, or failure encountered while processing the Promotions message. جزئیات مربوط به این مسائل را میتوانید در پیامهای خطای وضعیت فید مشاهده کنید. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | شناسه مشکل |
PromotionsResponse / Issues / Issue / @status | 1 | enum | نوع مشکل مواجه شده مقادیر معتبر |
نمونه ها
موفقیت
The following is a response to a successfully processed Promotions message.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
مسائل
The following is a response to a Promotions message not processed due to errors.
<?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>