بررسی اجمالی
این 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, 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" 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 / @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 مشخص نشده باشد، محدوده تاریخ عملاً از نظر تاریخ پایان نامحدود است. |
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 پشتیبانی نمی شوند. |
مثال ها
پیام اصلی
مثال زیر یک پیام 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>
همه تبلیغات را پوشش دهید
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)
- 2022-01-03
- 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.
Responses
Syntax
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>
Elements and Attributes
The PromotionsResponse
message has the following elements and attributes:
Element / @Attribute | Occurrences | تایپ کنید | شرح |
---|---|---|---|
PromotionsResponse | 1 | Complex element | The root element indicating the success or issues for a received Promotions request message. |
PromotionsResponse / @timestamp | 1 | DateTime | The creation date and time of this message. |
PromotionsResponse / @id | 1 | string | The unique identifier from the associated Promotions message. |
PromotionsResponse / @partner | 1 | string | The partner account for this message. |
PromotionsResponse / Success | 0..1 | Success | Indicates that the Promotions message was processed successfully without warnings, errors, or failures. Either |
PromotionsResponse / Issues | 0..1 | Issues | A container for one or more issues encountered while processing the Promotions message. Either |
PromotionsResponse / Issues / Issue | 1..n | Issue | The description of a warning, error, or failure encountered while processing the Promotions message. Details on these issues can be found in Feed Status Error Messages . |
PromotionsResponse / Issues / Issue / @code | 1 | integer | The identifier for the issue. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | The type of issue encountered. Valid values are |
مثال ها
Success
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>
Issues
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>