Travel Partner Prices API
تمنحك Travel Partner Prices API واجهة RESTful لإرسال أسعار الفنادق إلى Google.
الخدمة: travelpartnerprices.googleapis.com
للاتّصال بهذه الخدمة، ننصحك باستخدام مكتبات العميل التي تقدّمها Google. إذا كان تطبيقك يحتاج إلى استخدام مكتباتك الخاصة للاتصال بهذه الخدمة، يُرجى التواصل مع مدير الحساب الفني (TAM) للحصول على مستند الاكتشاف لهذه الخدمة.
نقطة نهاية الخدمة
نقطة نهاية الخدمة هي عنوان URL أساسي يحدِّد عنوان الشبكة لخدمة واجهة برمجة التطبيقات. قد تحتوي خدمة واحدة على نقاط نهاية متعددة للخدمة. تتضمّن هذه الخدمة الخدمة التالية: نقطة النهاية وجميع معرفات الموارد المنتظمة (URI) المدرجة ذات صلة بنقطة نهاية الخدمة هذه:
https://travelpartnerprices.googleapis.com
الطُرق | |
---|---|
ingestLosPropertyPrices |
POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices
يُرجى تحميل أسعار مدة الإقامة المقدَّمة لفندق محدّد. يتطلب رسالة أسعار مرمّزة بتنسيق 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، فسيتم تطبيق أي أسعار ترسلها بخلاف السعر الثلاثين انخفاض . يجب تمثيل أطوال الإقامة غير المتاحة
|
taxes[] | 30 | float | تمثّل هذه السمة العنصر الضريبي لأسعار مدة الإقامة.
تتوافق القيمة في الفهرس |
fees[] | 30 | float | مكوّن الرسوم في أسعار الإقامة حسب المدة
تتوافق القيمة في الفهرس |
مثال
الأسعار والضرائب استنادًا إلى LOS
يوضّح المثال التالي ضبط الحد الأدنى لمدة الإقامة على 2
لتاريخ تسجيل وصول واحد وعدم ضبط مدى التوفّر لتاريخ تسجيل وصول آخر.
إذا ضبطت startDate
من 1/9/2023 بدون endDate
، يعني ذلك أنّه
يتم تحديد الأسعار لتاريخ واحد فقط ويمكنك حذف
endDate
.
يتيح لك المصفوفة occupancyPrices
التي تم ضبطها على 2
إمكانية تحديد أسعار مختلفة.
لإشغالات مختلفة. لذلك، ما مِن أماكن شاغرة في الحدود المسموح بها في 04/09/2023
المتاحة في 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}
|