قبل المتابعة إلى هذا القسم، يُرجى التأكّد من أنظمة التنقّل الصغيرة المتاحة التي تريد إنشاء الخلاصة لها، وذلك إذا لم يسبق لك إجراء ذلك.
في الأقسام التالية، يتّبع كل عنوان التنسيق التالي:
Required|Optional|Conditionally required: Feed name (System supported)
. تتوافق هذه الميزة مع الأنظمة التالية:
- النظام المثبَّت على قاعدة الإرساء
- نظام غير مزوّد بمحطات إرساء
- النظام المستند إلى محطة شحن والنظام غير المستند إلى محطة شحن
لإجراء عملية دمج ناجحة مع Google، قدِّم فقط الملفات اللازمة للنظام الذي تصفه خلاصتك، وحدِّد الحقول المطلوبة المضمّنة في الأقسام ذات الصلة. بالنسبة إلى الحقول المطلوبة بشكل مشروط، يُرجى الرجوع إلى وصف الحقل للحصول على إرشادات. يمكنك أيضًا تحديد حقول اختيارية تضيف معلومات وتوفّر تجربة أفضل للمستخدم.
عنوان العمود المطلوب لخلاصات وسائل النقل الصغيرة
خلاصات التنقّل الصغير هي خلاصات تحتوي على بيانات منظَّمة خاصة بالتنقّل الصغير مع محطات أو بدون محطات، كما هو موضّح في هذه المقالة.
يجب أن تحدّد جميع الخلاصات دائمًا الحقول المضمّنة في الجدول التالي على المستوى الأعلى من عنصر JSON، والمعروفة بشكل جماعي باسم عنوان GBFS المشترك.
اسم الحقل | النوع | المتطلبات | الوصف |
---|---|---|---|
last_updated |
الطابع الزمني | مطلوب | طابع زمني بتنسيق POSIX يحدّد عدد الثواني منذ 1 يناير 1970 الساعة 00:00:00 بالتوقيت العالمي المنسَّق
يجب ضبطها على آخر مرة تم فيها تعديل البيانات في الخلاصة. |
ttl |
عدد صحيح غير سالب | مطلوب | عدد صحيح غير سالب يمثّل عدد الثواني المتبقية حتى يحين وقت تعديل الخلاصة.
إذا كان يجب تعديل البيانات بمعدّل ثابت، اضبط هذه القيمة على |
data |
JSON | مطلوب | ملف JSON يحتوي على حقول البيانات الخاصة بالخلاصة الفردية |
على سبيل المثال، قد تكون خلاصة free_bike_status.json
المجمّعة التي تحدّد عنوان GBFS المشترك كما يلي:
{
"ttl": 30,
"last_updated": 1576123774,
"data": {
"bikes": [ ... ] // GBFS free bike status objects.
}
}
مطلوب: system_information.json (نظام مزوّد بقاعدة إرساء ونظام غير مزوّد بقاعدة إرساء)
يُرجى الرجوع إلى مواصفات GBFS حسب الحاجة.
تقدّم هذه الخلاصة تفاصيل بشأن مشغّل النظام.
اسم الحقل | النوع | المتطلبات | الوصف |
---|---|---|---|
system_id |
رقم التعريف | مطلوب | تمثّل هذه السمة معرّفًا فريدًا عالميًا لنظام مشاركة المركبات. ومن المفترض أن تظل هذه القيمة ثابتة طوال فترة استخدام النظام. يجب أن يكون لكل نظام أو منطقة جغرافية مميزة يتم فيها تشغيل المركبات رقم تعريف نظام خاص بها. يجب أن تكون معرّفات الأنظمة قابلة للتمييز على أنّها تنتمي إلى نظام معيّن بدلاً من السلاسل العشوائية، مثل bcycle_austin أو biketown_pdx. |
name |
سلسلة | مطلوب | اسم النظام الذي يظهر للعملاء |
rental_apps |
عنصر | مطلوب | كائن JSON يحتوي على معلومات تطبيق التأجير لنظامَي التشغيل Android وiOS في الحقول الخاصة بكل منهما. |
rental_apps.android |
عنصر | مطلوب بشكل مشروط |
يحتوي على معلومات حول تنزيل تطبيقات التأجير واكتشاف التطبيقات على نظام التشغيل Android في الحقلَين store_uri وdiscovery_uri . يكون هذا الحقل مطلوبًا إذا كان موفّر النظام لديه تطبيق إيجار على Android.
|
rental_apps.android.store_uri |
معرّف الموارد المنتظم (URI) | مطلوب | معرّف الموارد المنتظم (URI) الذي يمكن تنزيل تطبيق Android الخاص بالاستئجار منه ويكون هذا عادةً معرّف موارد موحّد (URI) لمتجر تطبيقات، مثل Google Play. إذا كان معرّف الموارد المنتظم (URI) يشير إلى متجر تطبيقات، مثل Google Play، ننصح بأن يتّبع معرّف الموارد المنتظم أفضل الممارسات المتعلّقة بنظام التشغيل Android حتى يتمكّن تطبيق المشاهدة من فتح معرّف الموارد المنتظم مباشرةً في تطبيق متجر التطبيقات الأصلي بدلاً من موقع إلكتروني. |
rental_apps.android.discovery_uri |
معرّف الموارد المنتظم (URI) | مطلوب | معرّف الموارد المنتظم (URI) الذي يتضمّن النموذج your_custom_scheme://your/path/here .
يمكن أن يستخدم PackageManager.queryIntentActivities() معرّف الموارد المنتظم (URI) PackageManager.queryIntentActivities() لتحديد ما إذا كان تطبيق Android الخاص بالاستئجار مثبَّتًا على الجهاز.
|
rental_apps.ios |
عنصر | مطلوب بشكل مشروط | يحتوي على معلومات حول تنزيل تطبيقات التأجير واكتشاف التطبيقات على نظام التشغيل iOS في الحقلَين store_uri وdiscovery_uri . هذا الحقل مطلوب إذا كان لدى موفّر النظام تطبيق إيجار على iOS.
|
rental_apps.ios.store_uri |
معرّف الموارد المنتظم (URI) | مطلوب | معرّف الموارد المنتظم (URI) الذي يمكن تنزيل تطبيق تأجير الأجهزة على iOS منه ويكون ذلك عادةً معرّف موارد موحّد (URI) يؤدي إلى أحد متاجر التطبيقات، مثل Apple App Store. إذا كان معرّف الموارد المنتظم يشير إلى متجر تطبيقات، مثل Apple App Store، ننصح بأن يتّبع معرّف الموارد المنتظم أفضل الممارسات المتعلّقة بنظام التشغيل iOS حتى يتمكّن تطبيق المشاهدة من فتح معرّف الموارد المنتظم مباشرةً في تطبيق متجر التطبيقات الأصلي بدلاً من موقع إلكتروني. |
rental_apps.ios.discovery_uri |
معرّف الموارد المنتظم (URI) | مطلوب | معرّف الموارد المنتظم (URI) الذي يتضمّن النموذج your_custom_scheme:// . يمكن أن تستخدم UIApplication canOpenURL: معرّف الموارد الموحّد (URI) لمعرفة ما إذا كان تطبيق iOS الخاص بخدمة التأجير مثبّتًا على الجهاز.
|
مطلوب: free_bike_status.json (نظام غير مزوّد بمحطات)
يُرجى الرجوع إلى مواصفات GBFS حسب الحاجة.
تحدّد هذه الخلاصة المواقع الجغرافية وسمات المركبات المستقلة المتاحة. لأسباب تتعلّق بالخصوصية، يجب عدم عرض المركبات التي يتم استئجارها حاليًا في هذه الخلاصة.
اسم الحقل | النوع | المتطلبات | الوصف |
---|---|---|---|
bikes |
مصفوفة | مطلوب | مصفوفة من الدراجات المتوقفة والمتاحة حاليًا، حيث تكون كل دراجة عبارة عن كائن. |
bikes[].bike_id |
رقم التعريف | مطلوب | معرّف الدراجة
لحماية الخصوصية، يمكن تغيير المعرّف إلى سلسلة عشوائية بعد كل رحلة. |
bikes[].lat |
خط العرض | مطلوب | خط عرض الدراجة بنظام WGS 84، بتنسيق الدرجات العشرية |
bikes[].lon |
خط الطول | مطلوب | تمثّل هذه السمة خط طول الدراجة بنظام WGS 84، بتنسيق الدرجات العشرية. |
bikes[].is_reserved |
منطقي | مطلوب | تُستخدَم لتحديد ما إذا كانت الدراجة محجوزة حاليًا، على النحو التالي:
|
bikes[].is_disabled |
منطقي | مطلوب | تحديد ما إذا كانت الدراجة متوقفة عن العمل أو معطّلة حاليًا، كما يلي:
|
bikes[].rental_uris |
عنصر | مطلوب | عنصر JSON يحتوي على معرّفات الموارد المنتظمة (URI) الخاصة بالاستئجار على Android وiOS والويب في الحقول الخاصة بكل منها. |
bikes[].rental_uris.android |
معرّف الموارد المنتظم (URI) | مطلوب بشكل مشروط | معرّف URI يمكن تمريره إلى تطبيق Android باستخدام
android.intent.action.VIEW Android intent لدعم
الروابط لصفحات في التطبيق على Android. يجب أن يكون rental_uris المقدَّم
رابطًا لتطبيق Android حتى لا يحتاج تطبيق العرض إلى إدارة عملية إعادة توجيه المستخدم إلى متجر التطبيقات يدويًا في حال لم يكن تطبيق مقدّم المحتوى مثبّتًا على جهاز المستخدم.
يجب أن يكون معرّف الموارد الموحّد هذا رابطًا لصفحة معيّنة خاصة بالدراجة، وليس صفحة عامة خاصة بخدمة تأجير الدراجات تتضمّن معلومات عن أكثر من دراجة واحدة. يجب أن ينقل الرابط لصفحة في التطبيق المستخدم مباشرةً إلى الدراجة بدون أي طلبات أو صفحات إعلانية بينية أو عمليات تسجيل دخول. تأكَّد من أنّ المستخدمين يمكنهم رؤية الدراجة حتى إذا لم يفتحوا التطبيق من قبل. ليس من الضروري أن تتضمّن معرّفات الموارد الموحّدة (URI) السمة هذا الحقل مطلوب إذا كان الشريك لديه تطبيق إيجار على Android. مثال على Android App Links:
|
bikes[].rental_uris.ios |
معرّف الموارد المنتظم (URI) | مطلوب بشكل مشروط | عنوان URI يمكن استخدامه على أجهزة iOS لتشغيل تطبيق استئجار الدراجة
لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى مقالة Apple حول
مخططات عناوين URL المخصّصة في نظام التشغيل iOS.
يجب أن يكون rental_uris المقدَّم
iOS Universal Links حتى لا يحتاج تطبيق المشاهدة إلى إدارة عملية إعادة توجيه المستخدم إلى متجر التطبيقات يدويًا في حال لم يكن تطبيق مقدّم المحتوى مثبّتًا على جهاز المستخدم.
يجب أن يكون معرّف الموارد الموحّد هذا رابطًا لصفحة معيّنة خاصة بالدراجة، وليس صفحة عامة خاصة بخدمة تأجير الدراجات تتضمّن معلومات عن أكثر من دراجة واحدة. يجب أن ينقل الرابط لصفحة في التطبيق المستخدم مباشرةً إلى الدراجة بدون أي طلبات أو صفحات إعلانية بينية أو عمليات تسجيل دخول. تأكَّد من أنّ المستخدمين يمكنهم رؤية الدراجة حتى إذا لم يفتحوا التطبيق من قبل. ليس من الضروري أن تتضمّن معرّفات الموارد المنتظمة (URI) السمة bike_id للدراجة، طالما أنّ الشريك لديه وسائل أخرى لتحديد الدراجة المعنية. على سبيل المثال، يمكن لتطبيق تأجير الدراجات استخدام معرّفات أخرى ضمن معرّف الموارد المنتظم (URI) لتحديد الدراجة بشكل فريد. هذا الحقل مطلوب إذا كان لدى الشريك تطبيق إيجار على iOS. مثال على الروابط العامة في iOS:
|
bikes[].rental_uris.web |
عنوان URL | اختياري | عنوان URL يمكن أن يستخدمه متصفّح الويب لعرض المزيد من المعلومات حول استئجار مركبة في هذا الموقع. يجب أن يكون عنوان URL هذا رابطًا لصفحة معيّنة خاصًا بالدراجة الفردية، وليس صفحة عامة خاصة بالاستئجار تتضمّن معلومات عن أكثر من دراجة واحدة. يجب أن ينقل الرابط لصفحة في التطبيق المستخدم مباشرةً إلى الدراجة بدون أي طلبات أو صفحات إعلانية بينية أو عمليات تسجيل دخول. تأكَّد من أنّ المستخدمين يمكنهم رؤية الدراجة حتى إذا لم يفتحوا التطبيق من قبل. ليس من الضروري أن تتضمّن عناوين URL السلسلة إذا لم يتم ضبط هذا الحقل، يعني ذلك أنّ الروابط لصفحات في التطبيق غير متاحة لمتصفّح الويب. مثال للقيمة:
|
bikes[].vehicle_type_id |
رقم التعريف | مطلوب | تمثّل هذه السمة vehicle_type_id للمركبة كما هو موضّح في قسم vehicle_types.json .
|
bikes[].pricing_plan_id |
رقم التعريف | مطلوب | معرّف خطة الأسعار التي يتم تطبيقها عند استئجار هذا النوع من المركبات كما هو موضّح في القسم system_pricing_plans.json .
|
bikes[].current_range_meters |
عدد عشري غير سالب | مطلوب بشكل مشروط | هذا الحقل مطلوب إذا كان تعريف vehicle_type الذي يتوافق مع المركبة يتضمّن محركًا.
يتم ضبطها على أبعد مسافة يمكن أن تقطعها المركبة بالمتر بدون الحاجة إلى إعادة الشحن أو التزوّد بالوقود، وذلك حسب مستوى الشحن أو الوقود الحالي في المركبة. |
bikes[].last_reported |
الطابع الزمني | اختياري | يتم ضبطها على آخر مرة أبلغت فيها المركبة مشغِّلها بحالتها. |
في ما يلي مثال على free_bike_status.json
:
"bikes": [{
"bike_id": "xyz123",
"lat": 12.34,
"lon": 56.78,
"is_reserved": true,
"is_disabled": false,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "scooter_electric",
"pricing_plan_id": "sydneyPlan1",
"current_range_meters": 4500,
"last_reported": 1434054678
},
{
"bike_id": "abc123",
"lat": 1.34,
"lon": 146.78,
"is_reserved": false,
"is_disabled": true,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "bike_manual",
"pricing_plan_id": "sydneyPlan1",
"last_reported": 1434054241
}
]
مطلوب: vehicle_types.json (نظام ثابت المواقف ومتغيّر المواقف)
يُرجى الرجوع إلى مواصفات GBFS حسب الحاجة.
تحدّد هذه الخلاصة تفاصيل أنواع المركبات الفردية، كما هو موضّح في القسم free_bike_status.json
.
اسم الحقل | النوع | المتطلبات | الوصف |
---|---|---|---|
vehicle_types |
مصفوفة | مطلوب | مصفوفة من العناصر، يحدّد كل عنصر نوعًا مميزًا من المركبات في قائمة أعمال مقدّم الخدمة. يمكن أن يكون هناك عنصر واحد فقط لنوع مركبة معيّن. |
vehicle_types[].vehicle_type_id |
رقم التعريف | مطلوب | معرّف فريد لنوع مركبة معيّن |
vehicle_types[].form_factor |
Enum | مطلوب | تعداد يمثّل شكل المركبة العام، من القائمة التالية للقيم الصالحة حاليًا:
|
vehicle_types[].propulsion_type |
Enum | مطلوب | تعداد يمثّل نوع الدفع الأساسي للمركبة، من قائمة القيم الصالحة حاليًا التالية:
|
vehicle_types[].max_range_meters |
عدد عشري غير سالب | مطلوب بشكل مشروط | إذا لم يتم ضبط propulsion_type على human ،
يعني ذلك أنّ المركبة مزوّدة بمحرّك، وبالتالي يكون هذا الحقل مطلوبًا.
يجب ضبطها على أبعد مسافة بالأمتار يمكن أن تقطعها المركبة بدون الحاجة إلى إعادة الشحن أو التزوّد بالوقود، وذلك عندما تكون المركبة مزودة بالوقود أو مشحونة بالكامل. |
في ما يلي مثال على vehicle_types.json
:
"vehicle_types": [
{
"vehicle_type_id": "bike_manual",
"form_factor": "bicycle",
"propulsion_type": "human"
},
{
"vehicle_type_id": "scooter_electric",
"form_factor": "scooter",
"propulsion_type": "electric",
"max_range_meters": 10000
}
]
مطلوب: system_pricing_plans.json (نظام غير مزوّد بمحطة)
يُرجى الرجوع إلى مواصفات GBFS حسب الحاجة.
تحدّد هذه الخلاصة خطط الأسعار للمركبات المستقلة. نطلب من مقدّمي الخدمات عرض معلومات الأسعار للمركبات المستقلة.
اسم الحقل | النوع | المتطلبات | الوصف |
---|---|---|---|
plans |
مصفوفة | مطلوب | مصفوفة من العناصر يحدّد كل عنصر فيها خطة أسعار معيّنة. |
plans[].plan_id |
رقم التعريف | مطلوب | تمثّل هذه السمة معرّفًا فريدًا لخطة الأسعار التي يقدّمها الموفّر. |
plans[].url |
عنوان URL | اختياري | عنوان URL الذي يوجّه المستخدمين النهائيين إلى مزيد من المعلومات حول خطة الأسعار. |
plans[].currency |
سلسلة | مطلوب | تمثّل هذه السمة معيار ISO 4217 لخطة الأسعار. |
plans[].price |
عدد عشري غير سالب | مطلوب |
يجب تحديد خطة الأسعار إما كخطة أسعار غير مصنّفة أو كخطة أسعار مصنّفة:
|
plans[].per_km_pricing |
مصفوفة | مطلوب بشكل مشروط |
يكون هذا الحقل مطلوبًا إذا كان السعر مرتبطًا بالمسافة المقطوعة بالكيلومترات. مصفوفة من العناصر يحدّد كل عنصر منها جزءًا مقسّمًا حسب المسافة. يجب أن تكون قيمة لتحديد السعر الإجمالي للخطة المحدّدة، أضِف قيمة في حال عدم ضبط هذا الحقل، لن تكون هناك أسعار متغيرة استنادًا إلى المسافة، وبالتالي لن يتم تضمين أي منها كجزء من السعر الإجمالي. |
plans[].per_km_pricing[].start |
عدد صحيح غير سالب | مطلوب |
عدد الكيلومترات التي يبدأ احتساب رسوم الشريحة عندها.
يتم ضبط هذا الحقل على
القيمة الشاملة
التي تبدأ نطاق الشريحة. وبالتالي، عند استهلاك عدد الكيلومترات المحدّد، يتم تحصيل رسوم rate مرة واحدة.
|
plans[].per_km_pricing[].rate |
عدد عائم | مطلوب | السعر الذي يتم تحصيله مقابل كل interval ، والذي يبدأ من start الشاملة في المقطع. إذا تم ضبط هذا الحقل على رقم سالب، سيحصل المسافر على خصم.
|
plans[].per_km_pricing[].interval |
عدد صحيح غير سالب | مطلوب |
الفاصل الزمني بالكيلومترات الذي يتم عنده إعادة تطبيق تتم إعادة تطبيق إذا تم ضبط إذا تم ضبط هذا الحقل على |
plans[].per_km_pricing[].end |
عدد صحيح غير سالب | اختياري |
عدد الكيلومترات التي لم يعُد عندها يتم تطبيق إذا لم يتم ضبط هذا الحقل أو كان فارغًا، سيتم تحصيل رسوم |
plans[].per_min_pricing |
مصفوفة | مطلوب بشكل مشروط |
إذا كان السعر مرتبطًا بالوقت المنقضي، ويتم عرضه بالدقائق، يكون هذا الحقل مطلوبًا. مصفوفة من العناصر يحدّد كل عنصر منها شريحة مقسّمة حسب الوقت. يجب أن تكون قيمة لتحديد السعر الإجمالي للخطة المحدّدة، أضِف قيمة إذا لم يتم ضبط هذا الحقل، لن تكون هناك أسعار متغيرة استنادًا إلى الوقت، وبالتالي لن يتم تضمين أي أسعار كجزء من السعر الإجمالي. |
plans[].per_min_pricing[].start |
عدد عائم | مطلوب |
عدد الدقائق التي يبدأ احتساب رسوم الشريحة عندها.
يتم ضبط هذا الحقل على
القيمة الشاملة
التي تبدأ نطاق الشريحة. وبالتالي، بعد انقضاء عدد الدقائق المحدّد، سيتم تحصيل رسوم rate مرة واحدة.
|
plans[].per_min_pricing[].rate |
عدد عائم | مطلوب | يشير هذا الرقم إلى السعر الذي يتم تحصيله مقابل كل interval . يبدأ المعدّل
عند start الشاملة من المقطع. إذا تم ضبط هذا الحقل على رقم سالب، سيحصل المسافر على خصم.
|
plans[].per_min_pricing[].interval |
عدد صحيح غير سالب | مطلوب |
الفاصل الزمني بالدقائق الذي تتم فيه إعادة تطبيق يتم إعادة تطبيق إذا تم ضبط إذا تم ضبط هذا الحقل على |
plans[].per_min_pricing[].end |
عدد صحيح غير سالب | اختياري |
عدد الدقائق التي لم يعُد عندها يتم تطبيق في حال عدم ضبط هذا الحقل أو تركه فارغًا، سيتم تحصيل رسوم |
أمثلة على ملف system_pricing_plans.json
يقدّم هذا القسم system_pricing_plans.json
عيّنات تعليمات برمجية مفيدة. يتم أيضًا تقديم التفاصيل والنتائج ذات الصلة بكل مثال.
المثال 1 لملف system_pricing_plans.json
يعرض نموذج رمز خطة الأسعار التالي الرسوم استنادًا إلى مدة الرحلة للفواصل الزمنية التالية:
- [0,1): $2 USD
- إذا كانت الرحلة أقل من دقيقة، يدفع المستخدم دولارَين أمريكيَّين.
- مثال: رحلة مدتها 59 ثانية
- [1,2): 3 دولار أمريكي
- إذا كانت مدة الرحلة دقيقة واحدة أو أكثر ولكن أقل من دقيقتين، يدفع المستخدم 2 دولار أمريكي + 1 دولار أمريكي = 3 دولارات أمريكية.
- أمثلة: رحلة لمدة دقيقة واحدة، رحلة لمدة دقيقة واحدة و45 ثانية
- x عدد الدقائق التي يكون فيها x أكبر من أو يساوي 2:
$3 + (($2 + $1) * (x - 2 + 1))
USD
- إذا كانت مدة الرحلة دقيقتَين أو أكثر، يدفع المستخدم 3 دولار أمريكي مقابل جزء الرحلة الذي تقل مدته عن دقيقتَين، و (1 دولار أمريكي [متابعة من الإدخال الأول في القائمة
per_min_pricing
] + 2 دولار أمريكي [الإدخال الثاني في القائمةper_min_pricing
]) مقابل كل دقيقة بعد دقيقتَين وضمنهما. - أمثلة:
- تكلفة الرحلة التي تستغرق دقيقتَين هي 3 دولار أمريكي + (2 دولار أمريكي + 1 دولار أمريكي) = 6 دولار أمريكي
- تكلفة الرحلة التي تستغرق دقيقتَين و30 ثانية: 3 دولار أمريكي + (2 دولار أمريكي + 1 دولار أمريكي) = 6 دولار أمريكي
- تكلفة الرحلة التي تستغرق 3 دقائق هي 3 دولارات أمريكية + (2 دولار أمريكي + 1 دولار أمريكي) * 2 = 9 دولارات أمريكية
- تكلفة رحلة مدتها 10 دقائق: 3 دولار أمريكي + (2 دولار أمريكي + 1 دولار أمريكي) * 9 = 30 دولار أمريكي
- إذا كانت مدة الرحلة دقيقتَين أو أكثر، يدفع المستخدم 3 دولار أمريكي مقابل جزء الرحلة الذي تقل مدته عن دقيقتَين، و (1 دولار أمريكي [متابعة من الإدخال الأول في القائمة
{
"plans": {
"plan_id": "plan1",
"currency": "USD",
"price": 2,
"per_min_pricing": [
{
"interval": 1,
"rate": 1,
"start": 1
},
{
"interval": 1,
"rate": 2,
"start": 2
}
],
}
}
المثال 2 على ملف system_pricing_plans.json
في هذا المثال، نعرض نموذج رمز لخطة أسعار يتم تحصيل رسومها بمعدل الدقائق والكيلومترات:
- على وجه التحديد، يتم تحصيل 0.25 دولار كندي لكل كيلومتر و0.50 دولار كندي لكل دقيقة من المستخدم النهائي.
- يحدث كلا المعدّلين في الوقت نفسه ولا يعتمد أحدهما على الآخر.
- وبالتالي، تبلغ تكلفة رحلة بطول كيلومتر واحد تستغرق 10 دقائق 9 دولار كندي، ويمكن تقسيم التكلفة على النحو التالي:
- 3 دولار أمريكي، السعر الأساسي
- 0.25 دولار أمريكي × 2، يتم تحصيلها مرة واحدة في بداية الرحلة ومرة واحدة عند بلوغ مسافة كيلومتر واحد.
- 0.5 دولار أمريكي * 11، يتم تحصيل الرسوم مرة واحدة في بداية كل دقيقة. تبدأ الرسوم عند 0 ثانية، ويتم تحصيل الرسوم عن الفاصل الزمني الأخير عند 10 دقائق.
{
"plans": {
"plan_id": "plan2",
"currency": "CAD",
"price": 3,
"per_km_pricing": [{
"start": 0,
"rate": 0.25,
"interval": 1
}],
"per_min_pricing": [{
"start": 0,
"rate": 0.50,
"interval": 1
}]
}
}
مطلوب بشكل مشروط: geofencing_zones.json (نظام مزوّد بمحطة شحن وبدونها)
يُرجى الرجوع إلى مواصفات GBFS حسب الحاجة.
تحدّد هذه الخلاصة بيانات السياج الجغرافي للمركبات المستقلة. تتضمّن بيانات السياج الجغرافي الحدود الجغرافية التي تحدّد الأماكن المسموح فيها للمركبات ببدء الرحلة وإنهائها، بالإضافة إلى السرعة التي يمكن أن تسير بها المركبات، وهي إما الحد الأقصى لسرعة المركبة أو الحد الأقصى للسرعة على الطريق الذي تسير عليه المركبة، أيهما أقل. يجب أن يلتزم السائقون بالقوانين واللوائح المحلية.
نستخدم هذه البيانات لكي يتم فلترة نتائج التنقّل الصغير إذا كان انتهاء الرحلة خارج نطاق السياج الجغرافي المحدّد عندما يبحث المستخدم عن مسار معيّن. في حال عدم توفير سياجات جغرافية، تتعامل Google مع الخدمة كما لو لم تكن هناك أي قيود على الحدود.
اسم الحقل | النوع | المتطلبات | الوصف |
---|---|---|---|
geofencing_zones |
عنصر | مطلوب | عنصر FeatureCollection كما هو موضّح في
IETF RFC 7946 هو عنصر يتضمّن حقلاً باسم
features . قيمة features هي مصفوفة JSON.
كل عنصر من مصفوفة JSON هو عنصر Feature .
يتم هنا تحديد كل منطقة محددة جغرافيًا والقواعد والسمات المرتبطة بها وتعريفات |
geofencing_zones.type |
سلسلة | مطلوب | اضبط القيمة على FeatureCollection كما هو موضّح في
IETF RFC 7946. |
geofencing_zones.features |
مصفوفة | مطلوب | مصفوفة JSON، حيث يكون كل عنصر من عناصر مصفوفة JSON عبارة عن عنصر Feature . |
geofencing_zones.features[].type |
سلسلة | مطلوب | اضبط القيمة على Feature كما هو موضّح في
IETF RFC 7946. |
geofencing_zones.features[].geometry |
GeoJSON Multipolygon | مطلوب | تمثّل هذه السمة مضلّعًا متعدّد الأضلاع بتنسيق GeoJSON يوضّح الأماكن التي لا يمكن فيها بدء الرحلات أو إنهاؤها أو المرور بها، بالإضافة إلى القيود الأخرى. يحدّد ترتيب النقاط في اتجاه عقارب الساعة المساحة المحاطة بالمضلّع، بينما يحدّد ترتيب النقاط في عكس اتجاه عقارب الساعة المساحة خارج المضلّع. لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى قاعدة اليد اليمنى. |
geofencing_zones.features[].properties |
عنصر | مطلوب | تمثّل هذه السمة عنصرًا يحدّد بدلات السفر وقيوده. |
geofencing_zones.features[].properties.rules |
مصفوفة | اختياري | مصفوفة من العناصر، يحدّد كل عنصر قاعدة واحدة فقط. في حال تداخل قاعدتين أو أكثر أو تعارضهما أو تضاربهما بأي شكل من الأشكال، تكون الأولوية للقاعدة الأولى المحدّدة في ترتيب ملف JSON. |
geofencing_zones.features[].properties.rules[].vehicle_type_id |
مصفوفة | اختياري | مصفوفة من معرّفات أنواع المركبات، حيث يمثّل كل عنصر
vehicle_type_id ، ويجب تطبيق أي قيود عليه.
في حال عدم تحديد vehicle_type_id ، تنطبق القيود على جميع أنواع المركبات. |
geofencing_zones.features[].properties.rules[].ride_allowed |
منطقي | مطلوب | تحدّد هذه السمة ما إذا كان يمكن بدء جولة الدراجة "غير المرتبطة بمحطة" وإنهاؤها في المنطقة، وذلك على النحو التالي:
|
في ما يلي مثال على geofencing_zones.json
:
"geofencing_zones":{
"type":"FeatureCollection",
"features":[{
"type":"Feature",
"properties":{
"rules":[{
"vehicle_type_id":"scooter",
"ride_allowed": false
}]
},
"geometry":{
"type":"MultiPolygon",
"coordinates":[[[
[-122.66780376434326, 45.49896266763551],
[-122.66810417175292, 45.49824825558575],
[-122.66830801963805, 45.49632305799116],
[-122.66780376434326, 45.49896266763551]
]]]
}
}]
}
مطلوب: station_information.json (نظام الإرساء)
يُرجى الرجوع إلى مواصفات GBFS حسب الحاجة.
تحدّد هذه الخلاصة المعلومات العامة حول محطات مشاركة الدراجات العامة.
اسم الحقل | النوع | المتطلبات | الوصف |
---|---|---|---|
stations |
مصفوفة | مطلوب | مصفوفة من العناصر يحدّد كل عنصر فيها محطة واحدة فقط. |
stations[].station_id |
سلسلة | مطلوب | معرّف المحطة |
stations[].name |
سلسلة | مطلوب |
تمثّل هذه السمة الاسم العلني للمحطة باللغة المحلية للمدينة التي تقع فيها المحطة. يجب أن يلتزم name بما هو مستخدَم
في اللوحات الإرشادية في المحطة، حيثما كان ذلك متاحًا، أو يجب أن يعكس
الموقع الجغرافي للمحطة من خلال استخدام شارع متقاطع أو معلم محلي.
لا تستخدِم اختصارات مثل "شارع" بدلاً من "شارع" إلا إذا كانت مستخدَمة بشكل صريح في اللوحات الإرشادية، ويجب أن يكون name بأحرف مختلطة وفقًا للاتفاقيات المحلية بشأن استخدام الأحرف الكبيرة في أسماء الأماكن وليس بأحرف كبيرة بالكامل.
|
stations[].lat |
خط العرض | مطلوب | خط عرض المحطة بنظام WGS 84، بتنسيق الدرجات العشرية |
stations[].lon |
خط الطول | مطلوب | تمثّل هذه السمة خط طول المحطة بنظام WGS 84، بتنسيق الدرجات العشرية. |
stations[].capacity |
عدد صحيح غير سالب | اختياري | عدد صحيح غير سالب يمثّل إجمالي عدد نقاط الإرساء المثبّتة في المحطة، سواء كانت متاحة أو غير متاحة. |
stations[].rental_uris |
عنصر | مطلوب |
عنصر JSON يحتوي على معرّفات الموارد المنتظمة (URI) الخاصة بالاستئجار على Android وiOS والويب في الحقول الخاصة بكل منها. في حال تحديد معرّفات الموارد الموحّدة هذه، فإنّها تلغي الروابط لصفحات في التطبيق التلقائية التي تم ضبطها عند إعداد مقدّم الخدمة. |
stations[].rental_uris.android |
معرّف الموارد المنتظم (URI) | مطلوب بشكل مشروط |
معرّف موارد منتظم (URI) يمكن تمريره إلى تطبيق Android باستخدام يجب أن يكون معرّف الموارد الموحّد هذا رابطًا لصفحة معيّنة خاصة بمحطة واحدة، وليس صفحة عامة خاصة بخدمة تأجير تتضمّن معلومات عن أكثر من محطة. يجب أن ينقل الرابط لصفحة في التطبيق المستخدم مباشرةً إلى المحطة بدون أي طلبات أو صفحات إعلانية بينية أو عمليات تسجيل دخول. تأكَّد من أنّ المستخدمين يمكنهم رؤية المحطة حتى إذا لم يفتحوا التطبيق من قبل. ليس من الضروري أن تتضمّن معرّفات الموارد الموحّدة هذا الحقل مطلوب إذا كان الشريك لديه تطبيق إيجار على Android. مثال على Android App Links:
|
stations[].rental_uris.ios |
معرّف الموارد المنتظم (URI) | مطلوب بشكل مشروط |
معرّف موارد منتظم (URI) يمكن استخدامه على أجهزة iOS لتشغيل تطبيق الإيجار الخاص بالمحطة
لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى مقالة Apple حول مخططات عناوين URL المخصّصة على نظام التشغيل iOS.
يجب أن يكون يجب أن يكون معرّف الموارد الموحّد هذا رابطًا لصفحة معيّنة خاصة بمحطة واحدة، وليس صفحة عامة خاصة بخدمة تأجير تتضمّن معلومات عن أكثر من محطة. يجب أن ينقل الرابط لصفحة في التطبيق المستخدم مباشرةً إلى المحطة بدون أي طلبات أو صفحات إعلانية بينية أو عمليات تسجيل دخول. تأكَّد من أنّ المستخدمين يمكنهم رؤية المحطة حتى إذا لم يفتحوا التطبيق من قبل. ليس من الضروري أن تتضمّن معرّفات الموارد المنتظمة هذا الحقل مطلوب إذا كان لدى الشريك تطبيق إيجار على iOS. مثال على الروابط العامة في iOS:
|
stations[].rental_uris.web |
عنوان URL | اختياري | تمثّل هذه السمة عنوان URL يمكن أن يستخدمه متصفّح الويب لعرض المزيد من المعلومات حول كيفية استئجار مركبة في هذه المحطة. يجب أن يكون عنوان URL هذا رابطًا لصفحة معيّنة خاصًا بمحطة واحدة، وليس صفحة عامة خاصة بخدمة تأجير الدراجات تتضمّن معلومات عن أكثر من محطة. يجب أن ينقل الرابط لصفحة في التطبيق المستخدم مباشرةً إلى المحطة بدون أي طلبات أو صفحات إعلانية بينية أو عمليات تسجيل دخول. تأكَّد من أنّ بإمكان المستخدمين رؤية المحطة حتى إذا لم يفتحوا التطبيق من قبل. ليس من الضروري أن تتضمّن عناوين URL السلسلة إذا لم يتم ضبط هذا الحقل، يعني ذلك أنّ الروابط لصفحات في التطبيق غير متاحة لمتصفّح الويب. مثال للقيمة:
|
في ما يلي مثال على station_information.json
:
"stations": [
{
"station_id": "597",
"name": "Silverthorne Road, Battersea",
"lat": 51.472865,
"lon": -0.148059,
"capacity": 10,
"rental_uris": {
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.exampleexample.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890&platform=web"
}
},
]
مطلوب: station_status.json (نظام الإرساء)
يُرجى الرجوع إلى مواصفات GBFS حسب الحاجة.
يحدّد هذا الخلاصة الحالة الحالية والمحدّثة لمحطات مشاركة الدراجات العامة.
اسم الحقل | النوع | المتطلبات | الوصف |
---|---|---|---|
stations |
مصفوفة | مطلوب | مصفوفة من العناصر، يحدّد كل عنصر منها محطة واحدة فقط. |
stations[].station_id |
سلسلة | مطلوب | معرّف المحطة |
stations[].num_bikes_available |
عدد صحيح غير سالب | مطلوب |
عدد الدراجات الوظيفية غير السالبة الموجودة فعليًا في المحطة والتي يمكن تأجيرها لتحديد ما إذا كانت المحطة توفّر حاليًا دراجات للاستئجار، عليك فحص حقل |
stations[].vehicle_types_available |
مصفوفة | اختياري |
مصفوفة من العناصر التي تحدّد العدد الإجمالي للمركبات،
المصنّفة حسب نوع المركبة الفردية المتوفّرة في المحطة يمثّل كل كائن العدد الإجمالي للمركبات من نوع المركبة المرتبط. يجب أن يكون إجمالي عدد المركبات من كل عنصر من هذه العناصر مساويًا للقيمة المحدّدة في الحقل |
stations[].vehicle_types_available[].vehicle_type_id |
رقم التعريف | مطلوب |
تمثّل هذه السمة |
stations[].vehicle_types_available[].count |
عدد صحيح غير سالب | مطلوب |
تمثّل هذه السمة إجمالي عدد المركبات المتاحة في |
stations[].num_docks_available |
عدد صحيح غير سالب | مطلوب بشكل مشروط |
هذا الحقل مطلوب، ما لم تكن المحطة توفّر عددًا غير محدود من أماكن الركن. على سبيل المثال، تتضمّن المحطات الافتراضية سعات ركن غير محدودة، وبالتالي لا يكون هذا الحقل مطلوبًا. عدد صحيح غير سالب يمثّل إجمالي عدد أرصفة الركن الوظيفية المتوفّرة في المحطة والتي يمكنها قبول عمليات إعادة المركبات لتحديد ما إذا كانت المحطة تقبل حاليًا إعادة الدراجات، عليك فحص الحقل |
stations[].is_installed |
منطقي | مطلوب |
قيمة منطقية تشير إلى ما إذا كانت المحطة متوفرة حاليًا في الشارع وتم تركيبها. إذا كانت محطة الشحن مثبَّتة في الشارع، اضبطها على إذا لم تكن محطة مشاركة الدراجات مثبّتة في الشارع، اضبطها على |
stations[].is_renting |
منطقي | مطلوب |
قيمة منطقية تشير إلى ما إذا كانت المحطة تتيح حاليًا استئجار الدراجات. إذا كانت المحطة توفّر حاليًا خدمة تأجير الدراجات، اضبط القيمة على إذا كانت المحطة لا تؤجّر دراجات حاليًا، اضبط القيمة على |
stations[].is_returning |
منطقي | مطلوب |
قيمة منطقية تشير إلى ما إذا كانت المحطة تقبل حاليًا إعادة الدراجات. إذا كانت المحطة تقبل حاليًا عمليات إعادة الدراجات، اضبط القيمة على إذا كانت المحطة لا تقبل حاليًا عمليات إرجاع الدراجات، اضبطها على |
في ما يلي مثال على station_status.json
:
"stations": [
{
"station_id": "2",
"num_bikes_available": 6,
"vehicle_types_available": [
{
"vehicle_type_id" : "scooter_electric",
"count" : 2
},
{
"vehicle_type_id" : "bike_manual",
"count" : 4
}
],
"num_docks_available": 30,
"is_installed": true,
"is_renting": true,
"is_returning": true,
"last_reported": 1576119631
},
]