סקירה כללית
ה-API הזה מאפשר לציין הנחות אפשריות. מבין המבצעים שצוינו, Google מחילה את המבצע או את קבוצת המבצעים שעומדים בדרישות ומניבים את המחיר הנמוך ביותר. אם אתם מחפשים ממשק API שתומך בהתאמות שרירותיות של התעריף, שיכולות להגדיל או להקטין את המחיר כשהתנאים מתקיימים, כדאי לכם להשתמש ב-Rate Modifications API. לתשומת ליבכם: אם שני ממשקי ה-API נמצאים בשימוש, שינויי התעריפים חלים לפני קידומי המכירות.
בקשות
תחביר
התחביר של ההודעה Promotions
הוא:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
id="message_ID"
timestamp="timestamp">
<HotelPromotions hotel_id="HotelID" action="[overlay]">
<Promotion id="PromotionID" action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
</BookingDates>
<BookingWindow min="integer_or_duration" max="integer_or_duration"/>
<Ceiling amount_per_night="float"/>
<Floor amount_per_night="float"/>
<CheckinDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckoutDates>
<!-- Specify only one of percentage, percentage_of_base, fixed_amount,
fixed_amount_per_night, fixed_price, or fixed_price_per_night;
applied_nights is only used with percentage, fixed_amount_per_night,
and fixed_price_per_night. -->
<Discount percentage="float" percentage_of_base="float"
fixed_amount="float" fixed_amount_per_night="float"
fixed_price="float" fixed_price_per_night="float"
applied_nights="integer_1_to_99" rank="integer_1_to_99">
<!-- FreeNights may not be used in conjunction with attributes on Discount -->
<FreeNights stay_nights="integer" discount_nights="integer"
discount_percentage="float" night_selection="[cheapest|last]"
repeats="boolean"/>
</Discount>
<!-- Exactly one of Discount or BestDailyDiscount must be specified.
Specify only one of percentage, fixed_amount, or fixed_price. -->
<BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<InventoryCount min="integer" max="integer"/>
<LengthOfStay min="integer" max="integer"/>
<MembershipRateRule id="RateRuleID"/>
<MinimumAmount before_discount="integer"/>
<Occupancy min="integer" max="integer"/>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<Stacking type="[any|base|none|second]"/>
<StayDates application="[all|any|overlap]">
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</StayDates>
<UserCountries type="[include|exclude]">
<Country code="country_code"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
רכיבים ומאפיינים
הודעת המבצעים כוללת את הרכיבים והמאפיינים הבאים:
רכיב / @Attribute | מופעים | סוג | תיאור |
---|---|---|---|
Promotions | 1 | Complex element | רכיב הבסיס של הודעת קידום מכירות. |
Promotions / @partner | 1 | string | חשבון השותף של ההודעה הזו. ערך המחרוזת הזה הוא הערך של 'מפתח השותף' שמופיע ב
דף הגדרות החשבון ב-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 / @percentage_of_base | 0..1 | float | צריך לציין בדיוק אחד מהערכים הבאים: ערך עשרוני מ-0 עד 100 שמציין את אחוז ההנחה הבסיסית. בדומה ל- בניגוד ל- דוגמה:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | צריך לציין בדיוק אחד מהערכים הבאים: סכום קבוע שיש לחסר מסכום התעריפים ללילה של דוגמאות:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | צריך לציין בדיוק אחד מהערכים הבאים: הנחה קבועה שחלה על כל אחד מ- דוגמאות:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | צריך לציין בדיוק אחד מהערכים הבאים: אם מציינים אם דוגמאות:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | צריך לציין בדיוק אחד מהערכים הבאים: אם מציינים אם אם דוגמאות:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | יש להשתמש באפשרות הזו רק עם מספר הלילות שעליהם חלה ההנחה, החל מהלילה הזול ביותר. הערך צריך להיות מספר שלם בין 1 ל-99. אם לא יצוין מספר, ההנחה תחול על כל הלילות. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | מציין הנחה על לילות מסוימים במהלך השהייה, אם מתקיים משך השהייה המינימלי. אם משתמשים באלמנט הזה, אסור להשתמש במאפיינים של אלמנט ההורה Discount . |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | מספר הלילות הנדרשים כדי שההנחה תחול. כל הנחה חלה על פלח נפרד של לילות שהאורחים שוהים בהם. לדוגמה, עבור שהייה של 10 לילות שבה הערך של |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | מספר הלילות שזכו להנחה בכל מקטע של לילות השהייה. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | ההנחה שחלה על הלילות של ההנחה. אם הערך הזה הוא 50 , כל לילה שנבחר יהיה בהנחה של 50%. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | הערך חייב להיות cheapest או last . אם הערך של last הוא 1, הלילות בסוף מקטע הלילות של השהייה יקבלו הנחה. אם 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 | מציין תוכנית תעריפים. תוכנית תעריפים מוגדרת על ידי שילוב של חבילת שירות, תעריפים וזמינות, כפי שהם מוגדרים בהודעות Transaction (נתוני המלון), 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> בהודעה Transaction (Property Data), והפנייה אליו מתבצעת באמצעות הערך שלו בשדה <RoomID> . (הערך של <RoomID> מופיע גם במאפיין InvTypeCode בהודעות OTA_HotelRateAmountNotifRQ). |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | המזהה הייחודי של מלאי שטחי הפרסום (סוג החדר). הערך הזה ממופה ל-<RoomID> בהודעת Transaction (נתוני נכס).
מספר התווים המקסימלי הוא 50. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | קובע איך אפשר לשלב מבצעים. אם לא צוין, המערכת תתייחס ל-'type' בתור base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | אפשר להחיל כמה מבצעים על שיעור אחד, בהתאם להגדרה הזו:
מבין השילובים המותרים, מערכת Google Ads מחילה על התעריף את קבוצת המבצעים שמניבה את ההנחה הגדולה ביותר. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | מאגר של טווחי תאריכים אחד או יותר שקובע איך המבצע יחול, למשל כדי להתאים להנחות עונתיות. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | תיאור האופן שבו צריך להחיל את המבצע. הערכים החוקיים כוללים:
תמיד צריך לציין את המאפיין הזה.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | טווח תאריכים שבו מצוינים התאריכים שבהם המבצע יוחל. יש גם תמיכה בפורמט YearlessDate.
אם רוצים להגדיר את טווח הערכים של |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | תאריך ההתחלה (על סמך אזור הזמן של הנכס), כולל, של טווח התאריכים. התאריך הזה חייב להיות לפני התאריך end או זהה לו. אם לא מציינים את start , טווח התאריכים לא מוגבל מבחינת תאריך ההתחלה.
צריך לציין את הערך של |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | תאריך הסיום (לפי אזור הזמן של הנכס), כולל טווח התאריכים. התאריך הזה חייב להיות זהה לתאריך start או מאוחר ממנו. אם לא מציינים את הערך של end , טווח התאריכים לא מוגבל בפועל מתאריך start ואילך.
צריך לציין את הערך של |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | הימים בשבוע שמותר להציג בטווח התאריכים. אם לא יצוין טווח תאריכים, כל הימים יהיו מותרים בטווח התאריכים. כל תו במחרוזת מציין יום. לדוגמה, הערך 'MTWHF' מציין שאפשר להשתמש בימים חול בטווח התאריכים. התווים התקינים הם:
כל שילוב של תווים תקין. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | מאגר שבו מפורטים המיקומים (המדינות) של המשתמשים שעומדים בדרישות לקידום המכירות. אם תציינו את המדינות, רק משתמשים שעומדים בדרישות במדינות האלה יקבלו את התעריף המוזל. אם לא מציינים מדינות, המחיר המוזל יוצע לכל המשתמשים שעומדים בדרישות בכל מדינה. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | הסוג של מפרט UserCountries.
הערכים החוקיים הם אם השדה UserCountries אם הערך של UserCountries אם לא מגדירים את השדה UserCountries |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | הגדרת מדינה אחת שבה המשתמשים זכאים למבצע. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | קוד מדינה במאגר CLDR, כמו DE או FR . חשוב לזכור שבמדינות מסוימות, קוד המדינה ב-CLDR שונה מקוד המדינה בן שתי האותיות ב-ISO. בנוסף, אין תמיכה בקודים של אזורים מ-CLDR. |
דוגמאות
בכל נכס אפשר ליצור עד 500 מבצעים. כדי להסיר מבצעים מנכס, אפשר להיעזר בדוגמה 'מחיקת קידום מכירות אחד'.
הודעה בסיסית
בדוגמה הבאה מוצגת הודעת Promotions
בסיסית:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<BookingWindow min="7" max="330"/>
<CheckinDates>
<DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
</CheckoutDates>
<Devices>
<Device type="mobile"/>
<Device type="tablet"/>
</Devices>
<Discount percentage="20" applied_nights="2"/>
<LengthOfStay min="2" max="14"/>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<Stacking type="base"/>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
מצב מלאי
בדוגמה הבאה מוסבר איך ליצור הנחה אם יש מלאי עודף קרוב למועד ההגעה:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow max="7"/>
<Discount percentage="10"/>
<InventoryCount min="3"/>
</Promotion>
</HotelPromotions>
</Promotions>
מחיקת קידום מכירות אחד
בדוגמה הבאה מוסבר איך למחוק קידום מכירות אחד בנכס:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1" action="delete"/>
</HotelPromotions>
</Promotions>
מחיקת כל עדכוני המבצעים
בדוגמה הבאה מוסבר איך מוחקים את כל המבצעים בנכס:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>
שכבת-על של כל קידומי המכירות
בדוגמה הבאה מוסבר איך להוסיף שכבת-על של <HotelPromotions>
לנכס עם מבצע חדש אחד או יותר. כשהערך של action="overlay"
הוא 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" 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
לא יחול כי שוברי הפרסום האחרים מספקים הנחה טובה יותר. אם המחיר המקורי היה 400 ש"ח, המחיר המוזל יהיה 307.20 ש"ח.
<?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>
Booking Dates DateTime Bounds
בדוגמה הבאה מוצג מקרה שבו נעשה שימוש ברכיב BookingDates
עם המאפיינים start
ו-end
כסוגי DateTime. בהתאם למגבלה הזו, ההזמנה צריכה להתבצע בין השעות 06:30 ב-01 ביולי 2020 לבין השעה 18:45 ב-02 ביולי 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 בינואר, ללא קשר לשנת הצ'ק אין. טווחי תאריכים ללא שנה שעוברים את גבול השנה החדשה הם לא חוקיים, ולכן ה-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% על שני לילות לכל ארבעה לילות שהייה בטווח התאריכים שצוין להזמנה. במסלול נסיעה של 10 לילות, 4 לילות יקבלו הנחה של 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, הלילות שעומדים בדרישות וההנחות יחולו באופן הבא.
- 2022-01-01 (שהייה)
- 2022-01-02 (שהייה)
- 2022-01-03
- 4 בינואר 2022 (בהנחה)
- 2022-01-05 (שהייה)
- 2022-01-06 (שהייה)
<?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
בדוגמה הבאה מוצעות שתי הנחות, אחת של 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' גבוהה יותר מההנחה 'general'. לכן, כשבוחרים באפשרות 'may', סכום ההנחה הקבוע הוא 50.
לאחר מכן, במהלך השהייה, ההנחה של המבצע 'fiesta' תהיה 5$ ללילה, או 10$ בסך הכול. אפשר לצרף אותו לשילוב של ההנחות היומיות הטובות ביותר, כי הסוג של 'fiesta' מוגדר כ-any
. אם היא תוגדר לערך base
, המערכת תחול רק את השילוב של ההנחות היומיות הטובות ביותר או את ההנחה 'fiesta'. מידע נוסף זמין בתיאור של Stacking
.
בסך הכול, המחיר של השהייה מקבל הנחה בסכום קבוע של 20 + 50 + 10 = 80.
תשובות
תחביר
התחביר של ההודעה PromotionsResponse
הוא:
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code"
status="issue_type">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
רכיבים ומאפיינים
להודעה PromotionsResponse
יש את הרכיבים והמאפיינים הבאים:
רכיב / @Attribute | מופעים | סוג | תיאור |
---|---|---|---|
PromotionsResponse | 1 | Complex element | רכיב הבסיס שמציין את ההצלחה או הבעיות בהודעת בקשה שהתקבלה בנושא מבצעים. |
PromotionsResponse / @timestamp | 1 | DateTime | התאריך והשעה שבהם נוצרה ההודעה הזו. |
PromotionsResponse / @id | 1 | string | המזהה הייחודי מההודעה המשויכת בנושא מבצעים. |
PromotionsResponse / @partner | 1 | string | חשבון השותף של ההודעה הזו. |
PromotionsResponse / Success | 0..1 | Success | המשמעות היא שההודעה על מבצעים טופלה בהצלחה, ללא אזהרות, שגיאות או כשלים.
השדה |
PromotionsResponse / Issues | 0..1 | Issues | מאגר של בעיה אחת או יותר שנתקלו בהן במהלך עיבוד ההודעה על מבצעים.
השדה |
PromotionsResponse / Issues / Issue | 1..n | Issue | תיאור של אזהרה, שגיאה או כשל שנתקלו בהם במהלך עיבוד ההודעה של המבצעים. פרטים על הבעיות האלה מופיעים בקטע הודעות שגיאה לגבי סטטוס הפיד. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | המזהה של הבעיה. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | סוג הבעיה. הערכים החוקיים הם |
דוגמאות
הפעולה הצליחה
זוהי תגובה להודעה על מבצעים שעובדה בהצלחה.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
בעיות
התשובה הבאה היא לתשובה להודעת קידום מכירות שלא טופלה בגלל שגיאות.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</PromotionsResponse>