Travel Partner Prices API
توفّر لك واجهة برمجة التطبيقات Travel Partner Prices واجهة RESTful لإرسال أسعار الأماكن المتاحة للاستئجار إلى Google.
الخدمة: travelpartnerprices.googleapis.com
لطلب هذه الخدمة، ننصح باستخدام مكتبات العميل التي توفّرها Google. إذا كان تطبيقك يحتاج إلى استخدام مكتباتك الخاصة لطلب هذه الخدمة، يُرجى التواصل مع مدير حسابك الفني (TAM) للحصول على مستند الاكتشاف لهذه الخدمة.
نقطة نهاية الخدمة
نقطة نهاية الخدمة هي الجزء الأساسي من عنوان URL الذي يحدّد عنوان الشبكة لخدمة واجهة برمجة التطبيقات. قد يكون للخدمة الواحدة أكثر من نقطة نهاية واحدة. تحتوي هذه الخدمة على نقطة النهاية التالية، وجميع عناوين URI المُدرَجة تكون نسبيّة لهذه النقطة:
https://travelpartnerprices.googleapis.com
| الطُرق | |
|---|---|
ingestLosPropertyPrices |
POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices
حمِّل أسعار الإقامة لمدة محددة للمكان المحدّد. يتطلّب رسالة أسعار LoS مشفّرة بتنسيق JSON (راجِع أدناه) كنص رسالة HTTP.
|
مصادقة واجهة برمجة التطبيقات
تستخدم واجهة برمجة التطبيقات Travel Partner Prices API بروتوكول OAuth 2.0 لمصادقة تطبيقك حتى تتمكّن من الوصول إلى واجهات برمجة التطبيقات.
اتّبِع تعليمات إعداد OAUTH 2.0 للحصول على إذن باستخدام واجهة برمجة التطبيقات Travel Partner Prices API.
عند إنشاء مشروع جديد لواجهة Travel Partners Prices API، عليك تفعيل إمكانية الوصول إلى مشروعك الجديد على Google Cloud Console، وهو ما يشبه التعليمات المقدَّمة في Travel Partner API.
يُرجى الرجوع إلى الخطوات المقدَّمة في Travel Partner API واستبدال جميع عبارات "Travel Partner API" بعبارة "Travel Partner Prices API" لتفعيل مشروعك.
نطاق واجهة برمجة التطبيقات Travel Partner Prices API هو:
"https://travelpartnerprices.googleapis.com"
مسار التحميل لواجهة برمجة تطبيقات Travel Partner Prices API هو:
"/travel/lodging/uploads/accounts/<account_id>/property_data"
الطلبات
البنية
تستخدم الرسالة 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 | تمثّل هذه السمة الوقت الذي تم فيه إرسال رسالة "سعر مدة الإقامة"، ويتم التعبير عنها كسلسلة منسّقة وفق RFC 3339. تتم معالجة أي رسالة تم إرسالها باستخدام تتم معالجة الرسائل بترتيب يتطلّب معيار RFC 3339 تحديد التاريخ والوقت بشكل كامل على النحو التالي: الثواني الكسرية اختيارية، ويمكن التعبير عنها بدقة تصل إلى جزء من مليار من الثانية. على سبيل المثال،
ترمّز |
| propertyPrices | 1 | Object | أسعار مكان للاستئجار تنطبق جميع الأسعار ضمن هذا propertyPrices
على الموقع نفسه.
لا يتم تكرار هذا العنصر. لإرسال أسعار لعدة أماكن متاحة للاستئجار، عليك تقديم طلبات HTTP متعددة (طلب واحد على الأقل لكل مكان). |
| arrivalDayPrices[] | 1..n | Object | أسعار تاريخ الوصول تنطبق جميع الأسعار الواردة في arrivalDayPrices
على مكان إقامة محدّد، ولكن مع تواريخ وصول مختلفة. |
| startDate | 1 | Object | يتم تطبيق productPrices على جميع تواريخ الوصول
بين 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.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 | المعرّف الفريد للغرفة التي يشير إليها هذا السعر. استخدِم هذا المعرّف لمطابقة بيانات "حزمة الغرفة" مع البيانات التي أرسلتها في roomdata. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف. |
| ratePlanId | 0..1 | string | المعرّف الفريد لبيانات الحزمة التي يشير إليها هذا السعر. استخدِم رقم التعريف هذا لمطابقة بيانات "حزمة الغرف" مع البيانات التي أرسلتها في packagedata. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف. |
| 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 | مكوّن السعر الأساسي لأسعار مدة الإقامة
في حال توفير قيمة تمثّل القيمة في الفهرس يجب إرسال مجموعة كاملة من الأسعار لمدة الإقامة (LoS) تبلغ 30 سعرًا في المرة الواحدة. إذا أرسلت أقل من 30 سعرًا، سيتم التعامل مع جميع أسعار مدة الإقامة المقدَّمة على أنّها عادية، ولن تتوفّر الأسعار المتبقية حتى مدة الإقامة 30. إذا أرسلت أكثر من 30 سعرًا، سيتم تجاهل أي أسعار ترسلها بعد السعر رقم 30 . يجب تمثيل مدة الإقامة غير المتاحة باستخدام |
| taxes[] | 30 | float | تمثّل هذه السمة جزء الضريبة من أسعار مدة الإقامة.
تمثّل القيمة في الفهرس |
| fees[] | 30 | float | تمثّل هذه السمة جزء الرسوم من أسعار مدة الإقامة.
تمثّل القيمة في الفهرس |
مثال
الأسعار والضرائب استنادًا إلى مدة الإقامة
يعرض المثال التالي ضبط الحد الأدنى لمدة الإقامة على ليلتَين لتاريخ تسجيل وصول واحد وعدم ضبط أي توفّر لتاريخ تسجيل وصول آخر.
إذا ضبطت startDate من 1/9/2023 بدون endDate، يعني ذلك أنّك تحدّد الأسعار ليوم واحد فقط ويمكنك حذف endDate.
تتيح لك مصفوفة occupancyPrices التي تم ضبطها على 2 تحديد أسعار مختلفة
لحالات إشغال مختلفة. لذلك، لا يحدّ عدم توفّر غرف شاغرة في 04/09/23 من عدد الغرف المتاحة rates.
يتم احتساب مصفوفة taxes المعروضة على أنّها% 10 من السعر.
تفرض مصفوفة fees المعروضة رسوم تنظيف بقيمة 50 دولار أمريكي لكل إقامة.
إذا كان تاريخ تسجيل الوصول بأكمله غير متاح، مثلاً 3/9/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}.
|