คำจำกัดความของ GBFS

ก่อนที่จะดำเนินการในส่วนนี้ หากยังไม่ได้ดำเนินการ โปรดยืนยันระบบไมโครโมบิลิตี้ที่รองรับ ที่คุณกำลังสร้างฟีด

ในส่วนต่อไปนี้ ส่วนหัวแต่ละส่วนจะมีรูปแบบดังนี้ Required|Optional|Conditionally required: Feed name (System supported) ระบบที่รองรับมีดังนี้

  • ระบบที่เชื่อมต่อกับแท่นชาร์จ
  • ระบบแบบไม่มีสถานีจอด
  • ระบบที่มีและไม่มีสถานีจอด

หากต้องการผสานรวมกับ Google ให้สำเร็จ ให้ระบุเฉพาะไฟล์ที่จำเป็นสำหรับระบบที่ฟีดอธิบาย และระบุช่องที่ต้องกรอกซึ่งรวมอยู่ในส่วนที่เกี่ยวข้อง สำหรับช่องที่ต้องกรอกตามเงื่อนไข โปรดดูคำแนะนำในคำอธิบายของช่อง นอกจากนี้ คุณยังระบุฟิลด์ที่ไม่บังคับซึ่งจะเพิ่มข้อมูลและมอบประสบการณ์การใช้งานที่ดียิ่งขึ้นได้ด้วย

ส่วนหัวที่ต้องระบุสำหรับฟีดไมโครโมบิลิตี

ฟีดไมโครโมบิลิตี้คือฟีดที่มี Structured Data ของไมโครโมบิลิตี้แบบมีแท่นจอดหรือไม่มีแท่นจอด ตามที่กำหนดไว้ในบทความนี้

ฟีดทั้งหมดต้องระบุฟิลด์ที่รวมอยู่ในตารางต่อไปนี้ที่ ระดับบนสุดของออบเจกต์ 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 รหัส ต้องระบุ ตัวระบุที่ไม่ซ้ำกันทั่วโลกสำหรับระบบการแชร์ยานพาหนะ ค่านี้ควรจะคงที่ตลอดอายุการใช้งานของระบบ ระบบหรือพื้นที่ทางภูมิศาสตร์ที่แตกต่างกันแต่ละแห่งซึ่งมีการใช้งานยานพาหนะ ควรมี 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 ไปยัง App Store เช่น Google Play หาก URI ชี้ไปยัง App Store เช่น Google Play เราขอแนะนำให้ URI เป็นไปตามแนวทางปฏิบัติแนะนำของ Android เพื่อให้แอปที่ดูสามารถเปิด URI ไปยังแอป App Store ดั้งเดิมได้โดยตรง แทนที่จะเป็นเว็บไซต์
rental_apps.android.discovery_uri URI ต้องระบุ URI ที่มีรูปแบบ your_custom_scheme://your/path/here PackageManager.queryIntentActivities() สามารถใช้ URI เพื่อดูว่ามีการติดตั้งแอป Android สำหรับเช่าในอุปกรณ์หรือไม่
rental_apps.ios วัตถุ ต้องมีแบบมีเงื่อนไข มีข้อมูลการดาวน์โหลดแอปเช่าและข้อมูลการค้นพบแอปสำหรับแพลตฟอร์ม iOS ในฟิลด์ store_uri และ discovery_uri หากผู้ให้บริการระบบมีแอปเช่าบน iOS คุณต้องระบุฟิลด์นี้
rental_apps.ios.store_uri URI ต้องระบุ URI ที่ดาวน์โหลดแอป iOS สำหรับเช่าได้ โดยปกติจะเป็น URI ไปยัง App Store เช่น Apple App Store หาก URI ชี้ไปยัง App Store เช่น Apple App Store เราขอแนะนำให้ URI เป็นไปตาม แนวทางปฏิบัติแนะนำของ iOS เพื่อให้แอปที่ดูสามารถเปิด URI ไปยัง แอป App Store ดั้งเดิมได้โดยตรงแทนที่จะเป็นเว็บไซต์
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 บูลีน ต้องระบุ จักรยานถูกจองอยู่หรือไม่ โดยมีค่าดังนี้
  • หากจักรยานถูกจองอยู่ ให้ตั้งค่าเป็น true
  • หากไม่ได้จองจักรยานไว้ ให้ตั้งค่าเป็น false
bikes[].is_disabled บูลีน ต้องระบุ จักรยานปิดใช้งานหรือเสียอยู่หรือไม่ ดังนี้
  • หากจักรยานปิดใช้อยู่ ให้ตั้งค่าเป็น true
  • หากจักรยานไม่ได้ถูกปิดใช้ในขณะนี้ ให้ตั้งค่าเป็น false
bikes[].rental_uris วัตถุ ต้องระบุ ออบเจ็กต์ JSON ที่มี URI ของการเช่าสำหรับ Android, iOS และเว็บใน ฟิลด์ที่เกี่ยวข้อง
bikes[].rental_uris.android URI ต้องมีแบบมีเงื่อนไข URI ที่ส่งไปยังแอป Android ได้ด้วย android.intent.action.VIEW Intent ของ Android เพื่อรองรับ Deep Link ของ Android rental_urisที่ระบุต้องเป็น Android App Links เพื่อให้แอปที่ดูไม่ต้องจัดการ การเปลี่ยนเส้นทางของผู้ใช้ไปยัง App Store ด้วยตนเองในกรณีที่ ผู้ใช้ไม่ได้ติดตั้งแอปพลิเคชันของผู้ให้บริการ

URI นี้ต้องเป็น Deep Link ที่เฉพาะเจาะจงสำหรับจักรยานแต่ละคัน ไม่ใช่หน้าการเช่าทั่วไปที่มีข้อมูลสำหรับจักรยานมากกว่า 1 คัน Deep Link จะต้องนำผู้ใช้ไปยังจักรยานโดยตรงโดยไม่มีข้อความแจ้ง หน้าโฆษณาคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้เห็นจักรยานได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม

URI ไม่จำเป็นต้องมี bike_id สำหรับจักรยาน ตราบใดที่พาร์ทเนอร์มีวิธีอื่นในการระบุ จักรยานที่เกี่ยวข้อง เช่น แอปเช่าสามารถใช้ตัวระบุอื่นๆ ภายใน URI เพื่อระบุจักรยานที่ไม่ซ้ำกันได้

หากพาร์ทเนอร์มีแอปสำหรับเช่าบน Android คุณต้องระบุข้อมูลในช่องนี้

App Link ของ Android

ตัวอย่าง Android App Links

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

bikes[].rental_uris.ios URI ต้องมีแบบมีเงื่อนไข URI ที่ใช้ใน iOS เพื่อเปิดแอปเช่าจักรยานได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในบทความของ Apple เกี่ยวกับ รูปแบบ URL ที่กำหนดเองของ iOS rental_urisที่ระบุต้องเป็น Universal Link ของ iOS เพื่อให้แอปที่ดูไม่ต้องจัดการ การเปลี่ยนเส้นทางของผู้ใช้ไปยัง App Store ด้วยตนเองในกรณีที่ ผู้ใช้ไม่ได้ติดตั้งแอปพลิเคชันของผู้ให้บริการ

URI นี้ต้องเป็น Deep Link ที่เฉพาะเจาะจงสำหรับจักรยานแต่ละคัน ไม่ใช่หน้าการเช่าทั่วไปที่มีข้อมูลสำหรับจักรยานมากกว่า 1 คัน Deep Link จะต้องนำผู้ใช้ไปยังจักรยานโดยตรงโดยไม่มีข้อความแจ้ง หน้าโฆษณาคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้เห็นจักรยานได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม

URI ไม่จำเป็นต้องมี bike_id สำหรับจักรยาน ตราบใดที่พาร์ทเนอร์มีวิธีอื่นในการระบุจักรยานที่เกี่ยวข้อง เช่น แอปเช่าสามารถใช้ตัวระบุอื่นๆ ภายใน URI เพื่อระบุจักรยานแต่ละคันได้

หากพาร์ทเนอร์มีแอปเช่าบน iOS คุณต้องระบุข้อมูลในช่องนี้

ตัวอย่าง Universal Link ของ iOS

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

bikes[].rental_uris.web URL ไม่บังคับ

URL ที่เว็บเบราว์เซอร์ใช้แสดงข้อมูลเพิ่มเติม เกี่ยวกับการเช่ายานพาหนะนี้

URL นี้ต้องเป็น Deep Link ที่เฉพาะเจาะจงสำหรับจักรยานแต่ละคัน ไม่ใช่ หน้าการเช่าทั่วไปที่มีข้อมูลสำหรับจักรยานมากกว่า 1 คัน Deep Link จะต้องนำผู้ใช้ไปยังจักรยานโดยตรงโดยไม่มีข้อความแจ้ง หน้าโฆษณาคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้เห็นจักรยานได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม

URL ไม่จำเป็นต้องมี bike_id สำหรับจักรยาน หรือเป็นไปตามรูปแบบความหมายของ URL การเช่า สำหรับ Android หรือ iOS แอปเช่าสามารถใช้ตัวระบุอื่นๆ ภายใน URL ที่ระบุจักรยานแบบไม่ซ้ำกัน

หากไม่ได้ตั้งค่าช่องนี้ หมายความว่าเบราว์เซอร์เว็บไม่รองรับ Deep Link

ค่าตัวอย่าง:

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 อาร์เรย์ ต้องระบุ อาร์เรย์ของออบเจ็กต์ ซึ่งแต่ละออบเจ็กต์จะกำหนดประเภทยานพาหนะที่แตกต่างกัน ในแคตตาล็อกของผู้ให้บริการ มีออบเจ็กต์ได้เพียง 1 รายการสำหรับ ประเภทยานพาหนะที่กำหนด
vehicle_types[].vehicle_type_id รหัส ต้องระบุ ตัวระบุที่ไม่ซ้ำกันสำหรับประเภทยานพาหนะที่ระบุ
vehicle_types[].form_factor ค่าแจกแจง ต้องระบุ การแจงนับที่แสดงถึงรูปแบบทั่วไปของยานพาหนะจาก รายการค่าที่ถูกต้องในปัจจุบันต่อไปนี้
  • bicycle
  • scooter
  • other
vehicle_types[].propulsion_type ค่าแจกแจง ต้องระบุ การแจงนับที่แสดงถึงประเภทการขับเคลื่อนหลักของยานพาหนะจาก รายการค่าที่ถูกต้องในปัจจุบันต่อไปนี้
  • 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 ไม่บังคับ URL ที่นำผู้ใช้ปลายทางไปยังข้อมูลเพิ่มเติมเกี่ยวกับแพ็กเกจราคา
plans[].currency สตริง ต้องระบุ มาตรฐาน ISO 4217 สำหรับแพ็กเกจราคา
plans[].price ค่าทศนิยมที่ไม่เป็นลบ ต้องระบุ

ต้องกำหนดแพ็กเกจราคาเป็นแพ็กเกจราคาที่ไม่มีการให้คะแนนหรือ แพ็กเกจราคาที่มีการให้คะแนน

แพ็กเกจราคาที่ไม่มีการให้คะแนน

แพ็กเกจนี้เป็นราคาแบบเหมาจ่าย

ตั้งค่าฟิลด์ต่อไปนี้

  • price: ราคาคงที่ของการเดินทางทั้งหมด
แพ็กเกจราคาตามการใช้งาน

แพ็กเกจนี้เป็นราคาแบบอัตราเชิงเส้นแบบเป็นช่วงๆ

ตั้งค่าฟิลด์ต่อไปนี้

  • price: ราคาฐานซึ่งจะเรียกเก็บ เพียงครั้งเดียวต่อการเดินทาง

ตั้งค่าช่องใดช่องหนึ่งหรือทั้ง 2 ช่องต่อไปนี้

  • per_km_pricing: ราคาของการเดินทาง ที่ระบุในอัตราต่อกิโลเมตร
  • per_min_pricing: ราคาของการเดินทาง ที่ระบุในอัตราต่อนาที
plans[].per_km_pricing อาร์เรย์ ต้องมีแบบมีเงื่อนไข

หากราคาเป็นฟังก์ชันของระยะทางที่เดินทางและแสดงเป็นกิโลเมตร คุณต้องระบุฟิลด์นี้

อาร์เรย์ของออบเจ็กต์ที่แต่ละออบเจ็กต์กำหนด กลุ่มที่แบ่งตามระยะทางที่กำหนด ค่า start ของแต่ละกลุ่มต้อง น้อยกว่าหรือเท่ากับค่า start ของกลุ่มถัดไป

หากต้องการทราบราคารวมของแพ็กเกจที่ระบุ ให้เพิ่มค่า plans[].price ของแพ็กเกจที่ระบุลงในราคาที่เกิดขึ้นสำหรับกลุ่มใน plans[].per_km_pricing และ plans[].per_min_pricing

หากไม่ได้ตั้งค่าฟิลด์นี้ จะไม่มีราคาผันแปรตามระยะทาง และจะไม่มีการรวมราคาผันแปรเป็นส่วนหนึ่งของราคารวม

plans[].per_km_pricing[].start จำนวนเต็มที่ไม่เป็นลบ ต้องระบุ จำนวนกิโลเมตรที่ระบบจะเริ่มเรียกเก็บเงินตามอัตราของกลุ่ม ฟิลด์นี้ตั้งค่าเป็นค่าที่รวม ซึ่งเริ่มต้นช่วงของกลุ่ม ดังนั้น เมื่อครบจำนวนกิโลเมตรแล้ว ระบบจะเรียกเก็บเงิน rate เพียงครั้งเดียว
plans[].per_km_pricing[].rate ทศนิยม ต้องระบุ อัตราที่เรียกเก็บสำหรับแต่ละ interval ซึ่งเริ่มต้นที่ start ของกลุ่ม (รวม) หากตั้งค่าช่องนี้เป็น ตัวเลขติดลบ ผู้เดินทางจะได้รับส่วนลด
plans[].per_km_pricing[].interval จำนวนเต็มที่ไม่เป็นลบ ต้องระบุ

ระยะห่างเป็นกิโลเมตรที่ระบบจะใช้rateของ กลุ่มอีกครั้งอย่างไม่มีกำหนด เว้นแต่จะตั้งค่าend ของกลุ่มเป็นจำนวนเต็มที่ไม่เป็นลบ

ระบบจะใช้ rate อีกครั้งเมื่อเริ่มต้นแต่ละinterval และจะไม่พิจารณาการปัดเศษระยะทาง

หากตั้งค่า end ของกลุ่มเป็นจำนวนเต็มที่ไม่เป็นลบ ระบบจะใช้ rate ของกลุ่มอีกครั้งจนถึงค่า end ของกลุ่ม แต่จะไม่รวมค่าดังกล่าว

หากตั้งค่าฟิลด์นี้เป็น 0 ระบบจะเรียกเก็บเงินจาก rate เพียงครั้งเดียวที่ start ของกลุ่ม

plans[].per_km_pricing[].end จำนวนเต็มที่ไม่เป็นลบ ไม่บังคับ

จำนวนกิโลเมตร ณ จุดที่ระบบจะไม่ใช้rateกับ กลุ่มอีกต่อไป ฟิลด์นี้ตั้งค่าเป็นค่าเฉพาะ ที่สิ้นสุดช่วงของกลุ่ม ตัวอย่างเช่น หากตั้งค่า end เป็น 40 rate จะไม่มีผลที่ระยะ 40 กิโลเมตรอีกต่อไป

หากไม่ได้ตั้งค่าฟิลด์นี้หรือฟิลด์นี้ว่างเปล่า ระบบจะเรียกเก็บเงิน rate สำหรับ กลุ่มจนกว่าการเดินทางจะสิ้นสุด นอกเหนือจากกลุ่ม เพิ่มเติมที่ตามมา

plans[].per_min_pricing อาร์เรย์ ต้องมีแบบมีเงื่อนไข

หากราคาเป็นฟังก์ชันของเวลาที่ผ่านไป ซึ่งแสดงเป็นนาที คุณต้องระบุข้อมูลในฟิลด์นี้

อาร์เรย์ของออบเจ็กต์ที่แต่ละออบเจ็กต์กำหนดกลุ่มที่แบ่งตามเวลาที่ระบุ ค่า start ของแต่ละกลุ่มต้องน้อยกว่าหรือ เท่ากับค่า start ของกลุ่มถัดไป

หากต้องการทราบราคารวมของแพ็กเกจที่ระบุ ให้เพิ่มค่า plans[].price ของแพ็กเกจที่ระบุลงในราคาที่เกิดขึ้นสำหรับกลุ่มใน plans[].per_km_pricing และ plans[].per_min_pricing

หากไม่ได้ตั้งค่าฟิลด์นี้ จะไม่มีราคาผันแปรตามเวลา และ จึงไม่มีการรวมราคาผันแปรเป็นส่วนหนึ่งของราคารวม

plans[].per_min_pricing[].start ทศนิยม ต้องระบุ จำนวนนาทีที่ระบบเริ่มเรียกเก็บเงินตามอัตราของกลุ่ม ฟิลด์นี้ตั้งค่าเป็นค่าที่รวม ซึ่งเริ่มต้นช่วงของกลุ่ม ดังนั้น เมื่อเวลาผ่านไปตามจำนวนนาทีที่ตั้งไว้ ระบบจะเรียกเก็บเงินจากคุณ rate ครั้งเดียว
plans[].per_min_pricing[].rate ทศนิยม ต้องระบุ อัตราที่เรียกเก็บสำหรับ interval แต่ละรายการ โดยอัตราจะเริ่ม ที่ start ของกลุ่ม ซึ่งรวมถึงอัตราดังกล่าวด้วย หากตั้งค่าช่องนี้เป็น ตัวเลขติดลบ ผู้เดินทางจะได้รับส่วนลด
plans[].per_min_pricing[].interval จำนวนเต็มที่ไม่เป็นลบ ต้องระบุ

ช่วงเวลาเป็นนาทีที่ระบบจะใช้ rate ของ กลุ่มอีกครั้งอย่างไม่มีกำหนด เว้นแต่จะตั้งค่า end ของกลุ่มเป็นจำนวนเต็มที่ไม่ใช่ค่าลบ

ระบบจะrateอีกครั้งเมื่อเริ่มintervalแต่ละรายการ และจะไม่พิจารณาการปัดเวลาเดินทาง

หากตั้งค่า end ของกลุ่มเป็นจำนวนเต็มที่ไม่เป็นลบ ระบบจะใช้ rate ของกลุ่มอีกครั้งจนถึงค่า end ของกลุ่ม แต่จะไม่รวมค่าดังกล่าว

หากตั้งค่าฟิลด์นี้เป็น 0 ระบบจะเรียกเก็บเงินจาก rate เพียงครั้งเดียวที่ start ของกลุ่ม

plans[].per_min_pricing[].end จำนวนเต็มที่ไม่เป็นลบ ไม่บังคับ

จำนวนนาทีที่ระบบจะไม่ใช้rateสำหรับ กลุ่มอีกต่อไป ฟิลด์นี้ตั้งค่าเป็นค่าเฉพาะ ที่สิ้นสุดช่วงของกลุ่ม ตัวอย่างเช่น หากตั้งค่า end เป็น 20 rate จะไม่มีผลอีกต่อไปที่ 20 นาที

หากไม่ได้ตั้งค่าฟิลด์นี้หรือฟิลด์นี้ว่างเปล่า ระบบจะเรียกเก็บเงินrateสำหรับกลุ่มจนกว่าการเดินทางจะสิ้นสุด นอกเหนือจากกลุ่มเพิ่มเติมที่ตามมา

ตัวอย่างสำหรับ system_pricing_plans.json

ส่วนนี้มีsystem_pricing_plans.jsonตัวอย่างโค้ดที่ให้ข้อมูล นอกจากนี้ เรายังระบุรายละเอียดและผลลัพธ์ที่เกี่ยวข้องของแต่ละ ตัวอย่างด้วย

ตัวอย่าง 1 สำหรับ system_pricing_plans.json

ตัวอย่างโค้ดแพ็กเกจราคาต่อไปนี้แสดงค่าบริการตามระยะเวลาการเดินทางสำหรับ ช่วงเวลาต่อไปนี้

  • [0,1): $2 USD
    • หากการเดินทางใช้เวลาน้อยกว่า 1 นาที ผู้ใช้จะชำระเงิน 2 USD
    • ตัวอย่าง: การเดินทาง 59 วินาที
  • [1,2): $3 USD
    • หากการเดินทางนานตั้งแต่ 1 นาทีขึ้นไปแต่ไม่ถึง 2 นาที ผู้ใช้จะจ่าย $2 + $1 = $3 USD
    • ตัวอย่าง: การเดินทาง 1 นาที การเดินทาง 1 นาที 45 วินาที
  • x จำนวนนาทีที่ x มากกว่าหรือเท่ากับ 2: $3 + (($2 + $1) * (x - 2 + 1)) USD
    • หากการเดินทางนานกว่าหรือเท่ากับ 2 นาที ผู้ใช้จะชำระเงิน $3 สำหรับ การเดินทางที่ใช้เวลาน้อยกว่า 2 นาที และ ($1 [ต่อเนื่อง จากรายการแรกของper_min_pricing] + $2 [รายการที่สองของper_min_pricing]) สำหรับทุกๆ นาทีหลังจากนั้นและ รวมถึง 2 นาที
    • ตัวอย่าง
      • การเดินทาง 2 นาทีมีค่าใช้จ่าย 90 บาท + (60 บาท + 30 บาท) = 180 บาท
      • ค่าเดินทาง 2 นาที 30 วินาที = 90 บาท + (60 บาท + 30 บาท) = 180 บาท
      • ค่าโดยสารสำหรับการเดินทาง 3 นาที = 90 บาท + ((60 บาท + 30 บาท) * 2) = 270 บาท
      • ค่าเดินทาง 10 นาที = 90 บาท + ((60 บาท + 30 บาท) * 9) = 900 บาท
{
  "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 CAD ต่อกม.รวมถึง $0.50 CAD ต่อนาที
  • อัตราทั้ง 2 นี้เกิดขึ้นพร้อมกันและไม่ได้ขึ้นอยู่กับกันและกัน
  • ดังนั้น การเดินทาง 1 กิโลเมตรที่ใช้เวลา 10 นาทีจะมีค่าใช้จ่าย 9 ดอลลาร์แคนาดา โดยรายละเอียดค่าใช้จ่ายมีดังนี้
    • $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 ตามต้องการ

ฟีดนี้กำหนดข้อมูลรั้วภูมิศาสตร์สำหรับยานพาหนะที่แยกต่างหาก ข้อมูล Geofencing ประกอบด้วยขอบเขตทางภูมิศาสตร์ที่ระบุตำแหน่งที่อนุญาตให้ยานพาหนะ เริ่มและสิ้นสุดการเดินทาง รวมถึงความเร็วที่ยานพาหนะ สามารถใช้ได้ ความเร็วนี้คือความเร็วสูงสุดของยานพาหนะหรือขีดจำกัดความเร็ว ของถนนที่ยานพาหนะอยู่ แล้วแต่ว่าความเร็วใดต่ำกว่า ผู้ขับขี่ต้องปฏิบัติตาม กฎหมายและกฎหมายท้องถิ่น

เราใช้ข้อมูลนี้เพื่อให้เมื่อผู้ใช้ค้นหาเส้นทางหนึ่งๆ หากจุดสิ้นสุดของ การเดินทางอยู่นอกรั้วเสมือนที่เฉพาะเจาะจง ระบบจะกรองผลลัพธ์ของไมโครโมบิลิตี้ออก หากไม่ได้ระบุรั้วกั้นทางภูมิศาสตร์ Google จะถือว่าบริการไม่มีข้อจำกัดด้านขอบเขต

ชื่อช่อง ประเภท ข้อกำหนด คำอธิบาย
geofencing_zones วัตถุ ต้องระบุ ออบเจ็กต์ FeatureCollection ตามที่อธิบายไว้ใน IETF RFC 7946 คือออบเจ็กต์ที่มีฟิลด์ชื่อ features ค่าของ features คืออาร์เรย์ JSON แต่ละองค์ประกอบของอาร์เรย์ JSON คือออบเจ็กต์ Feature

เขตแดนทางภูมิศาสตร์แต่ละเขต กฎและแอตทริบิวต์ที่เกี่ยวข้อง รวมถึง คำจำกัดความของ FeatureCollection จะระบุไว้ที่นี่เป็นส่วนหนึ่งของคำจำกัดความฟีด geofencing_zones.json

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 Multipolygon ที่อธิบายถึงจุดที่ไม่สามารถเริ่ม สิ้นสุด หรือผ่านการเดินทาง รวมถึงข้อจำกัดอื่นๆ การจัดเรียงจุดตามเข็มนาฬิกา จะกำหนดพื้นที่ที่ล้อมรอบด้วยรูปหลายเหลี่ยม ส่วนการจัดเรียง ทวนเข็มนาฬิกาจะกำหนดพื้นที่ภายนอกรูปหลายเหลี่ยม ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่ กฎมือขวา
geofencing_zones.features[].properties วัตถุ ต้องระบุ ออบเจ็กต์ที่กำหนดค่าเผื่อการเดินทางและข้อจำกัด
geofencing_zones.features[].properties.rules อาร์เรย์ ไม่บังคับ อาร์เรย์ของออบเจ็กต์ โดยแต่ละออบเจ็กต์จะกำหนดกฎเพียงข้อเดียว หาก กฎ 2 ข้อขึ้นไปทับซ้อนกัน ขัดแย้งกัน หรือขัดแย้งกันในลักษณะอื่นๆ กฎที่กำหนดไว้เร็วที่สุดในลำดับของไฟล์ 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 ต้องเป็นไปตามป้ายที่ใช้ ในสถานี (หากมี) หรือต้องแสดงถึง สถานที่ตั้งของสถานีโดยใช้ถนนตัดกันหรือสถานที่สำคัญในท้องถิ่น อย่าใช้ตัวย่อ เช่น "St." สำหรับ "Street" เว้นแต่จะมีการใช้ในป้ายอย่างชัดเจน และ name ต้องเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ผสมกัน ตามธรรมเนียมท้องถิ่นสำหรับการใช้อักษรตัวพิมพ์ใหญ่ในชื่อสถานที่และไม่ใช่ ตัวพิมพ์ใหญ่ทั้งหมด
stations[].lat ละติจูด ต้องระบุ ละติจูด WGS 84 ของสถานีในรูปแบบองศาทศนิยม
stations[].lon ลองจิจูด ต้องระบุ ลองจิจูด WGS 84 ของสถานีในรูปแบบองศาทศนิยม
stations[].capacity จำนวนเต็มที่ไม่เป็นลบ ไม่บังคับ จำนวนเต็มที่ไม่เป็นลบซึ่งแสดงจำนวนจุดเทียบท่าทั้งหมดที่ติดตั้งในสถานี ทั้งที่พร้อมใช้งานและไม่พร้อมใช้งาน
stations[].rental_uris วัตถุ ต้องระบุ

ออบเจ็กต์ JSON ที่มี URI ของการเช่าสำหรับ Android, iOS และเว็บใน ฟิลด์ที่เกี่ยวข้อง

หากระบุ URI เหล่านี้ URI จะลบล้าง Deep Link เริ่มต้นที่ตั้งค่าไว้เมื่อมีการเริ่มต้นใช้งานผู้ให้บริการ

stations[].rental_uris.android URI ต้องมีแบบมีเงื่อนไข

URI ที่ส่งไปยังแอป Android ได้ด้วย android.intent.action.VIEW Intent ของ Android เพื่อรองรับ Deep Link ของ Android rental_urisที่ระบุต้องเป็น App Links ของ Android เพื่อให้แอปที่ดูไม่ต้องจัดการการเปลี่ยนเส้นทางของผู้ใช้ไปยัง App Store ด้วยตนเอง ในกรณีที่ผู้ใช้ไม่ได้ติดตั้งแอปพลิเคชันของผู้ให้บริการ

URI นี้ต้องเป็น Deep Link ที่เจาะจงสถานีแต่ละแห่ง ไม่ใช่หน้าเช่าทั่วไปที่มีข้อมูลสำหรับสถานีมากกว่า 1 แห่ง Deep Link ต้องนำผู้ใช้ไปยังสถานีโดยตรง โดยไม่มีข้อความแจ้ง หน้าคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้ เห็นสถานีได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม

URI ไม่จำเป็นต้องมี station_id สำหรับสถานี ตราบใดที่พาร์ทเนอร์มีวิธีอื่นในการระบุ สถานีที่เกี่ยวข้อง เช่น แอปเช่าสามารถใช้ตัวระบุอื่นๆ ภายใน URI เพื่อระบุสถานีที่ไม่ซ้ำกันได้

หากพาร์ทเนอร์มีแอปสำหรับเช่าบน Android คุณต้องระบุข้อมูลในช่องนี้

ตัวอย่าง Android App Links

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

stations[].rental_uris.ios URI ต้องมีแบบมีเงื่อนไข

URI ที่ใช้ใน iOS เพื่อเปิดแอปเช่าสำหรับสถานีได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในบทความของ Apple เกี่ยวกับ รูปแบบ URL ที่กำหนดเองของ iOS rental_urisที่ระบุต้องเป็น Universal Link ของ iOS เพื่อให้แอปที่ดูไม่ต้องจัดการการเปลี่ยนเส้นทางของผู้ใช้ไปยัง App Store ด้วยตนเอง ในกรณีที่ผู้ใช้ไม่ได้ติดตั้งแอปพลิเคชันของผู้ให้บริการ

URI นี้ต้องเป็น Deep Link ที่เจาะจงสถานีแต่ละแห่ง ไม่ใช่หน้าเช่าทั่วไปที่มีข้อมูลสำหรับสถานีมากกว่า 1 แห่ง Deep Link ต้องนำผู้ใช้ไปยังสถานีโดยตรง โดยไม่มีข้อความแจ้ง หน้าคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้ เห็นสถานีได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม

URI ไม่จำเป็นต้องมี station_id สำหรับสถานี แอปเช่าสามารถใช้ตัวระบุอื่นๆ ภายใน URI เพื่อ ระบุสถานีที่ไม่ซ้ำกันได้

หากพาร์ทเนอร์มีแอปเช่าบน iOS คุณต้องระบุข้อมูลในช่องนี้

ตัวอย่าง Universal Link ของ iOS

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

stations[].rental_uris.web URL ไม่บังคับ

URL ที่เว็บเบราว์เซอร์ใช้เพื่อแสดงข้อมูลเพิ่มเติม เกี่ยวกับวิธีเช่ายานพาหนะที่สถานีนี้

URL นี้ต้องเป็น Deep Link ที่เฉพาะเจาะจงสำหรับสถานีแต่ละแห่ง ไม่ใช่หน้าเช่าทั่วไปที่มีข้อมูลสำหรับสถานีมากกว่า 1 แห่ง Deep Link ต้องนำผู้ใช้ไปยังสถานีโดยตรงโดยไม่มีข้อความแจ้ง หน้าโฆษณาคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้เห็นสถานีได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม

คุณไม่จำเป็นต้องใส่ station_id สำหรับสถานีใน URL หรือทำตามรูปแบบความหมายของ URL การเช่าสำหรับ Android หรือ iOS แอปเช่าสามารถใช้ตัวระบุอื่นๆ ภายใน URL ที่ระบุสถานีแบบไม่ซ้ำกันได้

หากไม่ได้ตั้งค่าช่องนี้ หมายความว่าเว็บเบราว์เซอร์ไม่รองรับ Deep Link

ค่าตัวอย่าง:

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 อาร์เรย์ ต้องระบุ อาร์เรย์ของออบเจ็กต์ โดยแต่ละออบเจ็กต์จะกำหนดสถานีเพียง 1 สถานีเท่านั้น
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 จำนวนเต็มที่ไม่เป็นลบ ต้องระบุ

จำนวนยานพาหนะทั้งหมดที่พร้อมให้บริการสำหรับ vehicle_type_id ที่เกี่ยวข้องในสถานีตามที่กำหนดไว้ใน vehicle_types.json

stations[].num_docks_available จำนวนเต็มที่ไม่เป็นลบ ต้องมีแบบมีเงื่อนไข

ต้องระบุช่องนี้ เว้นแต่สถานีจะมีขีดจำกัดในการจอด ไม่จำกัด เช่น สถานีเสมือนมีความจุในการเทียบท่าไม่จำกัด และไม่ต้องระบุฟิลด์นี้

จำนวนเต็มที่ไม่เป็นลบซึ่งแสดงจำนวนแท่นจอดที่ใช้งานได้ทั้งหมด ที่สถานีซึ่งรับคืนยานพาหนะได้

หากต้องการตรวจสอบว่าสถานีรับคืนจักรยานหรือไม่ คุณต้องตรวจสอบฟิลด์ is_returning ของสถานีและค้นหาค่าบูลีน true

stations[].is_installed บูลีน ต้องระบุ

บูลีนที่ระบุว่าสถานีอยู่บนถนนและติดตั้งแล้วหรือไม่ ในขณะนี้

หากติดตั้งสถานีบนถนน ให้ตั้งค่าเป็น true

หากไม่ได้ติดตั้งสถานีบนถนน ให้ตั้งค่าเป็น false

stations[].is_renting บูลีน ต้องระบุ

บูลีนที่ระบุว่าสถานีให้เช่าจักรยานในปัจจุบันหรือไม่

หากปัจจุบันสถานีให้เช่าจักรยาน ให้ตั้งค่าเป็น true แม้ว่า สถานีจะว่างเปล่า แต่หากตั้งค่าให้เช่าได้ is_renting จะตั้งค่าเป็น true

หากปัจจุบันสถานีไม่ได้ให้เช่าจักรยาน ให้ตั้งค่าเป็น false

stations[].is_returning บูลีน ต้องระบุ

บูลีนที่ระบุว่าสถานีรับคืนจักรยานในขณะนี้หรือไม่ ค่าเป็นจริง

หากสถานีรับคืนจักรยานในขณะนี้ ให้ตั้งค่าเป็น true แม้ว่าสถานีจะเต็ม แต่จะอนุญาตให้คืนได้หากสถานีไม่เต็ม is_returning จะตั้งค่าเป็น true

หากสถานีไม่รับคืนจักรยานในขณะนี้ ให้ตั้งค่าเป็น false

ตัวอย่างของ 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
        },
]