סקירה
ה-API הזה מאפשר לציין הנחות אפשריות. מתוך המבצעים שצוינו, Google מחילה את המבצע או קבוצת המבצעים שעומדים בדרישות שהובילו למחיר הנמוך ביותר. אם אתם מחפשים API שתומך בהתאמות שרירותיות של תעריפים, שיכולות להעלות או להוריד את המחיר כשהתנאים מתקיימים, מומלץ להשתמש ב-Rate Modifys 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 | חשבון השותף שאליו שייכת ההודעה הזו. ערך המחרוזת הזה הוא
הערך של 'מפתח שותף' שמופיע
בדף הגדרות החשבון ב-Hotel Center.
אם יש לכם קצה עורפי שמספק פידים
לכמה חשבונות, הערך הזה צריך להתאים לערך המאפיין
|
Promotions / @id | 1 | string | מזהה ייחודי להודעת הבקשה הזו. הערך הזה מוחזר בהודעת התשובה. התווים המותרים הם a-z, A-Z, 0-9, _ (קו תחתון) ו-- (מקף). |
Promotions / @timestamp | 1 | DateTime | התאריך והשעה של יצירת ההודעה הזו. |
Promotions / HotelPromotions | 0..n | HotelPromotions | מבצעים על נכס. כל מבצע חל על נכס אחד. אלא אם משתמשים ב- |
Promotions / HotelPromotions / @hotel_id | 1 | string | המזהה הייחודי של הנכס. הערך הזה חייב להתאים
למזהה המלון שצוין באמצעות
<id> ברכיב <listing>
בפיד רשימת המלונות. מזהה המלון מופיע גם ב-Hotel Center. |
Promotions / HotelPromotions / @action | 0..1 | enum | אם צוין, הערך חייב להיות אם לא מציינים זאת, כל מבצע שמצוין בהודעה הנוכחית הוא:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | מבצע יחיד של נכס. הערה: אם לא תציינו
אם אתם צריכים להשתמש ביותר מ-99 קידומי מכירות, עליכם לפנות למנהל החשבונות הטכני (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | מזהה ייחודי של המבצע. אפשר להזין עד 40 תווים. התווים המותרים הם a-z, A-Z, 0-9, _ (קו תחתון), - (מקף) ו- . (נקודה). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | אם צוין, הערך חייב להיות אם מציינים |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | מאגר בטווח אחד או יותר שמגדיר מתי צריך להתבצע הזמנה כדי שהמבצע יחול. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | טווח שמציין מתי מתבצעת ההזמנה כדי שהמבצע יחול. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date או DateTime | תאריך ההתחלה או התאריך והשעה (על סמך אזור הזמן של הנכס), כולל הטווח.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date או DateTime | תאריך הסיום או התאריך והשעה (על סמך אזור הזמן של הנכס), כולל הטווח.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | הימים בשבוע שמותרים בטווח התאריכים. אם לא מציינים זאת, כל הימים מותרים בטווח התאריכים. כל תו במחרוזת מציין יום. לדוגמה, הערך MTWHF מציין שימי חול מותרים בטווח התאריכים. התווים החוקיים הם:
כל שילוב תווים חוקי. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | מאפיין זה מציין את התקופה שבה צריך לבצע הזמנה ביחס לתאריך הצ'ק אין (בהתאם לאזור הזמן של הנכס). לדוגמה, אפשר להגדיר חלון הזמנה של 7 ימים לפחות, אבל לא יותר מ-180 ימים לפני הצ'ק-אין. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | כדי שהמבצע יחול, יש לציין את משך הזמן המינימלי לפני הצ'ק-אין בזמן ההזמנה. אם הוא לא צוין, או אם הערך שלו הוא 0 , אין מינימום.
סוגי הערכים החוקיים הם:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | כדי שהמבצע יחול, עליך להזין את מספר הימים המקסימלי לפני הצ'ק-אין. אם הערך הזה לא מוגדר, או אם הערך שלו הוא
0 , אין ערך מקסימלי.
סוגי הערכים החוקיים הם:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
המדיניות הזו מגדירה הגבלות על הערך המקסימלי שאפשר להגדיר לתעריף לאחר החלת מבצעים. במבצעים תמיד צריך לציין אם מגדירים מקבצים, יכול להיות שכמה מבצעים עם
דוגמה: מחירים של שהייה של לילה אחד, כשהסכום של
זהו סדר החישוב:
העובדה ש-60 היא תקרה כוללת מחמירה יותר אינה רלוונטית כי היא תקפה רק לקידום של עצמה, ולא יכולה להיות תקרה אחת שמתפרשת על פני כל מקבץ המבצעים. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
הסכום המקסימלי שאפשר להגדיר לפי תעריף ללילה אחרי החלת ההנחה. אם מציינים גם רכיב המאפיין |
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
המדיניות הזו מגדירה הגבלות על הערך המינימלי שאפשר להגדיר לו תעריף לאחר החלת מבצעים. במבצעים תמיד צריך לציין הלוגיקה של אם מגדירים מקבצים, יכול להיות שכמה מבצעים עם
דוגמה: מחירים של שהייה של לילה אחד, כשהסכום של
זהו סדר החישוב:
העובדה ש-90 היא סף כולל מחמיר יותר אינה רלוונטית כי היא תקפה רק לקידום של עצמה, ולא יכולה להיות מינימום בודד שמתפרס על כל ערימת המבצע. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
הסכום המינימלי שאפשר להגדיר לפיו תעריף ללילה אחרי החלת ההנחה. אם מציינים גם רכיב המאפיין |
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 |
מאגר של כלל מחיר המינוי שמפעיל טיפול ספציפי בממשק המשתמש עבור ההנחה המשויכת. אין לציין את הרכיב הזה אלא אם מציינים גם את הערך |
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 | מציין תוכנית תעריפים. תוכנית תעריפים מוגדרת על סמך שילוב של חבילה, תעריפים וזמינות, כפי שמוגדר בהודעות (נתוני הנכס), OTA_HotelRateAmountNotifRQ ו-OTA_HotelAvailNotifRQ וכפי שמזוהה על ידי ה-PackageID. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | המזהה הייחודי של תוכנית התעריפים. הערך הזה ממופה
לערך PackageID ב-<PackageData>
בהודעה Transaction (נתוני נכס), ובמאפיין 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> בהודעה Transaction (נתוני נכס) והפניה אליו מתבצעת באמצעות הערך <RoomID> שלו. (בהודעות OTA_HotelRateAmountNotifRQ
יש הפניה גם
לערך <RoomID> של
המאפיין InvTypeCode ). |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | המזהה הייחודי של המלאי (סוג החדר). הערך הזה ממופה
אל <RoomID> בהודעה של עסקה (נתוני נכס).
אפשר להזין עד 50 תווים. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | מציינת איך אפשר לשלב מבצעים. אם לא צוין סוג, ההנחה
היא שהסוג הוא base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | אפשר להחיל כמה מבצעים על תעריף אחד, בהתאם להגדרה הזו:
מתוך השילובים המותרים, המערכת מחילה את התעריף של קבוצת המבצעים שמפיקה את ההנחה הגדולה ביותר. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | מאגר לטווח תאריכים אחד או יותר שקובע איך המבצע יחול, למשל כדי להתאים להנחות עונתיות. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | תיאור של אופן ההפעלה של המבצע. הערכים החוקיים כוללים:
תמיד צריך לציין את המאפיין הזה.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | טווח תאריכים שמציין את התאריכים שבהם יחול המבצע. יש תמיכה גם בפורמט YearlessDate.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | תאריך ההתחלה (על סמך אזור הזמן של הנכס), כולל, בטווח התאריכים. התאריך הזה חייב להיות לפני התאריך של end , או זהה לו. אם לא מציינים את האפשרות start , למעשה טווח התאריכים
בלתי מוגבל מבחינת תאריך ההתחלה. |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | תאריך הסיום (על סמך אזור הזמן של הנכס), כולל, בטווח התאריכים. התאריך הזה חייב להיות זהה לתאריך של start או אחריו. אם לא מציינים את התאריך end , בפועל טווח התאריכים
לא מוגבל מבחינת תאריך סיום. |
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 שונה מקוד המדינה בן 2 האותיות לפי תקן ISO. בנוסף, אין תמיכה בקודי אזורים במאגר 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>
הצגת כל המבצעים בשכבת-על
הדוגמה הבאה מראה איך להוסיף שכבת-על <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: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 ל-1 ביולי 2020 לבין 18:45 ב-2 ביולי 2020.
<?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
ללא שנים. בדוגמה הזו, המבצע חל על תאריכי הצ'ק-אין בין 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% לכל ארבעה לילות לשהייה בטווח התאריכים שצוין. למסלול של עשרה לילות, ארבעה לילות סה"כ יקבלו הנחה 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% ללילה אחד לכל שלושה לילות לטווחי השהייה שצוינו. רק הלילות החופפים של השהייה נספרים עד לקבלת ההנחה. במסלול הנסיעה הבא עם צ'ק-אין ב-1 בינואר 2022 וצ'ק אאוט ב-7 בינואר 2022, ההנחות והלילות הרלוונטיות לשהייה יחולו כמפורט למטה.
- 01.01-2022 (שהייה)
- 02-01-2022 (שהייה)
- 2022-01-03
- 04.01.2022 (בהנחה)
- 5.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
בדוגמה הבאה מוזלת שהייה של שני לילות באמצעות החלת 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.
עבור הלילה השני, המבצע 'יכול' מציע הנחה עמוקה יותר מההנחה ה'כללית'. לכן, כשבוחרים באפשרות 'May', סכום ההנחה הקבוע הוא 50.
לאחר מכן, המחיר כולל הנחה של 5 ללילה על ה"חגיגה", או
10 בסה"כ. אפשר לשלב אותו עם השילוב של ההנחות היומיות הכי טובות כי סוג הערימה של 'חגיגה' מוגדר ל-any
. אם היא הוגדרה לערך base
, יוחל רק השילוב של ההנחות היומיות הטובות ביותר או הנחת ה'חגיגה'. למידע נוסף, ראו תיאור של 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>