סקירה כללית
ה-API הזה מאפשר לציין הנחות אפשריות. מתוך המבצעים שצוינו, Google מיישמת את המבצע או את קבוצת המבצעים שעומדים בדרישות, שמובילים למחיר הנמוך ביותר. אם אתם מחפשים API שתומך בהתאמות תעריפים שרירותיות, שיכול להגדיל או להקטין את המחיר כשהתנאים מתקיימים, מומלץ להשתמש ב-Rate Changes API. שימו לב שאם שני ממשקי ה-API קיימים, שינויי המחירים מוחלים לפני המבצעים.
Requests
תחביר
ההודעה 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>
רכיבים ומאפיינים
הודעת 'קידומי מכירות' כוללת את הרכיבים והמאפיינים הבאים:
רכיב / @מאפיין | אירועים | סוג | תיאור |
---|---|---|---|
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 (Data 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> בהודעה מסוג Transaction (נתוני נכס), וההפניה אליו מתבצעת באמצעות הערך <RoomID> שלו. (יש הפניה לערך <RoomID> שלו גם באמצעות המאפיין
InvTypeCode בהודעות OTA_HotelRateAmountNotifRQ.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | המזהה הייחודי של המלאי (סוג החדר). הערך הזה ממופה אל <RoomID> בהודעה של 'עסקה (נתוני נכס)'.
ניתן להזין עד 50 תווים. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | מציין איך ניתן לשלב את המבצעים. אם לא צוין, הערך "type" נחשב כ-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. בגלל ההגבלה הזו על תאריך ההזמנה, צריך לבצע הזמנה בין
6:30 ב-17 ביולי 2020 ל-18:45 ב-27 ביולי 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 בנובמבר ל-2/1, ללא קשר לשנה. טווחי תאריכים ללא שנה שחוצים את גבולות השנה החדשה אינם חוקיים, ולכן טווח התאריכים מוצג כשני טווחי תאריכים סמוכים.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
הנחה על FreeNights
בדוגמה הבאה מקבלים הנחה של 50% על שני לילות לכל ארבעה לילות בטווח תאריכי ההזמנה שצוין. לנסיעה של 10 לילות, הנחה בסך 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, ההנחות ולילות השהייה הרלוונטיים יחולו באופן הבא.
- 1 בינואר 2022 (שהייה)
- 2 בינואר 2022 (שהייה)
- 2022-01-03
- 04.01.2022 (בהנחה)
- 5 בינואר 2022 (שהייה)
- 6 בינואר 2022 (שהייה)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
בחירה לפי דירוג
בדוגמה הבאה יש שתי הנחות, אחת ל-20% הנחה ואחת ל-15% הנחה, כי הדירוג שלה נמוך יותר מ-15%.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
הנחה יומית
בדוגמה הבאה אפשר להנחות שהייה של שני לילות על ידי החלת BestDailyDiscount
יחד עם Discount
.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="HotelID" action="overlay">
<Promotion id="general">
<BestDailyDiscount fixed_amount="20"/>
</Promotion>
<Promotion id="may">
<BestDailyDiscount fixed_amount="50"/>
<StayDates application="overlap">
<DateRange start="2023-05-01" end="2023-05-31"/>
</StayDates>
</Promotion>
<Promotion id="fiesta">
<Discount fixed_amount_per_night="5"/>
<Stacking type="any"/>
</Promotion>
</HotelPromotions>
</Promotions>
כדאי לחשוב על שהייה של שני לילות בין 30 באפריל 2023 ל-2 במאי 2023 לצורך החישוב, המערכת מוצאת קודם את השילוב של ההנחות היומיות הכי טובות שאפשר לקבל את ההנחה הכי עמוקה.
ללילה הראשון, המבצע ה'כללי' הוא הסכום היחיד שעומד בדרישות, עם הנחה קבועה של 20.
בלילה השני, במבצע "ייתכן" יש הנחה משמעותית יותר מההנחה "הכללית". לכן, כשבוחרים באפשרות "ייתכן", סכום ההנחה הקבוע הוא 50.
לאחר מכן, במבצע ה "פיאסטה" יש הנחה ל-5 ללילה או
10 בסך הכול. אפשר לשלב אותה עם השילוב של ההנחות היומיות הכי טובות, כי סוג הסידור ב-fiesta מוגדר כ-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
כוללת את הרכיבים והמאפיינים הבאים:
רכיב / @מאפיין | אירועים | סוג | תיאור |
---|---|---|---|
PromotionsResponse | 1 | Complex element | הרכיב הבסיסי (root) שמציין את ההצלחה או הבעיות של הודעת בקשה לקידומי מכירות שהתקבלה. |
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>