تبلیغات

بررسی اجمالی

این 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 حساب شریک برای این پیام. این مقدار رشته، مقدار «کلید شریک» است که در صفحه تنظیمات حساب در مرکز هتل فهرست شده است.

اگر پشتیبان دارید که برای چندین حساب فید ارائه می کند، این مقدار باید با مقدار مشخصه ID مشخص شده در عنصر <RequestorID> پیام های <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> برای یک حساب مطابقت داشته باشد.

Promotions / @id 1 string یک شناسه منحصر به فرد برای این پیام درخواست. این مقدار در پیام پاسخ برگردانده می شود. کاراکترهای مجاز عبارتند از: az، AZ، ​​0-9، _ (خط زیر)، و - (خط تیر).
Promotions / @timestamp 1 DateTime تاریخ و زمان ایجاد این پیام.
Promotions / HotelPromotions 0..n HotelPromotions

تبلیغات برای یک ملک هر تبلیغی برای یک ملک خاص اعمال می شود.

مگر اینکه از <Stacking> استفاده شود، وقتی تبلیغات متعدد واجد شرایط هستند، تبلیغات با بیشترین تخفیف برای رزرو اعمال می شود.

Promotions / HotelPromotions / @hotel_id 1 string شناسه منحصر به فرد ملک این مقدار باید با شناسه هتل مشخص شده با استفاده از <id> در عنصر <listing> در فید لیست هتل مطابقت داشته باشد. شناسه هتل نیز در مرکز هتل درج شده است.
Promotions / HotelPromotions / @action 0..1 enum

اگر مشخص شده است، مقدار باید "overlay" باشد. وقتی مقدار "overlay" است، همه تبلیغات ذخیره شده قبل از ذخیره تبلیغات مشخص شده در پیام فعلی حذف می شوند.

اگر مشخص نشده باشد، هر تبلیغی که در پیام فعلی مشخص شده است:

  • Added (اگر هیچ یک از تبلیغات ذخیره شده دارای id یکسانی نباشد)
  • Updated (اگر تبلیغ ذخیره شده دارای همان id باشد)
  • Deleted (اگر یک تبلیغ ذخیره شده دارای id یکسان باشد و مقدار مشخصه action برای تبلیغ مشخص شده در پیام فعلی "delete" باشد)
Promotions / HotelPromotions / Promotion 0..99 Promotion

یک تبلیغ واحد برای یک ملک. توجه داشته باشید که اگر action="overlay" و یک <Promotion> مشخص نشده باشد، همه تبلیغات برای دارایی حذف می شوند.

اگر نیاز به استفاده از بیش از 99 تبلیغات دارید، با مدیر حساب فنی خود (TAM) تماس بگیرید.

Promotions / HotelPromotions / Promotion / @id 1 string یک شناسه منحصر به فرد برای تبلیغات. حداکثر تعداد نویسه‌های مجاز 40 است. نویسه‌های مجاز عبارتند از: az، AZ، ​​0-9، _ (زیر خط)، - (خط تیره)، و . (دوره زمانی).
Promotions /HotelPromotions / Promotion / @action 0..1 enum

اگر مشخص شده باشد، مقدار باید delete شود. اگر مشخص نشده باشد و تبلیغی با همان id ذخیره نشده باشد، این تبلیغات ذخیره می‌شود. در غیر این صورت، اگر مشخص نشده باشد و تبلیغی با همان id ذخیره شود، تبلیغات موجود به روز می شود.

اگر delete مشخص شده باشد، تبلیغات ذخیره شده با همان id حذف می شود. هنگام استفاده از delete ، هیچ عنصر فرزندی را در <Promotion> وارد نکنید. همچنین، delete در ارتباط با <HotelPromotions action="overlay"/> مجاز نیست.

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

تاریخ شروع یا زمان تاریخ (بر اساس منطقه زمانی ملک)، شامل محدوده.

  • تاریخ یا تاریخ مشخص شده توسط start باید زودتر از (یا همان) تاریخ یا تاریخ مشخص شده در end باشد.
  • اگر start مشخص نشده باشد، محدوده عملاً از نظر زمان شروع نامحدود است.
  • اگر start به عنوان تاریخ "YYYY-MM-DD" پر شود، به عنوان تاریخ "YYYY-MM-DDT00:00:00" تفسیر می شود.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date یا DateTime

تاریخ پایان یا زمان تاریخ (بر اساس منطقه زمانی دارایی)، شامل محدوده.

  • تاریخ یا تاریخ مشخص شده در end باید دیرتر از (یا همان) تاریخ یا تاریخ مشخص شده توسط start باشد.
  • اگر end مشخص نشده باشد، محدوده عملاً از نظر زمان پایان نامحدود است.
  • اگر end به عنوان تاریخ "YYYY-MM-DD" ارائه شود، به عنوان تاریخ "YYYY-MM-DDT23:59:59" تفسیر می شود.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

روزهایی از هفته که در محدوده تاریخ مجاز هستند. اگر مشخص نشده باشد، همه روزها در محدوده تاریخ مجاز هستند. هر کاراکتر در رشته یک روز را مشخص می کند. به عنوان مثال، "MTWHF" مشخص می کند که روزهای هفته در محدوده تاریخ مجاز هستند.

شخصیت های معتبر عبارتند از:

  • M برای دوشنبه
  • T برای سه شنبه
  • W برای چهارشنبه
  • H برای پنجشنبه
  • F برای جمعه
  • S برای شنبه
  • U برای یکشنبه

هر ترکیب کاراکتری معتبر است.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow مدت زمانی را که رزرو باید نسبت به تاریخ ورود (بر اساس منطقه زمانی ملک) انجام شود، مشخص می‌کند. به عنوان مثال، پنجره رزرو را می توان روی حداقل 7 روز تنظیم کرد، اما نه بیش از 180 روز، قبل از ورود.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration حداقل مدت زمان قبل از ورود به هنگام رزرو باید برای اعمال تبلیغات انجام شود. اگر این مشخص نشده باشد، یا مقدار آن 0 باشد، حداقل وجود ندارد.

انواع مقادیر معتبر عبارتند از:

  • عدد صحیح: تعداد روزهای قبل از تاریخ ورود. به عنوان مثال، مقدار 30 نشان می‌دهد که تبلیغات فقط برای رزروهایی که حداقل 30 روز قبل از تاریخ ورود انجام می‌شود اعمال می‌شود.
  • مدت زمان ISO 8601 (روز، ساعت و دقیقه): تعداد روزها (و در صورت تمایل ساعت/دقیقه) قبل از تاریخ ورود. به عنوان مثال، مقدار P30D نشان می‌دهد که این تبلیغات فقط برای رزروهایی که حداقل 30 روز قبل از تاریخ اعلام حضور دارند اعمال می‌شود. مقدار P30DT6H مستلزم رزرو در یا قبل از ساعت 18:00 30 روز قبل از ورود است.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration حداکثر تعداد روزهای قبل از اعلام حضور هنگام رزرو باید برای اعمال تبلیغات انجام شود. اگر این مشخص نشده باشد، یا مقدار آن 0 باشد، حداکثر وجود ندارد.

انواع مقادیر معتبر عبارتند از:

  • عدد صحیح: تعداد روزهای قبل از تاریخ ورود. به عنوان مثال، مقدار 30 نشان می دهد که تبلیغات فقط برای رزرو حداکثر 30 روز قبل از تاریخ ورود اعمال می شود.
  • مدت زمان ISO 8601 (روز، ساعت و دقیقه): تعداد روزها (و در صورت تمایل ساعت/دقیقه) قبل از تاریخ ورود. به عنوان مثال، مقدار P30D نشان می‌دهد که تبلیغات فقط برای رزرو حداکثر 30 روز قبل از تاریخ ورود اعمال می‌شود. مقدار P30DT6H مستلزم رزرو در ساعت 18:00 یا بعد از 30 روز قبل از ورود است.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

محدودیت‌هایی را بر روی حداکثر مقداری که پس از اعمال تبلیغات می‌توان روی آن تنظیم کرد، تعریف می‌کند.

تبلیغات همیشه باید یک <Discount> یا یک <BestDailyDiscount> را مشخص کنند، بنابراین برای ایجاد تبلیغاتی که فقط از یک <Ceiling> استفاده می کند، یک گزینه تنظیم <Discount> با percentage 0 است.

اگر انباشتگی پیکربندی شده باشد، تبلیغات متعدد با <Ceiling> می‌تواند برای یک اقامت اعمال شود. هر تبلیغی تخفیف خود را اعمال می کند و بلافاصله سقف آن را اعمال می کند. مثال زیر نشان می دهد که چگونه هر سقف در محاسبه ارتقاء بعدی در پشته کمک می کند.

مثال:

قیمت گذاری یک شب اقامت که در آن AmountBeforeTax 100 است و مجموعه ای از دو تبلیغ وجود دارد:

  1. تبلیغات با base نوع انباشته، fixed_amount 25 و سقف amount_per_night 60
  2. تبلیغ با نوع انباشته second ، fixed_amount 25، و سقف amount_per_night 90

ترتیب محاسبه به شرح زیر است:

  1. تبلیغات base ابتدا اعمال می شود و AmountBeforeTax را به 75 تخفیف می دهد، اما سپس سقف آن را به 60 کاهش می دهد.
  2. تبلیغ second AmountBeforeTax از 60 به 35 تخفیف می دهد. این زیر سقف 90 است بنابراین سقف دوم اعمال نمی شود. نرخ نهایی 35 است.

این واقعیت که 60 یک سقف کلی سخت‌گیرانه‌تر است، بی‌ربط است، زیرا فقط برای ارتقای خودش معتبر است، و نمی‌تواند سقف واحدی وجود داشته باشد که کل پشته تبلیغات را در بر بگیرد.

Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night 1 float

حداکثر مقداری که پس از اعمال تخفیف می توان نرخ شبانه را روی آن تنظیم کرد.

اگر یک عنصر <Floor> نیز مشخص شده باشد، باید مقداری بزرگتر یا مساوی با ویژگی amount_per_night در <Floor> تنظیم شود.

amount_per_night وقتی در نرخ شبانه با استفاده از AmountAfterTax گنجانده شود، برای مالیات‌ها و کارمزدها اعمال می‌شود، اما نه مواردی که با استفاده از TaxFeeInfo مشخص شده‌اند.

Promotions / HotelPromotions / Promotion / Floor 0..1 Floor

محدودیت‌هایی را بر روی حداقل مقداری که پس از اعمال تبلیغات می‌توان روی آن تنظیم کرد، تعریف می‌کند.

تبلیغات همیشه باید یک <Discount> یا یک <BestDailyDiscount> را مشخص کنند، بنابراین برای ایجاد تبلیغاتی که فقط یک <Floor> اعمال می کند، یک گزینه تنظیم <Discount> با percentage 0 است.

منطق <Floor> همچنان در مورد تخفیف های <FreeNights> صدق می کند، حتی اگر شب رایگان 100% تخفیف برای آن اعمال شود.

اگر انباشتگی پیکربندی شده باشد، تبلیغات متعدد با <Floor> می‌تواند برای یک اقامت اعمال شود. هر تبلیغی تخفیف خود را اعمال می کند، و بلافاصله پس از آن طبقه آن. مثال زیر نشان می‌دهد که چگونه هر طبقه به محاسبه ارتقای بعدی در پشته کمک می‌کند.

مثال:

قیمت گذاری یک شب اقامت که در آن AmountBeforeTax 100 است و مجموعه ای از دو تبلیغ وجود دارد:

  1. تبلیغات با base نوع انباشته، fixed_amount 25، و amount_per_night کف برای هر شب 90
  2. تبلیغ با نوع انباشته second ، fixed_amount 25، و amount_per_night کف برای هر شب 60

ترتیب محاسبه به شرح زیر است:

  1. تبلیغات base ابتدا اعمال می شود و AmountBeforeTax را به 75 تخفیف می دهد، اما سپس کف آن را تا 90 افزایش می دهد.
  2. تبلیغ second AmountBeforeTax از 90 به 65 تخفیف می دهد. این بالاتر از طبقه 60 است بنابراین طبقه دوم اعمال نمی شود. نرخ نهایی 65 است.

این واقعیت که 90 یک طبقه کلی سخت‌گیرانه‌تر است، بی‌ربط است، زیرا فقط برای تبلیغ خودش معتبر است، و نمی‌تواند طبقه‌ای وجود داشته باشد که کل پشته تبلیغاتی را در بر گیرد.

Promotions / HotelPromotions / Promotion / Floor / @amount_per_night 1 float

حداقل مبلغی که پس از اعمال تخفیف می توان نرخ شبانه را تعیین کرد.

اگر یک عنصر <Ceiling> نیز مشخص شده باشد، باید مقداری کمتر یا مساوی با ویژگی amount_per_night در <Ceiling> تنظیم شود.

amount_per_night وقتی در نرخ شبانه با استفاده از AmountAfterTax گنجانده شود، برای مالیات‌ها و کارمزدها اعمال می‌شود، اما نه مواردی که با استفاده از TaxFeeInfo مشخص شده‌اند.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates ظرفی برای یک یا چند محدوده تاریخی که تعیین می‌کند برای اعمال تبلیغات چه زمانی باید اعلام حضور شود.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

یک محدوده تاریخی که مشخص می‌کند چه زمانی باید ثبت نام انجام شود تا تبلیغات اعمال شود. اگر در حال حذف یک یا چند تبلیغ هستید، این عنصر ضروری نیست.

فرمت YearlessDate نیز پشتیبانی می شود.

  • اگر یکی از تاریخ های start یا end یک تاریخ بدون سال باشد، هر دو باید به عنوان تاریخ های بدون سال پر شوند.
  • محدوده تاریخ بدون سال نباید در سال جدید باشد. در عوض، محدوده را به عنوان دو محدوده تاریخ مجاور نشان دهید. برای مثال، {"12-29", "01-05"} را می توان به صورت {"12-29", "12-31"} و {"01-01", "01-05"} نشان داد.
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" مشخص می کند که روزهای هفته در محدوده تاریخ مجاز هستند.

شخصیت های معتبر عبارتند از:

  • M برای دوشنبه
  • T برای سه شنبه
  • W برای چهارشنبه
  • H برای پنجشنبه
  • F برای جمعه
  • S برای شنبه
  • U برای یکشنبه

هر ترکیب کاراکتری معتبر است.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates ظرفی برای یک یا چند محدوده تاریخی که تعیین می‌کند برای اعمال تبلیغات چه زمانی باید تسویه حساب انجام شود.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

یک محدوده تاریخی که مشخص می‌کند برای اعمال تبلیغات چه زمانی باید تسویه حساب انجام شود. اگر در حال حذف یک یا چند تبلیغ هستید، این عنصر ضروری نیست.

فرمت YearlessDate نیز پشتیبانی می شود.

  • اگر یکی از تاریخ های start یا end یک تاریخ بدون سال باشد، هر دو باید به عنوان تاریخ های بدون سال پر شوند.
  • محدوده تاریخ بدون سال نباید در سال جدید باشد. در عوض، محدوده را به عنوان دو محدوده تاریخ مجاور نشان دهید. برای مثال، {"12-29", "01-05"} را می توان به صورت {"12-29", "12-31"} و {"01-01", "01-05"} نشان داد.
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" مشخص می کند که روزهای هفته در محدوده تاریخ مجاز هستند.

شخصیت های معتبر عبارتند از:

  • M برای دوشنبه
  • T برای سه شنبه
  • W برای چهارشنبه
  • H برای پنجشنبه
  • F برای جمعه
  • S برای شنبه
  • U برای یکشنبه

هر ترکیب کاراکتری معتبر است.

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

دقیقاً یکی از Discount یا BestDailyDiscount باید مشخص شود.

تخفیفی که برای این تبلیغات اعمال می شود را مشخص می کند.

Promotions / HotelPromotions / Promotion / Discount / @percentage 0..1 float

دقیقاً یکی از percentage ، fixed_amount ، fixed_amount_per_night ، fixed_price ، یا fixed_price_per_night مورد نیاز است.

یک مقدار اعشاری از 0-100 که درصد تخفیف را مشخص می کند. برای AmountAfterTax (یا AmountBeforeTax اگر AmountAfterTax مشخص نشده باشد) اعمال می شود.

مثال ها:

  • اگر AmountAfterTax 100 و percentage 20 باشد، پس

    نرخ تبلیغات = AmountAfterTax * (1 - درصد تخفیف)

    80.00 = 100 * (1 - 0.2)

  • اگر AmountBeforeTax 100 است، percentage 20 است و TaxFeeInfo مالیات 10 را مشخص می کند، سپس

    نرخ ارتقاء = AmountBeforeTax * (1 - درصد تخفیف) + مالیات

    90.00 = 100 * (1 - 0.2) + 10

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

دقیقاً یکی از percentage ، fixed_amount ، fixed_amount_per_night ، fixed_price ، یا fixed_price_per_night مورد نیاز است.

مبلغ ثابتی که باید از مجموع نرخ‌های شبانه AmountAfterTax (یا مجموع نرخ‌های شبانه AmountBeforeTax در صورتی که AmountAfterTax مشخص نشده باشد) کم شود. فرض بر این است که به همان ارز نرخ شبانه است. اگر این بزرگتر از مجموع نرخ های شبانه باشد، مقدار حاصل صفر است.

مثال ها:

  • اگر برای اقامت 1 شب قیمت گذاری کنیم که در آن AmountBeforeTax 90، AmountAfterTax 100، و fixed_amount 20 است، پس

    نرخ ارتقاء = AmountAfterTax - تخفیف ثابت

    80.00 = 100 - 20

  • اگر برای اقامت 1 شب قیمت گذاری کنیم که در آن AmountBeforeTax 100، fixed_amount 20 است، و TaxFeeInfo مالیات 8٪ را مشخص می کند، پس

    نرخ ارتقاء = ( AmountBeforeTax - تخفیف ثابت) * (1 + درصد مالیات)

    86.40 = (100 - 20) * 1.08

  • اگر برای اقامت 1 شب قیمت گذاری کنیم که در آن AmountBeforeTax 50، fixed_amount 60 است، و TaxFeeInfo مالیات 10 را مشخص می کند، پس

    نرخ ارتقاء = ( AmountBeforeTax - تخفیف ثابت) * مالیات

    10.00 = 0 + 10

  • اگر برای اقامت 3 شب قیمت گذاری کنیم که مقادیر AmountAfterTax 100، 110 و 120 باشد. و fixed_amount 150 است، پس

    نرخ تبلیغات = جمع ( AmountAfterTax ) - (تخفیف ثابت)

    180.00 = (100 + 110 + 120) - 150

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night 0..1 float

دقیقاً یکی از percentage ، fixed_amount ، fixed_amount_per_night ، fixed_price ، یا fixed_price_per_night مورد نیاز است.

یک تخفیف ثابت برای هر یک از نرخ‌های شبانه AmountAfterTax اعمال می‌شود (یا ارزان‌ترین N اگر applied_nights مشخص شده باشد). اگر AmountAfterTax مشخص نشده باشد، برای AmountBeforeTax اعمال می شود. فرض بر این است که به همان ارز نرخ شبانه است. اگر fixed_amount_per_night بزرگتر از نرخ شبانه باشد، آن نرخ شبانه به صفر کاهش می یابد—تخفیف نمی تواند باعث منفی شدن نرخ شبانه شود.

مثال ها:

  • اگر برای اقامت 3 شب قیمت گذاری کنیم که مقادیر AmountAfterTax 100، 110 و 120 باشد. و fixed_amount_per_night 10 است، پس

    نرخ تبلیغات = جمع (مبلغ AmountBeforeTax - تخفیف مبلغ ثابت)

    300.00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • اگر برای اقامت 3 شب قیمت گذاری کنیم که مقادیر AmountAfterTax 10، 50 و 100 باشد. و fixed_amount_per_night 20 است، پس

    نرخ تبلیغات = جمع ( AmountAfterTax - تخفیف مقدار ثابت)

    110.00 = (0 + (50 - 20) + (100 - 20))

Promotions / HotelPromotions / Promotion / Discount / @fixed_price 0..1 float

دقیقاً یکی از percentage ، fixed_amount ، fixed_amount_per_night ، fixed_price ، یا fixed_price_per_night مورد نیاز است.

اگر نرخ‌های شبانه AmountAfterTax مشخص شده باشد، آنگاه قیمت اقامت، از جمله مالیات و هزینه‌ها، به مقدار مشخص شده تعیین می‌شود. اگر AmountBeforeTax مشخص شده باشد، چه AmountAfterTax مشخص شده باشد یا خیر، این قیمت قبل از مالیات را برای اقامت روی مقدار مشخص شده تنظیم می کند. فرض بر این است که به همان ارز نرخ شبانه است.

اگر قرار است AmountAfterTax منعکس کننده درصدی از مالیات باشد، تعیین قیمت ثابت برای AmountBeforeTax می تواند منجر به مالیات و هزینه های نادرست شود. به طور کلی، اکیداً توصیه می شود از TaxFeeInfo برای تعیین مالیات و هزینه های ملک استفاده کنید.

مثال ها:

  • اگر برای اقامت 1 شب قیمت گذاری کنیم که در آن AmountBeforeTax 90، AmountAfterTax 100، و fixed_price 80 است، نرخ تبلیغات 80 است.
  • اگر یک شب اقامت را قیمت گذاری کنیم که در آن AmountBeforeTax 100، fixed_amount 80 است، و TaxFeeInfo مالیات 8٪ را مشخص می کند.

    نرخ تبلیغات = قیمت ثابت * (1 + درصد مالیات)

    86.40 = 80 * 1.08

  • اگر برای اقامت 3 شب قیمت گذاری کنیم که مقادیر AmountAfterTax 100، 110 و 120 باشد. و fixed_amount 300 است، پس

    نرخ ارتقاء = 300

Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night 0..1 float

دقیقاً یکی از percentage ، fixed_amount ، fixed_amount_per_night ، fixed_price ، یا fixed_price_per_night مورد نیاز است.

اگر نرخ‌های شبانه AmountAfterTax مشخص شده باشد، آنگاه قیمت هر شب اقامت، از جمله مالیات و هزینه‌ها، به مقدار مشخص شده تعیین می‌شود. اگر AmountBeforeTax مشخص شده باشد، آیا AmountAfterTax مشخص شده است یا خیر، این قیمت قبل از مالیات را برای هر شب اقامت روی مقدار مشخص شده تنظیم می کند. فرض بر این است که به همان ارز نرخ شبانه است.

اگر قرار است AmountAfterTax منعکس کننده درصدی از مالیات باشد، تعیین قیمت ثابت برای AmountBeforeTax می تواند منجر به مالیات و هزینه های نادرست شود. به طور کلی، اکیداً توصیه می شود از TaxFeeInfo برای تعیین مالیات و هزینه های ملک استفاده کنید.

اگر applied_nights مشخص شده باشد، قیمت جدید برای ارزان‌ترین N شب اعمال می‌شود.

مثال ها:

  • اگر برای اقامت 2 شب قیمت گذاری کنیم که مقادیر AmountBeforeTax 90، 90 باشد. مقادیر AmountAfterTax 100، 100 است. و fixed_price 80 است، سپس نرخ ارتقاء 80 + 80 = 160 است.
  • اگر ما برای اقامت 2 شب قیمت گذاری کنیم که در آن AmountBeforeTax 100، 100 است. fixed_amount 80 است، و TaxFeeInfo مالیات 8٪ را مشخص می کند، سپس نرخ ارتقاء (80 + 80) * 1.08 = 172.8 است.
  • اگر برای اقامت 3 شب قیمت گذاری کنیم که مقادیر AmountAfterTax 100، 110 و 120 باشد. و fixed_amount 110 است، سپس نرخ ارتقاء 110 * 3 = 330 است.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

این فقط باید با percentage یا fixed_amount_per_night استفاده شود.

تعداد شب هایی که برای آن تخفیف اعمال می شود، با کمترین هزینه شروع می شود. باید یک عدد صحیح از 1 تا 99 باشد. اگر مشخص نشده باشد، برای تمام شب ها تخفیف اعمال می شود.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights در برخی از شب‌های اقامت که حداقل مدت اقامت رعایت شده باشد، تخفیفی را مشخص می‌کند. در صورت استفاده از این عنصر، ویژگی‌های عنصر Discount اصلی مجاز نیستند.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

تعداد شب های لازم برای اعمال تخفیف. هر تخفیف برای بخش جداگانه ای از شب های اقامت اعمال می شود.

به عنوان مثال، برای اقامت 10 شب که stay_nights 4 است (و repeats درست است)، پس دو بخش شب اقامت وجود دارد: شب 1 تا 4 و شب 5 تا 8. شب های 9 و 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

آیا ممکن است تخفیف برای چندین بخش اقامت شبانه اعمال شود یا خیر. اگر false ، فقط بخش شب های اقامت در ابتدای برنامه سفر تخفیف داده می شود. اگر true ، هر بخش از شب های اقامت تخفیف داده می شود.

به عنوان مثال، اگر stay_nights 4 و برنامه سفر 10 شب باشد، اگر repeats true باشد، 2 بخش تخفیف داده می شود (شب 1-4 و شب 5-8). اما، اگر repeats false باشد، فقط 1 بخش تخفیف داده می شود (شب های 1-4).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer به این ارتقاء یک رتبه اختصاص می‌دهد و آن را در انتخاب رتبه‌بندی‌شده انتخاب می‌کند، جایی که فقط ارتقاء با پایین‌ترین رتبه برای اعمال انتخاب می‌شود. مقادیر باید بین 1 تا 99 باشد. اگر چند ترفیع رتبه یکسانی داشته باشند، یکی به صورت دلخواه انتخاب و اعمال می شود.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

دقیقاً یکی از Discount یا BestDailyDiscount باید مشخص شود.

تخفیف روزانه را مشخص می کند که ممکن است برای یک شب اقامت اعمال شود. این برخلاف Discount است که برای کل اقامت‌ها تخفیف اعمال می‌کند.

هر ملک ممکن است دارای یک گروه از تبلیغات باشد که "بهترین روزانه" در نظر گرفته می شوند. این بدان معناست که برای هر شب اقامت، تبلیغات تکی "بهترین روزانه" که واجد شرایط است و عمیق ترین تخفیف را برای آن شب به همراه دارد انتخاب شده و ممکن است اعمال شود.

Stacking ممکن است با BestDailyDiscount مشخص نشود. تخفیف‌های «بهترین روزانه» که عمیق‌ترین تخفیف را برای هر شب ارائه می‌کنند، ترکیب شده و به‌عنوان یک تخفیف برای اقامت (یعنی Discount ) با نوع انباشته روی base در نظر گرفته می‌شوند. این تخفیف ترکیبی با سایر تبلیغات واجد شرایط <تخفیف> مقایسه می‌شود و می‌توان آن‌ها را برای یافتن یک یا ترکیبی که عمیق‌ترین تخفیف را ارائه می‌دهد، انباشته کرد. یا ترکیبی از BestDailyDiscount یا یک Discount واحد، هر کدام که قیمت کمتری را به همراه داشته باشد، برای نوع انباشته base انتخاب و اعمال می شود.

StayDates می توان با این نوع تخفیف مشخص کرد، اما application باید روی overlap تنظیم شود

.
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage 0..1 float

دقیقاً یکی از percentage ، fixed_amount ، یا fixed_price مورد نیاز است.

یک مقدار اعشاری از 0-100 که درصد تخفیف را مشخص می کند. برای AmountAfterTax (یا AmountBeforeTax اگر AmountAfterTax مشخص نشده باشد) اعمال می شود.

مثال ها:

  • اگر AmountAfterTax برای یک شب اقامت 100 و percentage 20 باشد، پس

    نرخ تبلیغات = AmountAfterTax * (1 - درصد تخفیف)

    80.00 = 100 * (1 - 0.2)

  • اگر AmountBeforeTax برای یک هفته اقامت 100 است، percentage آن 20 است و TaxFeeInfo مالیات 10 را مشخص می کند، پس

    نرخ ارتقاء = AmountBeforeTax * (1 - درصد تخفیف) + مالیات

    90.00 = 100 * (1 - 0.2) + 10

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount 0..1 float

دقیقاً یکی از percentage ، fixed_amount ، یا fixed_price مورد نیاز است.

مبلغ ثابتی که باید از یک نرخ شبانه AmountAfterTax (یا نرخ شبانه AmountBeforeTax در صورتی که AmountAfterTax مشخص نشده است) کم شود. فرض بر این است که به همان ارز نرخ شبانه است. اگر این بزرگتر از مجموع نرخ های شبانه باشد، مقدار حاصل صفر است.

مثال ها:

  • اگر AmountBeforeTax برای یک شب 90، AmountAfterTax 100 و fixed_amount 20 باشد، پس

    نرخ ارتقاء = AmountAfterTax - تخفیف ثابت

    80.00 = 100 - 20

  • اگر AmountBeforeTax برای یک شب 100 باشد، fixed_amount 20 باشد و TaxFeeInfo مالیات 8٪ را مشخص کند، پس

    نرخ ارتقاء = ( AmountBeforeTax - تخفیف ثابت) * (1 + درصد مالیات)

    86.40 = (100 - 20) * 1.08

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price 0..1 float

دقیقاً یکی از percentage ، fixed_amount ، یا fixed_price مورد نیاز است.

اگر نرخ‌های شبانه AmountAfterTax مشخص شده باشد، قیمت شب اقامت شامل مالیات و هزینه‌ها را به مقدار مشخص تعیین می‌کند. اگر AmountBeforeTax مشخص شده باشد، چه AmountAfterTax مشخص شده باشد یا خیر، این قیمت قبل از مالیات را برای اقامت روی مقدار مشخص شده تنظیم می کند. فرض بر این است که به همان ارز نرخ شبانه است.

مثال ها:

  • اگر AmountBeforeTax برای یک شب 90، AmountAfterTax 100 و fixed_price 80 باشد، نرخ تبلیغات 80 است.
  • اگر AmountBeforeTax برای یک شب 100 باشد، fixed_amount 80 باشد و TaxFeeInfo مالیات 8٪ را مشخص کند، پس

    نرخ تبلیغات = قیمت ثابت * (1 + درصد مالیات)

    86.40 = 80 * 1.08

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 خاص برای تخفیف مرتبط می شود.

این عنصر نباید مشخص شود مگر اینکه <Discount> نیز مشخص شده باشد.

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

بسته به این تنظیم، تبلیغات چندگانه را می توان برای یک نرخ اعمال کرد:

  • any : را می توان با هر تبلیغ دیگری ترکیب کرد (به جز none )، اما ترتیبی که تبلیغات باید اعمال شوند تضمین نمی شود.
  • base : بهترین تبلیغ base واجد شرایط ابتدا قبل از سایر تبلیغات انتخاب و اعمال می شود. این قبلا base_only نام داشت.
  • second : بهترین تبلیغ second واجد شرایط پس از ارتقای base (در صورت وجود) و قبل از any تبلیغات انتخاب و اعمال می شود.
  • none : نمی توان آن را با تبلیغات دیگر ترکیب کرد.

از میان ترکیب‌های مجاز، مجموعه تبلیغاتی که بیشترین تخفیف را به همراه دارد، روی نرخ اعمال می‌شود.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates ظرفی برای یک یا چند محدوده تاریخی که نحوه اعمال تبلیغات را تعیین می‌کند، مانند تخفیف‌های فصلی.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

توضیح می دهد که چگونه تبلیغات باید اعمال شود.

مقادیر معتبر عبارتند از:

  • all : اگر همه تاریخ‌های برنامه سفر با تاریخ‌های اقامت همپوشانی داشته باشند، تبلیغ را برای هر شب در برنامه سفر اعمال می‌کند.
  • any : اگر تاریخی در برنامه سفر با تاریخی در محدوده تاریخ اقامت همپوشانی داشته باشد، تبلیغ را برای تمام شب‌های برنامه سفر اعمال می‌کند.
  • overlap : تبلیغات را فقط برای شب‌هایی در برنامه سفر اعمال می‌کند که با تاریخی در محدوده تاریخ اقامت همپوشانی دارند.

این ویژگی همیشه باید مشخص شود.

  • اگر <Discount> percentage مشخص کند و application روی all یا any تنظیم شود، تخفیف به عنوان درصدی از اقامت کامل اعمال می شود.
  • اگر <Discount> percentage را مشخص کند و application روی overlap تنظیم شده باشد، تخفیف به عنوان درصدی از نرخ های شبانه برای شب های همپوشانی اعمال می شود.
  • <Discount> تعیین fixed_amount و تنظیم application روی overlap ترکیبی نامعتبر است.
  • <FreeNights> از تمام مقادیر application پشتیبانی می کند. توجه داشته باشید که برای overlap ، تنها شب‌های اقامت با هم تداخل دارند برای شرایط تخفیف.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

یک محدوده تاریخی که تاریخ هایی را که قرار است تبلیغات اعمال شود را مشخص می کند.

فرمت YearlessDate نیز پشتیبانی می شود.

  • اگر یکی از تاریخ های start یا end یک تاریخ بدون سال باشد، هر دو باید به عنوان تاریخ های بدون سال پر شوند.
  • محدوده تاریخ بدون سال نباید در سال جدید باشد. در عوض، محدوده را به عنوان دو محدوده تاریخ مجاور نشان دهید. برای مثال، {"12-29", "01-05"} را می توان به صورت {"12-29", "12-31"} و {"01-01", "01-05"} نشان داد.
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" مشخص می کند که روزهای هفته در محدوده تاریخ مجاز هستند.

شخصیت های معتبر عبارتند از:

  • M برای دوشنبه
  • T برای سه شنبه
  • W برای چهارشنبه
  • H برای پنجشنبه
  • F برای جمعه
  • S برای شنبه
  • U برای یکشنبه

هر ترکیب کاراکتری معتبر است.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries ظرفی برای فهرست کردن مکان‌های کاربری (کشورها) که واجد شرایط تبلیغ هستند. در صورت مشخص شدن، فقط به کاربران واجد شرایط در کشورهای فهرست شده، نرخ تخفیف ارائه می شود. اگر مشخص نشده باشد، به کاربران واجد شرایط در هر کشوری نرخ تخفیف ارائه می شود.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum نوع مشخصات UserCountries.

مقادیر معتبر include و exclude می شوند.

اگر type UserCountries به عنوان include تنظیم شده باشد، این تبلیغ برای کاربران کشورهای فهرست شده اعمال می شود.

اگر type UserCountries exclude باشد، این تبلیغ برای کاربران خارج از کشورهای فهرست شده اعمال می شود.

اگر type UserCountries تنظیم نشده باشد، به عنوان include تلقی می شود و تبلیغات برای کاربران کشورهای فهرست شده اعمال می شود.

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 <Success> or <Issues> is present in each message.

PromotionsResponse / Issues 0..1 Issues A container for one or more issues encountered while processing the Promotions message.

Either <Success> or <Issues> is present in each message.

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 warning , error , and failure .

مثال ها

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>