תמחור משך השהייה (LoS)

ממשק API של Travel Partner Prices

ה-Travel Partner Prices API מספק ממשק RESTful לשליחה מחירי הנכסים אל Google.

שירות: Travelpartnerprices.googleapis.com

כדי להתקשר לשירות הזה, מומלץ להשתמש בלקוח ש-Google מספקת ספריות. אם צריך להשתמש בספריות שלך כדי לקרוא לשירות הזה, עליך ליצור קשר עם מנהל חשבונות טכני (TAM) לקבלת מסמך Discovery לשירות הזה.

נקודת קצה (endpoint) של שירות

שירות נקודת הקצה היא כתובת URL בסיסית שמציינת את כתובת הרשת של שירות API. שירות אחד יכולות להיות כמה נקודות קצה (endpoint) של שירות. השירות הזה כולל את השירות הבא נקודת הקצה וכל מזהי ה-URI שמפורטים ביחס לנקודת הקצה הזו של השירות:

https://travelpartnerprices.googleapis.com
שיטות
ingestLosPropertyPrices POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices

יש להעלות את מחירי השהייה שצוינו לנכס שצוין.

נדרשת הודעת LoS עם קידוד לפי JSON (ראו בהמשך) בתור ה-HTTP גוף ההודעה.

account_id: ערך המחרוזת הזה הוא מספר חשבון הערך שרשום בדף הגדרות החשבון ב'מלון' מרכז.

property_id: הערך של הרכיב הזה חייב להיות מחרוזת שתואמת למזהה כרטיס המוצר בפיד של רשימת המלונות שלכם.

אימות API

ב-Travel Partner Prices API נעשה שימוש ב-OAuth 2.0 כדי לאמת את האפליקציה כדי לקבל גישה לממשקי ה-API.

אפשר לקבל הוראות מפורטות להגדרה בהגדרת OAuth 2.0. אלה ההגדרות להוראות עבור Travel Partner API. שימו לב ש-Travel Partner API ל-Travel Partner Prices API יש ערכים שונים. בהוראות ההגדרה האלה, עליך להחליף את "Travel Partner Prices API" בכל מקום שבו 'Travel Partner API' מתייחס ל-.

בקשות

תחביר

ההודעה LoS Prices מבוססת על התחביר הבא:

{
  "requestTime": YYYY-MM-DDTHH:mm:ss.SSSZ,
  "propertyPrices": {
    "arrivalDatePrices": [{
      "startDate": {
        "year": int
        "month": int
        "day": int
      }
      "endDate": {
        "year": int
        "month": int
        "day": int
      }
      "productPrices": [{
        "roomTypeId": "string"
        "ratePlanId": "string"
        "occupancyPrices": [{
          "adults": int
          "prices": [{
            "rateRuleId": "string"
            "currencyCode": "string"
            "rates": [night_1,night_2,...]
            "taxes": [night_1,night_2,...]
            "fees": [night_1,night_2,...]
          }]
        }]
      }]
    }]
  }
}

רכיבים מאפיינים

ההודעה 'מחירי משך השהייה' כוללת את הרכיבים והמאפיינים הבאים:

רכיב מופעים סוג תיאור
requestTime 1 string

הרגע בזמן שבו נשלחה ההודעה לגבי מחיר LoS, הבהיר בפורמט RFC 3339 String.

כל הודעה שנשלחה באמצעות requestTime ב-24 הימים האחרונים מתבצע עיבוד של השעות, ואלו שלא נמחקו.

ההודעות מעובדות לפי הסדר requestTime, ללא קשר לסדר שבו התקבלו. לדוגמה, עדכון מחיר עם requestTime של 2019-05-03T14:09:00Z שהתקבל אחרי הודעה לאותם מסלולי נסיעה עם requestTime של 2019-05-03T14:10:00Z נמחקים לטובת הודעה מאוחרת יותר עם חותמת זמן.

לפי הדרישות של RFC 3339, צריך לציין תאריכים ושעות מלאים בתור YYYY-MM-DDThh:mm:ss.SSZ חובה לבחור אזור זמן, צוין כהפרש חיובי או שלילי מ-hh:mm משעון UTC, או Z כקיצור של שעון UTC.

שניות חלקיות הן אופציונליות, וניתן לבטא אותן עד דיוק של ננו-שנייה. לדוגמה, הפונקציה 2017-01-15T01:30:15.01-08:00 מקודדת 15.01 שניות מעבר 01:30 ב-15 בינואר 2017 (PST).

propertyPrices 1 Object מחירי נכס. כל המחירים בטווח propertyPrices הזה יחולו על אותו נכס.

הרכיב הזה לא חוזר על עצמו. כדי לשלוח מחירים למספר נכסים: עליכם לשלוח מספר בקשות HTTP (לפחות בקשה אחת לכל נכס).

arrivalDayPrices[] 1..n Object מחירים לתאריך ההגעה. כל המחירים בטווח arrivalDayPrices הזה חלים על נכס ספציפי, אבל תאריכי הגעה שונים.
startDate 1 Object productPrices חל על כל תאריכי ההגעה בין startDate ל-endDate, כולל.

אם מנסים לציין רק תאריך הגעה אחד (ולא טווח), צריך להזין את תאריך ההגעה גם בstartDate וגם בendDate.

startDate.year 1 integer השנה של startDate. חייב להיות בין 1 ל-9999.
startDate.month 1 integer החודש בשנה. המספר צריך להיות בין 1 ל-12.
startDate.day 1 integer היום בחודש. התאריך חייב להיות בין 1 ל-31, והוא תקף לשנה ולחודש.
endDate 0..1 Object מחירי המוצרים חלים על כל תאריכי ההגעה בין startDate וגם endDate, כולל.

אם מנסים לציין רק תאריך הגעה אחד (ולא טווח), ניתן להשמיט את endDate.

endDate.year 1 integer השנה של endDate. חייב להיות בין 1 ל-9999.
endDate.month 1 integer החודש בשנה. המספר צריך להיות בין 1 ל-12.
endDate.day 1 integer היום בחודש. התאריך חייב להיות בין 1 ל-31, והוא תקף לשנה ולחודש.
productPrices[] 1..n Object מחירי מוצר. כל המחירים בטווח productPrices הזה חלות על נכס ספציפי, על שילוב של תאריך הגעה, אבל מוצרים.
roomTypeId 0..1 string המזהה הייחודי של החדר שאליו מתייחס המחיר. כדאי להשתמש המזהה הזה, שיתאים לנתונים של חבילת החדר לנתונים ששלחת בנתוני החדר. מידע נוסף זמין במאמר המטא-נתונים של חבילת החדר.
ratePlanId 0..1 string המזהה הייחודי של נתוני החבילה שאליהם מתייחס המחיר. כדאי להשתמש המזהה הזה כך שיתאים לנתונים של חבילת החדר לנתונים ששלחת בנתוני ה-package. מידע נוסף זמין במאמר המטא-נתונים של חבילת החדר.
occupancyPrices[] 1..n Object מחירים לחדרים פנויים. כל המחירים בטווח occupancyPrices הזה יחולו על נכס ספציפי, תאריך הגעה, שילוב מוצרים, אבל משתמשים שונים.
adults 1 integer המספר המקסימלי של אורחים שאפשר להזמין בכל חדר, כולל למבוגרים ולילדים. הערך הזה מוגדר לכל התעריפים בטווח השדה occupancyPrices התואם וחייב להיות חיובי מספר שלם בין 1 ל-99.

הערה: צריך ליצור קשר עם צוות התמיכה כדי לשלוח מספר תפוסה יותר מארבעה מבוגרים.

prices[] 1..n Object המחירים של משך השהייה. כל המחירים בתוך prices חלים על שילוב ספציפי של נכס, תאריך הגעה, מוצר ותפוסה.
rateRuleId 0..1 string בתעריפים בלעדיים: המזהה הזה תואם לתעריף להגדרה בקובץ 'הגדרת כלל דירוג'. מגבלת התווים לשדה הזה היא 40 תווים.
currencyCode 1 string קוד המטבע בן שלוש האותיות rates ו-taxes סופקו ב-. למשל, "USD" לדולר ארה"ב.
rates[] 30 float רכיב התעריף הבסיסי של מחירי משך השהייה.

אם צוין ערך תואם של taxes, השיעור הזה שאינו כולל את המס. המחיר הכולל הוא הסכום של המחירים הרלוונטיים וגם מס.

הערך באינדקס n תואם ל-n+1 משך השהייה.

עליכם לשלוח את קבוצת ה-LoS המלאה של 30 המחירים בכל פעם. אם שולחים פחות מ-30, כל מחירי ה-LoS שצוינו מעובדים בתור רגילה, והתעריפים הנותרים לא זמינים עד LoS 30. אם שולחים יותר מ-30,ולאחר מכן כל מחיר שנשלח מעבר למחיר ה-30 יהיה ירד .

צריך לייצג משך שהייה לא זמין באמצעות 0

taxes[] 30 float רכיב המס של מחירי משך השהייה.

הערך באינדקס n תואם ל-n+1 משך השהייה.

fees[] 30 float רכיב העמלה של מחירי משך השהייה.

הערך באינדקס n תואם ל-n+1 משך השהייה.

דוגמה

מחירים מיסים על בסיס LOS

בדוגמה הבאה מוצגת הגדרה של משך שהייה מינימלי של 2 לתאריך צ'ק אין אחד והגדרה של חוסר זמינות לתאריך צ'ק אין אחר. אם מגדירים את startDate מ-1/9/2023 בלי endDate, המשמעות היא אתם מציינים את התעריפים לתאריך אחד בלבד, ואפשר להשמיט את endDate.

המערך occupancyPrices שמוגדר לערך 2 מאפשר להגדיר קצבים שונים לתפוסים שונים. לכן, אין מקום פנוי במגבלות של 04/09/23 זמין בתאריך rates.

המערך taxes שמוצג מחושב כ-10% מהתעריף.

מערך ה-fees המוצג כרוך בעמלת ניקיון בסך 50 $לשהייה.

אם תאריך הצ'ק אין המלא לא זמין ‐9/3/2023, עליך לשלוח במפורש את התאריך, ולהשמיט את התאריך rates, taxes ו-productPrices אל מעידים על כך שאין זמינות עבור התאריך המבוקש.

{
  "requestTime": "2023-08-10T12:15:222",
  "propertyPrices": {
    "arrivalDatePrices": [
      {
        "startDate": {
          "year": 2023,
          "month": 9,
          "day": 1
        },
        "productPrices": [
          {
            "occupancyPrices": [
              {
                "adults": 2,
                "prices": [
                  {
                    "currencyCode": "USD",
                    "rates": [
                      0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "taxes": [
                      0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "fees": [
                      0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "startDate": {
          "year": 2023,
          "month": 9,
          "day": 3
        },
        "productPrices": [
          {
            "occupancyPrices": [
              {
                "adults": 2,
                "prices": [
                  {
                    "currencyCode": "USD",
                    "rates": [
                      0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "taxes": [
                      0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "fees": [
                      0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

גוף התשובה

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל נתונים במבנה הבא:

ייצוג JSON
        {
          "name": "string"
        }
        
שדות
name שם המשאב של ה-propertyPrices שהשתנה. כך מופיע הטופס:
accounts/{account}/properties/{property}