আপনি এই বিভাগের সাথে এগিয়ে যাওয়ার আগে, আপনি যদি ইতিমধ্যে এটি না করে থাকেন, আপনি যে সমর্থিত মাইক্রোমোবিলিটি সিস্টেমগুলির জন্য ফিড তৈরি করছেন তা যাচাই করুন।
নিম্নলিখিত বিভাগে, প্রতিটি হেডারের নিম্নলিখিত বিন্যাস রয়েছে: Required|Optional|Conditionally required: Feed name (System supported)
। নিম্নলিখিত সিস্টেমগুলি সমর্থিত:
- ডকড সিস্টেম
- ডকলেস সিস্টেম
- ডকড এবং ডকলেস সিস্টেম
Google-এর সাথে সফলভাবে সংহত করতে, আপনার ফিডের বর্ণনা করা সিস্টেমের জন্য প্রয়োজনীয় ফাইলগুলিই প্রদান করুন এবং প্রাসঙ্গিক বিভাগে অন্তর্ভুক্ত প্রয়োজনীয় ক্ষেত্রগুলি নির্দিষ্ট করুন৷ শর্তসাপেক্ষে প্রয়োজনীয় ক্ষেত্রগুলির জন্য, নির্দেশনার জন্য ক্ষেত্রের বিবরণ পড়ুন। আপনি ঐচ্ছিক ক্ষেত্রগুলিও নির্দিষ্ট করতে পারেন যা তথ্য যোগ করে এবং একটি ভাল ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।
মাইক্রোমোবিলিটি ফিডের জন্য প্রয়োজনীয় হেডার
মাইক্রোমোবিলিটি ফিড হল এমন ফিড যাতে এই নিবন্ধে সংজ্ঞায়িত করা হয়েছে ডকড বা ডকলেস মাইক্রোমোবিলিটি স্ট্রাকচার্ড ডেটা।
সমস্ত ফিডকে অবশ্যই JSON অবজেক্টের শীর্ষ স্তরে নিম্নলিখিত সারণীতে অন্তর্ভুক্ত ক্ষেত্রগুলিকে অবশ্যই নির্দিষ্ট করতে হবে, যা সম্মিলিতভাবে সাধারণ GBFS হেডার হিসাবে পরিচিত।
ক্ষেত্র নাম | টাইপ | প্রয়োজনীয়তা | বর্ণনা |
---|---|---|---|
last_updated | টাইমস্ট্যাম্প | প্রয়োজন | একটি POSIX টাইমস্ট্যাম্প, যা 1 জানুয়ারী, 1970 00:00:00 UTC থেকে কয়েক সেকেন্ড নির্দিষ্ট করে। ফিডের ডেটা আপডেট করার শেষ সময় সেট করুন। |
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 | অবজেক্ট | শর্তসাপেক্ষে প্রয়োজন | store_uri এবং discovery_uri ক্ষেত্রে Android প্ল্যাটফর্মের জন্য ভাড়া অ্যাপ ডাউনলোড এবং অ্যাপ আবিষ্কারের তথ্য রয়েছে। যদি সিস্টেম প্রদানকারীর একটি Android ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷ |
rental_apps.android.store_uri | ইউআরআই | প্রয়োজন | URI যেখান থেকে ভাড়ার Android অ্যাপ ডাউনলোড করা যাবে। এটি সাধারণত Google Play এর মতো অ্যাপ স্টোরের একটি URI হয়। যদি URI Google Play-এর মতো কোনো অ্যাপ স্টোরের দিকে নির্দেশ করে, তাহলে আমরা সুপারিশ করি যে URI অ্যান্ড্রয়েডের সর্বোত্তম অনুশীলনগুলি অনুসরণ করে যাতে দেখার অ্যাপটি ওয়েবসাইটের পরিবর্তে স্থানীয় অ্যাপ স্টোর অ্যাপে সরাসরি URI খুলতে পারে। |
rental_apps.android.discovery_uri | ইউআরআই | প্রয়োজন | ইউআরআই যার ফর্মটি your_custom_scheme://your/path/here । ডিভাইসে ভাড়ার Android অ্যাপ ইনস্টল করা আছে কিনা তা আবিষ্কার করতে PackageManager.queryIntentActivities() দ্বারা URI ব্যবহার করা যেতে পারে। |
rental_apps.ios | অবজেক্ট | শর্তসাপেক্ষে প্রয়োজন | store_uri এবং discovery_uri ক্ষেত্রগুলিতে iOS প্ল্যাটফর্মের জন্য ভাড়া অ্যাপ ডাউনলোড এবং অ্যাপ আবিষ্কারের তথ্য রয়েছে। যদি সিস্টেম প্রদানকারীর একটি iOS ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷ |
rental_apps.ios.store_uri | ইউআরআই | প্রয়োজন | URI যেখান থেকে ভাড়ার iOS অ্যাপ ডাউনলোড করা যাবে। এটি সাধারণত অ্যাপ স্টোর যেমন অ্যাপল অ্যাপ স্টোরের একটি URI হয়। যদি ইউআরআই অ্যাপ স্টোর যেমন অ্যাপল অ্যাপ স্টোরের দিকে নির্দেশ করে, তাহলে আমরা সুপারিশ করি যে URI iOS সর্বোত্তম অনুশীলনগুলি অনুসরণ করে যাতে দেখার অ্যাপটি সরাসরি URI-কে কোনো ওয়েবসাইটের পরিবর্তে স্থানীয় অ্যাপ স্টোর অ্যাপে খুলতে পারে। |
rental_apps.ios.discovery_uri | ইউআরআই | প্রয়োজন | ইউআরআই যার ফর্ম your_custom_scheme:// আছে। URI ব্যবহার করা যেতে পারে UIApplication canOpenURL: ডিভাইসে ভাড়া 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 অবজেক্ট যা তাদের নিজ নিজ ক্ষেত্রে Android, iOS এবং ওয়েবের জন্য ভাড়ার URI ধারণ করে। |
bikes[].rental_uris.android | ইউআরআই | শর্তসাপেক্ষে প্রয়োজন | একটি URI যা android.intent.action.VIEW অ্যান্ড্রয়েড অভিপ্রায় সহ একটি Android অ্যাপে পাস করা যেতে পারে Android ডিপ লিঙ্কগুলিকে সমর্থন করার জন্য৷ প্রদত্ত rental_uris অবশ্যই অ্যান্ড্রয়েড অ্যাপ লিঙ্ক হতে হবে যাতে ব্যবহারকারীর সরবরাহকারী অ্যাপ্লিকেশন ইনস্টল না করা থাকলে দেখার অ্যাপটিকে অ্যাপ স্টোরে ব্যবহারকারীর পুনঃনির্দেশ ম্যানুয়ালি পরিচালনা করতে না হয়।এই ইউআরআইটি অবশ্যই পৃথক বাইকের সাথে নির্দিষ্ট একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক বাইকের তথ্য অন্তর্ভুক্ত থাকে। ডিপ লিংক ব্যবহারকারীকে সরাসরি বাইকের কাছে নিয়ে যেতে হবে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই। নিশ্চিত করুন যে ব্যবহারকারীরা বাইকটি দেখতে পাচ্ছেন যদিও তারা কখনও অ্যাপ্লিকেশনটি না খুলেন। URI-এর বাইকের জন্য যদি অংশীদারের একটি Android ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷ অ্যান্ড্রয়েড অ্যাপ লিঙ্ক উদাহরণ: |
bikes[].rental_uris.ios | ইউআরআই | শর্তসাপেক্ষে প্রয়োজন | একটি URI যা iOS-এ বাইকের ভাড়া অ্যাপ চালু করতে ব্যবহার করা যেতে পারে। এই সম্পর্কে আরও তথ্যের জন্য, iOS কাস্টম URL স্কিমগুলি সম্পর্কে অ্যাপলের নিবন্ধটি পড়ুন। প্রদত্ত rental_uris অবশ্যই আইওএস ইউনিভার্সাল লিঙ্ক হতে হবে যাতে ব্যবহারকারীর প্রদানকারী অ্যাপ্লিকেশন ইনস্টল না থাকলে দেখার অ্যাপটিকে অ্যাপ স্টোরে ব্যবহারকারীর পুনঃনির্দেশ ম্যানুয়ালি পরিচালনা করতে হবে না।এই ইউআরআইটি অবশ্যই পৃথক বাইকের সাথে নির্দিষ্ট একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক বাইকের তথ্য অন্তর্ভুক্ত থাকে। ডিপ লিংক ব্যবহারকারীকে সরাসরি বাইকের কাছে নিয়ে যেতে হবে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই। নিশ্চিত করুন যে ব্যবহারকারীরা বাইকটি দেখতে পাচ্ছেন যদিও তারা কখনও অ্যাপ্লিকেশনটি না খুলেন। URI-এর বাইকের জন্য bike_id অন্তর্ভুক্ত করার প্রয়োজন নেই, যতক্ষণ না অংশীদারের কাছে সংশ্লিষ্ট বাইক সনাক্ত করার জন্য অন্য উপায় থাকে। উদাহরণস্বরূপ, ভাড়ার অ্যাপটি ইউআরআই-এর মধ্যে বাইকটিকে অনন্যভাবে সনাক্ত করতে অন্যান্য শনাক্তকারী ব্যবহার করতে পারে। যদি অংশীদারের একটি iOS ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷ iOS ইউনিভার্সাল লিঙ্ক উদাহরণ: |
bikes[].rental_uris.web | 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 | ঐচ্ছিক | ইউআরএল যা শেষ-ব্যবহারকারীদের মূল্য পরিকল্পনা সম্পর্কে আরও তথ্যের দিকে নির্দেশ করে। |
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
কোড নমুনা প্রদান করে। প্রতিটি উদাহরণের প্রাসঙ্গিক বিবরণ এবং ফলাফল প্রদান করা হয়.
system_pricing_plans.json এর উদাহরণ 1
নিম্নলিখিত মূল্য পরিকল্পনা কোড নমুনা নিম্নলিখিত বিরতির জন্য ভ্রমণ সময়ের উপর ভিত্তি করে চার্জ দেখায়:
- [0,1): $2 USD
- যাত্রা এক মিনিটের কম হলে, ব্যবহারকারী $2 USD প্রদান করে।
- উদাহরণ: 59-সেকেন্ড ট্রিপ
- [১,২): $৩ মার্কিন ডলার
- যদি যাত্রা এক মিনিটের সমান বা দুই মিনিটের কম হয় তবে ব্যবহারকারী $2 + $1 = $3 USD প্রদান করে।
- উদাহরণ: 1-মিনিট ট্রিপ; 1-মিনিট 45-সেকেন্ড ট্রিপ
- x মিনিটের সংখ্যা যেখানে x 2 এর বেশি বা সমান: $3 + ($2 + $1) * ( x - 2 + 1)) USD
- যদি যাত্রাটি দীর্ঘ বা দুই মিনিটের সমান হয় তবে ব্যবহারকারী দুই মিনিটের কম ভ্রমণের অংশের জন্য $3 প্রদান করে এবং ($1 [
per_min_pricing
তালিকার প্রথম এন্ট্রি থেকে অব্যাহত] + $2 [per_min_pricing
তালিকার দ্বিতীয় এন্ট্রি]) প্রতি মিনিটের পর এবং দুই মিনিট সহ। - উদাহরণ:
- 2-মিনিটের ট্রিপের খরচ $3 + ($2 + $1) = $6 USD
- 2-মিনিট 30-সেকেন্ড ট্রিপের খরচ $3 + ($2 + $1) = $6 USD
- 3 মিনিটের ট্রিপের খরচ $3 + ($2 + $1) * 2) = $9 USD
- 10 মিনিটের ট্রিপের খরচ $3 + ($2 + $1) * 9) = $30 USD
- যদি যাত্রাটি দীর্ঘ বা দুই মিনিটের সমান হয় তবে ব্যবহারকারী দুই মিনিটের কম ভ্রমণের অংশের জন্য $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
}
],
}
}
system_pricing_plans.json এর উদাহরণ 2
এই উদাহরণে, আমরা একটি মূল্য মূল্য পরিকল্পনার জন্য একটি কোড নমুনা দেখাই যা মিনিট এবং কিলোমিটার উভয় হারে চার্জ করা হয়:
- বিশেষভাবে, শেষ-ব্যবহারকারীর কাছ থেকে প্রতি কিলোমিটারে $0.25 CAD এর পাশাপাশি প্রতি মিনিটে $0.50 CAD চার্জ করা হয়।
- এই উভয় হার একযোগে ঘটে এবং একে অপরের উপর নির্ভরশীল নয়।
- অতএব, 10 মিনিটের জন্য একটি এক কিলোমিটার ভ্রমণের খরচ $9 CAD৷ খরচের ভাঙ্গন নিম্নরূপ:
- $3, ভিত্তি মূল্য
- $0.25 * 2, একবার ট্রিপের শুরুতে এবং একবার 1-কিমি চিহ্নে চার্জ করা হয়৷
- $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 | অবজেক্ট | প্রয়োজন | IETF RFC 7946 দ্বারা বর্ণিত একটি FeatureCollection অবজেক্ট হল এমন একটি বস্তু যার একটি ক্ষেত্র রয়েছে, যার নাম features । features মান হল একটি JSON অ্যারে। JSON অ্যারের প্রতিটি উপাদান একটি Feature বস্তু। প্রতিটি জিওফেনসড জোন, এর সাথে সম্পর্কিত নিয়ম এবং বৈশিষ্ট্য এবং |
geofencing_zones.type | স্ট্রিং | প্রয়োজন | IETF RFC 7946 দ্বারা বর্ণিত FeatureCollection সেট করুন। |
geofencing_zones.features | অ্যারে | প্রয়োজন | একটি JSON অ্যারে, যেখানে JSON অ্যারের প্রতিটি উপাদান একটি Feature বস্তু। |
geofencing_zones.features[].type | স্ট্রিং | প্রয়োজন | IETF RFC 7946 দ্বারা বর্ণিত Feature সেট করুন। |
geofencing_zones.features[].geometry | GeoJSON বহুভুজ | প্রয়োজন | একটি 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 অবজেক্ট যা তাদের নিজ নিজ ক্ষেত্রে Android, iOS এবং ওয়েবের জন্য ভাড়ার URI ধারণ করে। এই URI গুলি নির্দিষ্ট করা থাকলে, তারা ডিফল্ট ডিপ লিঙ্কগুলিকে ওভাররাইড করে যা প্রদানকারীকে অনবোর্ড করার সময় সেট করা হয়েছিল৷ |
stations[].rental_uris.android | ইউআরআই | শর্তসাপেক্ষে প্রয়োজন | একটি URI যা এই URI অবশ্যই পৃথক স্টেশনের সাথে নির্দিষ্ট একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক স্টেশনের তথ্য অন্তর্ভুক্ত থাকে। ডিপ লিংক ব্যবহারকারীকে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই সরাসরি স্টেশনে নিয়ে যেতে হবে। নিশ্চিত করুন যে ব্যবহারকারীরা কখনও অ্যাপ্লিকেশনটি না খুললেও স্টেশনটি দেখতে পারেন৷ URI-তে স্টেশনের জন্য যদি অংশীদারের একটি Android ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷ অ্যান্ড্রয়েড অ্যাপ লিঙ্ক উদাহরণ: |
stations[].rental_uris.ios | ইউআরআই | শর্তসাপেক্ষে প্রয়োজন | স্টেশনের জন্য ভাড়ার অ্যাপ চালু করতে iOS-এ ব্যবহার করা যেতে পারে এমন একটি URI। এই সম্পর্কে আরও তথ্যের জন্য, iOS কাস্টম URL স্কিমগুলি সম্পর্কে অ্যাপলের নিবন্ধটি পড়ুন। প্রদত্ত এই URI অবশ্যই পৃথক স্টেশনের সাথে নির্দিষ্ট একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক স্টেশনের তথ্য অন্তর্ভুক্ত থাকে। ডিপ লিংক ব্যবহারকারীকে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই সরাসরি স্টেশনে নিয়ে যেতে হবে। নিশ্চিত করুন যে ব্যবহারকারীরা কখনও অ্যাপ্লিকেশনটি না খুললেও স্টেশনটি দেখতে পারেন৷ স্টেশনের জন্য যদি অংশীদারের একটি iOS ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷ iOS ইউনিভার্সাল লিঙ্ক উদাহরণ: |
stations[].rental_uris.web | 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 | অ নেতিবাচক পূর্ণসংখ্যা | প্রয়োজন | ভেহিকল_টাইপস. json- এ সংজ্ঞায়িত স্টেশনে সংশ্লিষ্ট |
stations[].num_docks_available | অ নেতিবাচক পূর্ণসংখ্যা | শর্তসাপেক্ষে প্রয়োজন | ক্ষেত্রটি প্রয়োজন, যদি না স্টেশনটির সীমাহীন ডকিং ক্ষমতা থাকে। উদাহরণস্বরূপ, ভার্চুয়াল স্টেশনগুলির সীমাহীন ডকিং ক্ষমতা রয়েছে এবং ক্ষেত্রটির প্রয়োজন নেই। একটি নন-নেতিবাচক পূর্ণসংখ্যা যা গাড়ির রিটার্ন গ্রহণ করতে সক্ষম এমন স্টেশনে শারীরিকভাবে কার্যকরী ডকের মোট সংখ্যাকে প্রতিনিধিত্ব করে। স্টেশনটি বর্তমানে বাইক রিটার্ন গ্রহণ করে কিনা তা নির্ধারণ করতে, আপনাকে অবশ্যই স্টেশনের |
stations[].is_installed | বুলিয়ান | প্রয়োজন | A Boolean that indicates whether it's true that the station is currently on the street and installed. If the station is installed on the street, set to If the station isn't installed on the street, set to |
stations[].is_renting | Boolean | প্রয়োজন | A Boolean that indicates whether it's true that the station currently rents bikes. If the station currently rents bikes, set to If the station doesn't currently rent bikes, set to |
stations[].is_returning | Boolean | প্রয়োজন | A Boolean that indicates whether it's true that the station currently accepts bike returns. If the station currently accepts bike returns, set to If the station doesn't currently accept bike returns, set to |
The following is an example of 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
},
]