GBFS সংজ্ঞা

আপনি এই বিভাগের সাথে এগিয়ে যাওয়ার আগে, আপনি যদি ইতিমধ্যে এটি না করে থাকেন, আপনি যে সমর্থিত মাইক্রোমোবিলিটি সিস্টেমগুলির জন্য ফিড তৈরি করছেন তা যাচাই করুন।

নিম্নলিখিত বিভাগে, প্রতিটি হেডারের নিম্নলিখিত বিন্যাস রয়েছে: Required|Optional|Conditionally required: Feed name (System supported) । নিম্নলিখিত সিস্টেমগুলি সমর্থিত:

  • ডকড সিস্টেম
  • ডকলেস সিস্টেম
  • ডকড এবং ডকলেস সিস্টেম

Google-এর সাথে সফলভাবে সংহত করতে, আপনার ফিডের বর্ণনা করা সিস্টেমের জন্য প্রয়োজনীয় ফাইলগুলিই প্রদান করুন এবং প্রাসঙ্গিক বিভাগে অন্তর্ভুক্ত প্রয়োজনীয় ক্ষেত্রগুলি নির্দিষ্ট করুন৷ শর্তসাপেক্ষে প্রয়োজনীয় ক্ষেত্রগুলির জন্য, নির্দেশনার জন্য ক্ষেত্রের বিবরণ পড়ুন। আপনি ঐচ্ছিক ক্ষেত্রগুলিও নির্দিষ্ট করতে পারেন যা তথ্য যোগ করে এবং একটি ভাল ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।

মাইক্রোমোবিলিটি ফিডের জন্য প্রয়োজনীয় হেডার

মাইক্রোমোবিলিটি ফিড হল এমন ফিড যাতে এই নিবন্ধে সংজ্ঞায়িত করা হয়েছে ডকড বা ডকলেস মাইক্রোমোবিলিটি স্ট্রাকচার্ড ডেটা।

সমস্ত ফিডকে অবশ্যই JSON অবজেক্টের শীর্ষ স্তরে নিম্নলিখিত সারণীতে অন্তর্ভুক্ত ক্ষেত্রগুলিকে অবশ্যই নির্দিষ্ট করতে হবে, যা সম্মিলিতভাবে সাধারণ GBFS হেডার হিসাবে পরিচিত।

ক্ষেত্র নাম টাইপ প্রয়োজনীয়তা বর্ণনা
last_updated টাইমস্ট্যাম্প প্রয়োজন একটি POSIX টাইমস্ট্যাম্প, যা 1 জানুয়ারী, 1970 00:00:00 UTC থেকে কয়েক সেকেন্ড নির্দিষ্ট করে।

ফিডের ডেটা আপডেট করার শেষ সময় সেট করুন।

ttl অ-ঋণাত্মক পূর্ণসংখ্যা প্রয়োজন একটি অ-নেতিবাচক পূর্ণসংখ্যা যা ফিড আপডেট করার সময় না হওয়া পর্যন্ত সেকেন্ডের সংখ্যাকে প্রতিনিধিত্ব করে।

যদি ডেটা একটি ধ্রুবক হারে আপডেট করা আবশ্যক, এই মানটি 0 এ সেট করুন।

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 বুলিয়ান প্রয়োজন বাইকটি বর্তমানে সংরক্ষিত আছে কিনা, নিম্নরূপ:
  • বাইকটি বর্তমানে সংরক্ষিত থাকলে, true সেট করুন।
  • বাইকটি বর্তমানে সংরক্ষিত না থাকলে, false সেট করুন।
bikes[].is_disabled বুলিয়ান প্রয়োজন বাইকটি বর্তমানে অক্ষম বা ভাঙা কিনা, নিম্নরূপ:
  • বাইকটি বর্তমানে নিষ্ক্রিয় থাকলে, true সেট করুন।
  • বাইকটি বর্তমানে নিষ্ক্রিয় না থাকলে, false সেট করুন।
bikes[].rental_uris অবজেক্ট প্রয়োজন একটি JSON অবজেক্ট যা তাদের নিজ নিজ ক্ষেত্রে Android, iOS এবং ওয়েবের জন্য ভাড়ার URI ধারণ করে।
bikes[].rental_uris.android ইউআরআই শর্তসাপেক্ষে প্রয়োজন একটি URI যা android.intent.action.VIEW অ্যান্ড্রয়েড অভিপ্রায় সহ একটি Android অ্যাপে পাস করা যেতে পারে Android ডিপ লিঙ্কগুলিকে সমর্থন করার জন্য৷ প্রদত্ত rental_uris অবশ্যই অ্যান্ড্রয়েড অ্যাপ লিঙ্ক হতে হবে যাতে ব্যবহারকারীর সরবরাহকারী অ্যাপ্লিকেশন ইনস্টল না করা থাকলে দেখার অ্যাপটিকে অ্যাপ স্টোরে ব্যবহারকারীর পুনঃনির্দেশ ম্যানুয়ালি পরিচালনা করতে না হয়।

এই ইউআরআইটি অবশ্যই পৃথক বাইকের সাথে নির্দিষ্ট একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক বাইকের তথ্য অন্তর্ভুক্ত থাকে। ডিপ লিংক ব্যবহারকারীকে সরাসরি বাইকের কাছে নিয়ে যেতে হবে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই। নিশ্চিত করুন যে ব্যবহারকারীরা বাইকটি দেখতে পাচ্ছেন যদিও তারা কখনও অ্যাপ্লিকেশনটি না খুলেন।

URI-এর বাইকের জন্য bike_id অন্তর্ভুক্ত করার প্রয়োজন নেই, যতক্ষণ না অংশীদারের কাছে সংশ্লিষ্ট বাইক সনাক্ত করার জন্য অন্য উপায় থাকে। উদাহরণস্বরূপ, ভাড়ার অ্যাপটি ইউআরআই-এর মধ্যে বাইকটিকে অনন্যভাবে সনাক্ত করতে অন্যান্য শনাক্তকারী ব্যবহার করতে পারে।

যদি অংশীদারের একটি Android ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷

অ্যান্ড্রয়েড অ্যাপ লিঙ্ক উদাহরণ:

https://www.example.com/app?sid=1234567890&platform=android

bikes[].rental_uris.ios ইউআরআই শর্তসাপেক্ষে প্রয়োজন একটি URI যা iOS-এ বাইকের ভাড়া অ্যাপ চালু করতে ব্যবহার করা যেতে পারে। এই সম্পর্কে আরও তথ্যের জন্য, iOS কাস্টম URL স্কিমগুলি সম্পর্কে অ্যাপলের নিবন্ধটি পড়ুন। প্রদত্ত rental_uris অবশ্যই আইওএস ইউনিভার্সাল লিঙ্ক হতে হবে যাতে ব্যবহারকারীর প্রদানকারী অ্যাপ্লিকেশন ইনস্টল না থাকলে দেখার অ্যাপটিকে অ্যাপ স্টোরে ব্যবহারকারীর পুনঃনির্দেশ ম্যানুয়ালি পরিচালনা করতে হবে না।

এই ইউআরআইটি অবশ্যই পৃথক বাইকের সাথে নির্দিষ্ট একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক বাইকের তথ্য অন্তর্ভুক্ত থাকে। ডিপ লিংক ব্যবহারকারীকে সরাসরি বাইকের কাছে নিয়ে যেতে হবে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই। নিশ্চিত করুন যে ব্যবহারকারীরা বাইকটি দেখতে পাচ্ছেন যদিও তারা কখনও অ্যাপ্লিকেশনটি না খুলেন।

URI-এর বাইকের জন্য bike_id অন্তর্ভুক্ত করার প্রয়োজন নেই, যতক্ষণ না অংশীদারের কাছে সংশ্লিষ্ট বাইক সনাক্ত করার জন্য অন্য উপায় থাকে। উদাহরণস্বরূপ, ভাড়ার অ্যাপটি ইউআরআই-এর মধ্যে বাইকটিকে অনন্যভাবে সনাক্ত করতে অন্যান্য শনাক্তকারী ব্যবহার করতে পারে।

যদি অংশীদারের একটি iOS ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷

iOS ইউনিভার্সাল লিঙ্ক উদাহরণ:

https://www.example.com/app?sid=1234567890&platform=ios

bikes[].rental_uris.web URL ঐচ্ছিক

একটি ইউআরএল যা একটি ওয়েব ব্রাউজার ব্যবহার করে এই গাড়িতে গাড়ি ভাড়া নেওয়ার বিষয়ে আরও তথ্য দেখাতে পারে।

এই URLটি অবশ্যই পৃথক বাইকের জন্য একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক বাইকের তথ্য অন্তর্ভুক্ত থাকে৷ ডিপ লিংক ব্যবহারকারীকে সরাসরি বাইকের কাছে নিয়ে যেতে হবে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই। নিশ্চিত করুন যে ব্যবহারকারীরা বাইকটি দেখতে পাচ্ছেন যদিও তারা কখনও অ্যাপ্লিকেশনটি না খুলেন।

ইউআরএলে বাইকের জন্য bike_id অন্তর্ভুক্ত করার প্রয়োজন হয় না বা অন্যথায় Android বা iOS-এর জন্য ভাড়ার URL-এর শব্দার্থিক নিয়ম অনুসরণ করতে হয়। ভাড়ার অ্যাপটি ইউআরএলের মধ্যে অন্যান্য শনাক্তকারী ব্যবহার করতে পারে যা বাইকটিকে অনন্যভাবে শনাক্ত করে।

যদি এই ক্ষেত্রটি সেট করা না থাকে, তাহলে এর মানে হল যে ডিপ লিঙ্কগুলি ওয়েব ব্রাউজারের জন্য সমর্থিত নয়৷

উদাহরণ মান:

https://www.example.com/app?sid=1234567890

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 যা গাড়ির সাধারণ ফর্ম ফ্যাক্টরকে প্রতিনিধিত্ব করে, বর্তমানে বৈধ মানগুলির নিম্নলিখিত তালিকা থেকে:
  • bicycle
  • scooter
  • other
vehicle_types[].propulsion_type এনাম প্রয়োজন একটি enum যা গাড়ির প্রাথমিক প্রপালশন প্রকারকে প্রতিনিধিত্ব করে, বর্তমানে বৈধ মানগুলির নিম্নলিখিত তালিকা থেকে:
  • human : প্যাডেল বা ফুট প্রপালশন
  • electric_assist : শুধুমাত্র মানুষের চালনার পাশাপাশি শক্তি প্রদান করে
  • electric : একটি ব্যাটারি চালিত মোটর সহ থ্রোটল মোড রয়েছে
  • combustion : একটি গ্যাস ইঞ্জিন চালিত মোটর সহ থ্রোটল মোড রয়েছে
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 অ নেতিবাচক ভাসা প্রয়োজন

মূল্য পরিকল্পনাকে অবশ্যই একটি নন-রেটেড প্রাইস প্ল্যান বা রেটেড প্রাইস প্ল্যান হিসাবে সংজ্ঞায়িত করতে হবে:

অ-রেট মূল্য পরিকল্পনা

এই প্ল্যানটি একক, ফ্ল্যাট ভাড়া।

নিম্নলিখিত ক্ষেত্র সেট করুন:

  • price : পুরো ট্রিপের ফ্ল্যাট মূল্য।
রেট মূল্য পরিকল্পনা

এই প্ল্যানটি টুকরো টুকরো, লিনিয়ার রেট মূল্য।

নিম্নলিখিত ক্ষেত্র সেট করুন:

  • price : ভিত্তি মূল্য, যা প্রতি ট্রিপে ঠিক একবার চার্জ করা হয়।

নিম্নলিখিত ক্ষেত্রগুলির একটি বা উভয় সেট করুন:

  • per_km_pricing : প্রতি কিলোমিটারের হারে নির্দিষ্ট ভ্রমণের মূল্য।
  • per_min_pricing : প্রতি মিনিটের হারে নির্দিষ্ট ট্রিপের মূল্য।
plans[].per_km_pricing অ্যারে শর্তসাপেক্ষে প্রয়োজন

যদি মূল্য দূরত্ব ভ্রমণের একটি ফাংশন হয়, কিলোমিটারে প্রদর্শিত হয়, তাহলে এই ক্ষেত্রটি প্রয়োজন।

বস্তুর একটি বিন্যাস যেখানে প্রতিটি বস্তু একটি নির্দিষ্ট দূরত্ব-বিভক্ত সেগমেন্টকে সংজ্ঞায়িত করে। প্রতিটি সেগমেন্টের start মান অবশ্যই পরবর্তী সেগমেন্টের start মানের থেকে কম বা সমান হতে হবে।

প্রদত্ত প্ল্যানের মোট মূল্য নির্ধারণ করতে প্রদত্ত প্ল্যানের plans[].price plans[].per_min_pricing করুন plans[].per_km_pricing

যদি এই ক্ষেত্রটি সেট করা না থাকে, তাহলে দূরত্বের উপর ভিত্তি করে কোনো পরিবর্তনশীল মূল্য নেই এবং তাই, মোট মূল্যের অংশ হিসেবে কোনোটিই অন্তর্ভুক্ত করা হয় না।

plans[].per_km_pricing[].start অ-ঋণাত্মক পূর্ণসংখ্যা প্রয়োজন সেগমেন্ট রেট চার্জ করা শুরু হয় এমন কিলোমিটারের সংখ্যা। এই ক্ষেত্রটি অন্তর্ভুক্ত মানতে সেট করা হয়েছে যা সেগমেন্টের পরিসর শুরু করে। এইভাবে, কিলোমিটারের সংখ্যা শেষ হয়ে গেলে, একবার rate নেওয়া হয়।
plans[].per_km_pricing[].rate ভাসা প্রয়োজন প্রতিটি interval জন্য যে হার চার্জ করা হয়, যেটি সেগমেন্টের অন্তর্ভুক্ত start হয়। যদি এই ক্ষেত্রটি একটি নেতিবাচক সংখ্যায় সেট করা থাকে, তবে ভ্রমণকারী একটি ছাড় পাবেন৷
plans[].per_km_pricing[].interval অ-ঋণাত্মক পূর্ণসংখ্যা প্রয়োজন

কিলোমিটারের ব্যবধান যেখানে সেগমেন্টের rate অনির্দিষ্টকালের জন্য পুনরায় প্রয়োগ করা হয় যদি না সেগমেন্টের end কোনো অ-ঋণাত্মক পূর্ণসংখ্যাতে সেট করা হয়।

প্রতিটি interval শুরুতে একবার rate পুনরায় প্রয়োগ করা হয় এবং দূরত্বের কোন রাউন্ডিং বিবেচনায় নেওয়া হয় না।

যদি সেগমেন্টের end কোনো অ-ঋণাত্মক পূর্ণসংখ্যাতে সেট করা হয়, তাহলে সেগমেন্টের end মানটি অন্তর্ভুক্ত না হওয়া পর্যন্ত সেগমেন্টের rate পুনরায় প্রয়োগ করা হবে।

যদি এই ক্ষেত্রটি 0 তে সেট করা হয়, তবে সেগমেন্টের start rate ঠিক একবার চার্জ করা হবে।

plans[].per_km_pricing[].end অ-ঋণাত্মক পূর্ণসংখ্যা ঐচ্ছিক

যে পয়েন্টে কিলোমিটারের সংখ্যা সেগমেন্টের জন্য rate আর প্রয়োগ করা হয় না৷ এই ক্ষেত্রটি একচেটিয়া মানতে সেট করা হয়েছে যা সেগমেন্টের পরিসর শেষ করে। উদাহরণস্বরূপ, যদি end 40 এ সেট করা হয়, তাহলে rate 40 কিলোমিটারে আর প্রযোজ্য হবে না।

যদি এই ক্ষেত্রটি সেট করা না থাকে বা খালি থাকে, তাহলে ট্রিপ শেষ না হওয়া পর্যন্ত সেগমেন্টের জন্য rate চার্জ করা হবে, এটি অনুসরণ করা অতিরিক্ত বিভাগগুলি ছাড়াও।

plans[].per_min_pricing অ্যারে শর্তসাপেক্ষে প্রয়োজন

যদি মূল্যটি সময় অতিবাহিত করার একটি ফাংশন হয়, মিনিটের মধ্যে প্রদর্শিত হয়, তাহলে এই ক্ষেত্রটি প্রয়োজন।

বস্তুর একটি বিন্যাস যেখানে প্রতিটি বস্তু একটি নির্দিষ্ট সময়-বিভক্ত সেগমেন্টকে সংজ্ঞায়িত করে। প্রতিটি সেগমেন্টের start মান অবশ্যই পরবর্তী সেগমেন্টের start মানের থেকে কম বা সমান হতে হবে।

প্রদত্ত প্ল্যানের মোট মূল্য নির্ধারণ করতে প্রদত্ত প্ল্যানের plans[].price plans[].per_min_pricing করুন plans[].per_km_pricing

যদি এই ক্ষেত্রটি সেট করা না থাকে, তাহলে সময়ের উপর ভিত্তি করে কোনো পরিবর্তনশীল মূল্য নেই এবং তাই মোট মূল্যের অংশ হিসেবে কোনোটি অন্তর্ভুক্ত করা হয় না।

plans[].per_min_pricing[].start ভাসা প্রয়োজন যে মিনিটে সেগমেন্ট রেট চার্জ করা শুরু হয় তার সংখ্যা। এই ক্ষেত্রটি অন্তর্ভুক্ত মানতে সেট করা হয়েছে যা সেগমেন্টের পরিসর শুরু করে। এইভাবে, সেট সংখ্যা মিনিট শেষ হয়ে গেলে, rate একবার চার্জ করা হয়।
plans[].per_min_pricing[].rate ভাসা প্রয়োজন প্রতিটি interval জন্য যে হার চার্জ করা হয়। রেট সেগমেন্টের অন্তর্ভুক্তিমূলক start হয়। যদি এই ক্ষেত্রটি একটি নেতিবাচক সংখ্যায় সেট করা থাকে, তবে ভ্রমণকারী একটি ছাড় পাবেন৷
plans[].per_min_pricing[].interval অ-ঋণাত্মক পূর্ণসংখ্যা প্রয়োজন

মিনিটের ব্যবধান যেখানে সেগমেন্টের rate অনির্দিষ্টকালের জন্য পুনরায় প্রয়োগ করা হয় যদি না সেগমেন্টের end কোনো অ-ঋণাত্মক পূর্ণসংখ্যাতে সেট করা হয়।

প্রতিটি interval শুরুতে একবার rate পুনরায় প্রয়োগ করা হয় এবং ভ্রমণের সময় কোন রাউন্ডিং বিবেচনায় নেওয়া হয় না।

যদি সেগমেন্টের end কোনো অ-ঋণাত্মক পূর্ণসংখ্যাতে সেট করা হয়, তাহলে সেগমেন্টের end মানটি অন্তর্ভুক্ত না হওয়া পর্যন্ত সেগমেন্টের rate পুনরায় প্রয়োগ করা হবে।

যদি এই ক্ষেত্রটি 0 তে সেট করা হয়, তবে সেগমেন্টের start rate ঠিক একবার চার্জ করা হবে।

plans[].per_min_pricing[].end অ-ঋণাত্মক পূর্ণসংখ্যা ঐচ্ছিক

মিনিটের সংখ্যা যে পয়েন্টে সেগমেন্টের জন্য rate আর প্রয়োগ করা হয় না। এই ক্ষেত্রটি একচেটিয়া মানতে সেট করা হয়েছে যা সেগমেন্টের পরিসর শেষ করে। উদাহরণস্বরূপ, যদি end 20 এ সেট করা হয়, তাহলে 20 মিনিটে rate আর প্রযোজ্য হবে না।

যদি এই ক্ষেত্রটি সেট করা না থাকে বা খালি থাকে, তাহলে ট্রিপ শেষ না হওয়া পর্যন্ত সেগমেন্টের জন্য rate চার্জ করা হবে, এটি অনুসরণ করা অতিরিক্ত বিভাগগুলি ছাড়াও।

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
{
  "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 অবজেক্ট হল এমন একটি বস্তু যার একটি ক্ষেত্র রয়েছে, যার নাম featuresfeatures মান হল একটি JSON অ্যারে। JSON অ্যারের প্রতিটি উপাদান একটি Feature বস্তু।

প্রতিটি জিওফেনসড জোন, এর সাথে সম্পর্কিত নিয়ম এবং বৈশিষ্ট্য এবং FeatureCollection সংজ্ঞা এখানে geofencing_zones.json ফিড সংজ্ঞার অংশ হিসাবে নির্দিষ্ট করা হয়েছে।

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 বুলিয়ান প্রয়োজন ফ্রি-স্ট্যান্ডিং "আনডকড" বাইক রাইড জোনে শুরু এবং শেষ হতে পারে কিনা, নিম্নরূপ:
  • যদি আনডক না করা বাইক রাইড জোনে শুরু এবং শেষ হতে পারে, তাহলে true সেট করুন।
  • যদি আনডক করা বাইক রাইড জোনে শুরু ও শেষ না হতে পারে, তাহলে false সেট করুন।

নিম্নলিখিত 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 যা android.intent.action.VIEW অ্যান্ড্রয়েড অভিপ্রায় সহ একটি Android অ্যাপে পাস করা যেতে পারে Android ডিপ লিঙ্কগুলিকে সমর্থন করার জন্য৷ প্রদত্ত rental_uris অবশ্যই অ্যান্ড্রয়েড অ্যাপ লিঙ্ক হতে হবে যাতে ব্যবহারকারীর সরবরাহকারী অ্যাপ্লিকেশন ইনস্টল না করা থাকলে দেখার অ্যাপটিকে অ্যাপ স্টোরে ব্যবহারকারীর পুনঃনির্দেশ ম্যানুয়ালি পরিচালনা করতে না হয়।

এই URI অবশ্যই পৃথক স্টেশনের সাথে নির্দিষ্ট একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক স্টেশনের তথ্য অন্তর্ভুক্ত থাকে। ডিপ লিংক ব্যবহারকারীকে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই সরাসরি স্টেশনে নিয়ে যেতে হবে। নিশ্চিত করুন যে ব্যবহারকারীরা কখনও অ্যাপ্লিকেশনটি না খুললেও স্টেশনটি দেখতে পারেন৷

URI-তে স্টেশনের জন্য station_id অন্তর্ভুক্ত করার প্রয়োজন হয় না, যতক্ষণ না অংশীদারের কাছে সংশ্লিষ্ট স্টেশন শনাক্ত করার অন্য উপায় থাকে। উদাহরণস্বরূপ, ভাড়ার অ্যাপটি ইউআরআই-এর মধ্যে অন্য শনাক্তকারী ব্যবহার করে স্টেশনটিকে অনন্যভাবে সনাক্ত করতে পারে।

যদি অংশীদারের একটি Android ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷

অ্যান্ড্রয়েড অ্যাপ লিঙ্ক উদাহরণ:

https://www.example.com/app?sid=1234567890&platform=android

stations[].rental_uris.ios ইউআরআই শর্তসাপেক্ষে প্রয়োজন

স্টেশনের জন্য ভাড়ার অ্যাপ চালু করতে iOS-এ ব্যবহার করা যেতে পারে এমন একটি URI। এই সম্পর্কে আরও তথ্যের জন্য, iOS কাস্টম URL স্কিমগুলি সম্পর্কে অ্যাপলের নিবন্ধটি পড়ুন। প্রদত্ত rental_uris অবশ্যই আইওএস ইউনিভার্সাল লিঙ্ক হতে হবে যাতে ব্যবহারকারীর প্রদানকারী অ্যাপ্লিকেশন ইনস্টল না থাকলে দেখার অ্যাপটিকে অ্যাপ স্টোরে ব্যবহারকারীর পুনঃনির্দেশ ম্যানুয়ালি পরিচালনা করতে হবে না।

এই URI অবশ্যই পৃথক স্টেশনের সাথে নির্দিষ্ট একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক স্টেশনের তথ্য অন্তর্ভুক্ত থাকে। ডিপ লিংক ব্যবহারকারীকে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই সরাসরি স্টেশনে নিয়ে যেতে হবে। নিশ্চিত করুন যে ব্যবহারকারীরা কখনও অ্যাপ্লিকেশনটি না খুললেও স্টেশনটি দেখতে পারেন৷

স্টেশনের জন্য station_id অন্তর্ভুক্ত করার জন্য URI-এর প্রয়োজন নেই। ভাড়ার অ্যাপটি ইউআরআই-এর মধ্যে অন্য শনাক্তকারী ব্যবহার করে স্টেশনটিকে অনন্যভাবে শনাক্ত করতে পারে।

যদি অংশীদারের একটি iOS ভাড়া অ্যাপ থাকে, তাহলে এই ক্ষেত্রটি প্রয়োজন৷

iOS ইউনিভার্সাল লিঙ্ক উদাহরণ:

https://www.example.com/app?sid=1234567890&platform=ios

stations[].rental_uris.web URL ঐচ্ছিক

এই স্টেশনে কীভাবে গাড়ি ভাড়া করা যায় সে সম্পর্কে আরও তথ্য দেখানোর জন্য একটি URL যা একটি ওয়েব ব্রাউজার ব্যবহার করতে পারে৷

এই URLটি অবশ্যই পৃথক স্টেশনের সাথে নির্দিষ্ট একটি গভীর লিঙ্ক হতে হবে, একটি সাধারণ ভাড়ার পৃষ্ঠা নয় যাতে একাধিক স্টেশনের তথ্য অন্তর্ভুক্ত থাকে। ডিপ লিংক ব্যবহারকারীকে কোনো প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই সরাসরি স্টেশনে নিয়ে যেতে হবে। নিশ্চিত করুন যে ব্যবহারকারীরা কখনও অ্যাপ্লিকেশনটি না খুললেও স্টেশনটি দেখতে পারেন৷

স্টেশনের জন্য station_id অন্তর্ভুক্ত করতে বা অন্যথায় Android বা iOS-এর জন্য ভাড়ার URL-এর শব্দার্থিক নিয়ম অনুসরণ করার জন্য URL-এর প্রয়োজন নেই। ভাড়ার অ্যাপটি ইউআরএল-এর মধ্যে অন্যান্য শনাক্তকারী ব্যবহার করতে পারে যা স্টেশনটিকে অনন্যভাবে শনাক্ত করে।

যদি এই ক্ষেত্রটি সেট করা না থাকে, তাহলে এর মানে হল যে ডিপ লিঙ্কগুলি ওয়েব ব্রাউজারের জন্য সমর্থিত নয়৷

উদাহরণ মান:

https://www.example.com/app?sid=1234567890

নিম্নলিখিত 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 অ-ঋণাত্মক পূর্ণসংখ্যা প্রয়োজন

একটি নন-নেতিবাচক পূর্ণসংখ্যা যা স্টেশনে শারীরিকভাবে থাকা কার্যকরী বাইকের সংখ্যাকে প্রতিনিধিত্ব করে এবং যেগুলি ভাড়ার জন্য দেওয়া হতে পারে।

স্টেশনটি বর্তমানে বাইক ভাড়া করে কিনা তা নির্ধারণ করতে, আপনাকে অবশ্যই স্টেশনের is_renting ক্ষেত্রটি পরিদর্শন করতে হবে এবং একটি সত্যিকারের বুলিয়ান মান খুঁজে বের করতে হবে।

stations[].vehicle_types_available অ্যারে ঐচ্ছিক

বস্তুর একটি বিন্যাস যা মোট যানবাহনের সংখ্যা নির্ধারণ করে, একটি স্টেশনে উপলব্ধ পৃথক গাড়ির ধরন দ্বারা শ্রেণীবদ্ধ করা হয়। প্রতিটি বস্তু সংশ্লিষ্ট গাড়ির প্রকারের জন্য মোট গাড়ির সংখ্যা মডেল করে। num_bikes_available ফিল্ডে উল্লেখিত মানের সাথে মেলে এই বস্তুগুলির প্রতিটি থেকে মোট যানবাহনের সংখ্যা যোগ করতে হবে।

stations[].vehicle_types_available[].vehicle_type_id আইডি প্রয়োজন

vehicle_type_id প্রতিটি গাড়ির প্রকারের স্টেশনে উপলব্ধ যা vehicle_types.json- এ বর্ণনা করা হয়েছে।

stations[].vehicle_types_available[].count অ নেতিবাচক পূর্ণসংখ্যা প্রয়োজন

ভেহিকল_টাইপস. json- এ সংজ্ঞায়িত স্টেশনে সংশ্লিষ্ট vehicle_type_id জন্য উপলব্ধ গাড়ির মোট সংখ্যা।

stations[].num_docks_available অ নেতিবাচক পূর্ণসংখ্যা শর্তসাপেক্ষে প্রয়োজন

ক্ষেত্রটি প্রয়োজন, যদি না স্টেশনটির সীমাহীন ডকিং ক্ষমতা থাকে। উদাহরণস্বরূপ, ভার্চুয়াল স্টেশনগুলির সীমাহীন ডকিং ক্ষমতা রয়েছে এবং ক্ষেত্রটির প্রয়োজন নেই।

একটি নন-নেতিবাচক পূর্ণসংখ্যা যা গাড়ির রিটার্ন গ্রহণ করতে সক্ষম এমন স্টেশনে শারীরিকভাবে কার্যকরী ডকের মোট সংখ্যাকে প্রতিনিধিত্ব করে।

স্টেশনটি বর্তমানে বাইক রিটার্ন গ্রহণ করে কিনা তা নির্ধারণ করতে, আপনাকে অবশ্যই স্টেশনের is_returning ক্ষেত্রটি পরিদর্শন করতে হবে এবং একটি true বুলিয়ান মান খুঁজে বের করতে হবে।

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 true .

If the station isn't installed on the street, set to false .

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 true . Even if the station is empty, if it's set to allow rentals is_renting is set to true .

If the station doesn't currently rent bikes, set to false .

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 true . Even if the station is full, but would allow a return if it wasn't, is_returning is set to true .

If the station doesn't currently accept bike returns, set to false .

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
        },
]