قیمت گذاری مدت اقامت (LoS).

Travel Partner Prices API

Travel Partner Prices API یک رابط RESTful برای ارسال قیمت ملک به Google در اختیار شما قرار می دهد.

خدمات: travelpartnerprices.googleapis.com

برای تماس با این سرویس، توصیه می کنیم از کتابخانه های سرویس گیرنده ارائه شده توسط Google استفاده کنید. اگر برنامه شما نیاز به استفاده از کتابخانه های خود برای تماس با این سرویس دارد، با مدیر حساب فنی (TAM) خود تماس بگیرید تا سند کشف این سرویس را دریافت کنید.

نقطه پایان خدمات

نقطه پایانی سرویس یک URL پایه است که آدرس شبکه یک سرویس API را مشخص می کند. یک سرویس ممکن است چندین نقطه پایانی سرویس داشته باشد. این سرویس دارای نقطه پایانی سرویس زیر است و همه URI های فهرست شده مربوط به این نقطه پایانی سرویس هستند:

https://travelpartnerprices.googleapis.com
روش ها
ingestLosPropertyPrices POST /v1/accounts/ account_id /properties/ property_id :ingestLosPropertyPrices

قیمت مدت اقامت ارائه شده را برای یک ملک مشخص بارگذاری کنید.

به پیام قیمت های LoS رمزگذاری شده JSON (به زیر مراجعه کنید) به عنوان متن پیام HTTP نیاز دارد.

account_id : این مقدار رشته، مقدار "Account ID" است که در صفحه تنظیمات حساب در Hotel Center فهرست شده است.

property_id : مقدار این عنصر باید رشته ای باشد که با شناسه فهرست در فید فهرست هتل شما مطابقت داشته باشد.

API Authentication

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 ​​Price به صورت رشته ای با فرمت RFC 3339 بیان می شود.

هر پیامی که با 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 PST در 15 ژانویه 2017 رمزگذاری می شود.

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 ProductPrices برای تمام تاریخ‌های ورود بین 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 شناسه منحصر به فرد اتاقی که این قیمت به آن اشاره دارد. از این شناسه برای مطابقت دادن داده‌های Room Bundle با آنچه در داده‌های اتاق ارسال کرده‌اید، استفاده کنید. برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید.
ratePlanId 0..1 string شناسه منحصربه‌فرد برای داده‌های بسته که این قیمت به آن اشاره دارد. از این شناسه برای مطابقت دادن داده‌های Room Bundle با آنچه در داده‌های بسته ارسال کرده‌اید استفاده کنید. برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید.
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 ارائه شده به صورت عادی پردازش می‌شوند و نرخ‌های باقی‌مانده تا 30 لوس در دسترس نیستند. اگر بیش از 30 عدد ارسال کنید، هر قیمتی که فراتر از نرخ 30 ارسال می‌کنید کاهش می‌یابد.

مدت اقامت غیرقابل دسترس باید با 0 نشان داده شود.

taxes[] 30 float جزء مالیاتی قیمت مدت اقامت.

مقدار در شاخص n مربوط به مدت اقامت n+1 است.

fees[] 30 float جزء هزینه قیمت های مدت اقامت.

مقدار در شاخص n مربوط به مدت اقامت n+1 است.

مثال

نرخ و مالیات بر اساس LOS

مثال زیر تنظیم حداقل مدت اقامت 2 را برای یک تاریخ ورود و تنظیم عدم دسترسی برای یک تاریخ ورود دیگر را نشان می دهد. اگر startDate از 9/1/2023 بدون endDate تنظیم کنید، به این معنی است که نرخ‌ها را فقط برای یک تاریخ مشخص می‌کنید و می‌توانید endDate حذف کنید.

آرایه occupancyPrices که روی 2 تنظیم شده است به شما امکان می دهد نرخ های متفاوتی را برای اشغال های مختلف تعیین کنید. بنابراین، هیچ جای خالی در 09/04/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} .