Sebelum melanjutkan bagian ini, jika Anda belum melakukannya, verifikasi sistem mobilitas mikro yang didukung yang Anda buat feed-nya.
Di bagian berikut, setiap header memiliki format berikut:
Required|Optional|Conditionally required: Feed name (System supported)
. Sistem
berikut didukung:
- Sistem yang terpasang ke dok
- Sistem tanpa dok
- Sistem dengan dan tanpa stasiun
Agar berhasil terintegrasi dengan Google, berikan hanya file yang diperlukan untuk sistem yang dijelaskan feed Anda, dan tentukan kolom wajib diisi yang disertakan dalam bagian yang relevan. Untuk kolom yang wajib bersyarat, lihat deskripsi kolom untuk mendapatkan panduan. Anda juga dapat menentukan kolom opsional yang menambahkan informasi dan memberikan pengalaman pengguna yang lebih baik.
Header yang diperlukan untuk feed Micromobility
Feed mobilitas mikro adalah feed yang berisi data terstruktur Mobilitas mikro berdok atau tanpa dok seperti yang ditentukan dalam artikel ini.
Semua feed harus selalu menentukan kolom yang disertakan dalam tabel berikut di tingkat teratas objek JSON, yang secara kolektif dikenal sebagai header GBFS umum.
Nama kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
last_updated |
Stempel waktu | Wajib | Stempel waktu POSIX, yang menentukan jumlah detik sejak 1 Januari 1970 00.00.00 UTC.
Disetel ke waktu terakhir kali data di feed diperbarui. |
ttl |
Bilangan bulat non-negatif | Wajib | Bilangan bulat non-negatif yang menunjukkan jumlah detik yang
tersisa hingga saatnya memperbarui feed.
Jika data harus diupdate pada kecepatan konstan, tetapkan nilai ini ke
|
data |
JSON | Wajib | JSON yang berisi kolom data untuk setiap feed. |
Misalnya, feed free_bike_status.json
gabungan yang menentukan
header GBFS umum, mungkin seperti berikut:
{
"ttl": 30,
"last_updated": 1576123774,
"data": {
"bikes": [ ... ] // GBFS free bike status objects.
}
}
Wajib: system_information.json (Sistem terpasang ke dok dan tidak terpasang ke dok)
Lihat spesifikasi GBFS jika diperlukan.
Feed ini memberikan detail terkait operator sistem.
Nama kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
system_id |
ID | Wajib | ID unik global untuk sistem berbagi kendaraan. Nilai ini dimaksudkan untuk tetap sama selama masa pakai sistem. Setiap sistem atau area geografis berbeda tempat kendaraan beroperasi HARUS memiliki system_id sendiri. ID sistem HARUS dapat dikenali sebagai milik sistem tertentu, bukan string acak - misalnya, bcycle_austin atau biketown_pdx. |
name |
String | Wajib | Nama sistem, yang ditampilkan kepada pelanggan. |
rental_apps |
Objek | Wajib | Objek JSON yang berisi informasi aplikasi penyewaan untuk Android dan iOS di kolom masing-masing. |
rental_apps.android |
Objek | Wajib bersyarat |
Berisi informasi download aplikasi rental dan penemuan aplikasi untuk platform Android di kolom store_uri dan discovery_uri . Jika penyedia sistem memiliki aplikasi rental Android, kolom ini
wajib diisi.
|
rental_apps.android.store_uri |
URI | Wajib | URI tempat aplikasi Android sewaan dapat didownload. Ini biasanya merupakan URI ke app store seperti Google Play. Jika URI mengarah ke app store seperti Google Play, sebaiknya URI mengikuti praktik terbaik Android sehingga aplikasi penayangan dapat langsung membuka URI ke aplikasi app store native , bukan situs. |
rental_apps.android.discovery_uri |
URI | Wajib | URI yang memiliki bentuk your_custom_scheme://your/path/here .
URI dapat digunakan oleh PackageManager.queryIntentActivities()
untuk mengetahui apakah aplikasi Android rental diinstal di perangkat.
|
rental_apps.ios |
Objek | Wajib bersyarat | Berisi informasi download aplikasi rental dan penemuan aplikasi untuk platform iOS di kolom store_uri dan discovery_uri . Jika penyedia sistem memiliki aplikasi sewa iOS, kolom ini
wajib diisi.
|
rental_apps.ios.store_uri |
URI | Wajib | URI tempat aplikasi iOS rental dapat didownload. Ini biasanya berupa URI ke app store seperti Apple App Store. Jika URI mengarah ke app store seperti Apple App Store, sebaiknya URI mengikuti praktik terbaik iOS sehingga aplikasi penayangan dapat langsung membuka URI ke aplikasi app store native, bukan situs. |
rental_apps.ios.discovery_uri |
URI | Wajib | URI yang memiliki bentuk your_custom_scheme:// . URI dapat
digunakan oleh UIApplication canOpenURL: untuk mengetahui apakah
aplikasi iOS rental diinstal di perangkat.
|
Wajib: free_bike_status.json (Sistem tanpa dok)
Lihat spesifikasi GBFS jika diperlukan.
Feed ini menentukan lokasi dan atribut untuk kendaraan yang tersedia dan berdiri sendiri. Untuk alasan privasi, kendaraan yang merupakan bagian dari penyewaan aktif tidak boleh muncul di feed ini.
Nama kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
bikes |
Array | Wajib | Array sepeda yang saat ini tersedia dan dihentikan, dengan setiap sepeda adalah objek. |
bikes[].bike_id |
ID | Wajib | ID sepeda.
Untuk melindungi privasi, ID dapat diubah menjadi string acak setelah setiap perjalanan. |
bikes[].lat |
Lintang | Wajib | Lintang WGS 84 sepeda, dalam format derajat desimal. |
bikes[].lon |
Bujur | Wajib | Bujur WGS 84 sepeda, dalam format derajat desimal. |
bikes[].is_reserved |
Boolean | Wajib | Apakah sepeda saat ini dipesan, sebagai berikut:
|
bikes[].is_disabled |
Boolean | Wajib | Apakah sepeda saat ini dinonaktifkan atau rusak, sebagai berikut:
|
bikes[].rental_uris |
Objek | Wajib | Objek JSON yang berisi URI sewa untuk Android, iOS, dan web di kolom masing-masing. |
bikes[].rental_uris.android |
URI | Wajib bersyarat | URI yang dapat diteruskan ke aplikasi Android dengan intent Android android.intent.action.VIEW untuk mendukung
Deep Link Android. rental_uris yang diberikan harus berupa
Link Aplikasi Android sehingga aplikasi penayangan tidak perlu mengelola pengalihan pengguna ke app store secara manual jika pengguna tidak menginstal aplikasi penyedia.
URI ini harus berupa deep link khusus untuk setiap sepeda, bukan halaman penyewaan umum yang menyertakan informasi untuk lebih dari satu sepeda. Deep link harus mengarahkan pengguna langsung ke sepeda tanpa konfirmasi, halaman interstisial, atau login. Pastikan pengguna dapat melihat sepeda, meskipun mereka belum pernah membuka aplikasi. URI tidak harus menyertakan Jika partner memiliki aplikasi penyewaan Android, kolom ini wajib diisi. Contoh Link Aplikasi Android:
|
bikes[].rental_uris.ios |
URI | Wajib bersyarat | URI yang dapat digunakan di iOS untuk meluncurkan aplikasi penyewaan sepeda.
Untuk mengetahui informasi selengkapnya tentang hal ini, lihat artikel Apple tentang
skema URL kustom iOS.
rental_uris yang diberikan harus berupa
Link Universal iOS sehingga aplikasi penayangan tidak perlu mengelola pengalihan pengguna ke app store secara manual jika pengguna tidak menginstal aplikasi penyedia.
URI ini harus berupa deep link khusus untuk setiap sepeda, bukan halaman penyewaan umum yang menyertakan informasi untuk lebih dari satu sepeda. Deep link harus mengarahkan pengguna langsung ke sepeda tanpa konfirmasi, halaman interstisial, atau login. Pastikan pengguna dapat melihat sepeda, meskipun mereka belum pernah membuka aplikasi. URI tidak harus menyertakan bike_id untuk sepeda, asalkan partner memiliki cara lain untuk mengidentifikasi sepeda yang bersangkutan. Misalnya, aplikasi penyewaan dapat menggunakan ID lain dalam URI untuk mengidentifikasi sepeda secara unik. Jika partner memiliki aplikasi rental iOS, kolom ini wajib diisi. Contoh Link Universal iOS:
|
bikes[].rental_uris.web |
URL | Opsional | URL yang dapat digunakan oleh browser web untuk menampilkan informasi selengkapnya tentang penyewaan kendaraan di lokasi ini. URL ini harus berupa deep link khusus untuk setiap sepeda, bukan halaman penyewaan umum yang menyertakan informasi untuk lebih dari satu sepeda. Deep link harus mengarahkan pengguna langsung ke sepeda tanpa konfirmasi, halaman interstisial, atau login. Pastikan pengguna dapat melihat sepeda, meskipun mereka belum pernah membuka aplikasi. URL tidak harus menyertakan Jika kolom ini tidak disetel, berarti deep link tidak didukung untuk browser web. Nilai contoh:
|
bikes[].vehicle_type_id |
ID | Wajib | vehicle_type_id kendaraan seperti yang dijelaskan di bagian
vehicle_types.json .
|
bikes[].pricing_plan_id |
ID | Wajib | ID paket harga yang diterapkan saat jenis kendaraan ini disewa seperti yang dijelaskan di bagian
system_pricing_plans.json .
|
bikes[].current_range_meters |
Bilangan mengambang non-negatif | Wajib bersyarat | Jika definisi vehicle_type yang sesuai dengan
kendaraan memiliki motor, kolom ini wajib diisi.
Disetel ke jarak terjauh dalam meter yang dapat ditempuh kendaraan tanpa perlu mengisi ulang daya atau bahan bakar, mengingat tingkat pengisian daya atau bahan bakar kendaraan saat ini. |
bikes[].last_reported |
Stempel waktu | Opsional | Disetel ke waktu terakhir kali kendaraan melaporkan statusnya ke backend operator. |
Berikut adalah contoh untuk 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
}
]
Wajib: vehicle_types.json (Sistem dengan dok dan tanpa dok)
Lihat spesifikasi GBFS jika diperlukan.
Feed ini menentukan detail setiap jenis kendaraan, seperti yang dirujuk di bagian
free_bike_status.json
.
Nama kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
vehicle_types |
Array | Wajib | Array objek, dengan setiap objek menentukan jenis kendaraan yang berbeda dalam katalog penyedia. Hanya boleh ada satu objek untuk jenis kendaraan tertentu. |
vehicle_types[].vehicle_type_id |
ID | Wajib | ID unik untuk jenis kendaraan tertentu. |
vehicle_types[].form_factor |
Enum | Wajib | Enum yang mewakili faktor bentuk umum kendaraan, dari
daftar nilai yang saat ini valid berikut:
|
vehicle_types[].propulsion_type |
Enum | Wajib | Enum yang merepresentasikan jenis propulsi utama kendaraan, dari
daftar nilai yang saat ini valid berikut:
|
vehicle_types[].max_range_meters |
Bilangan mengambang non-negatif | Wajib bersyarat | Jika propulsion_type tidak disetel ke human , maka
kendaraan memiliki motor, sehingga kolom ini wajib diisi.
Disetel ke jarak terjauh dalam meter yang dapat ditempuh kendaraan tanpa perlu mengisi ulang daya atau bahan bakar, saat kendaraan terisi penuh daya atau bahan bakar. |
Berikut adalah contoh untuk 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
}
]
Wajib: system_pricing_plans.json (Sistem tanpa stasiun pengisian daya)
Lihat spesifikasi GBFS jika diperlukan.
Feed ini menentukan paket harga untuk kendaraan yang berdiri sendiri. Kami mewajibkan penyedia menampilkan informasi harga untuk kendaraan yang berdiri sendiri.
Nama kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
plans |
Array | Wajib | Array objek yang setiap objeknya menentukan paket harga tertentu. |
plans[].plan_id |
ID | Wajib | String yang merepresentasikan ID unik untuk paket harga tertentu yang ditawarkan penyedia. |
plans[].url |
URL | Opsional | URL yang mengarahkan pengguna akhir ke informasi selengkapnya tentang paket harga. |
plans[].currency |
String | Wajib | Standar ISO 4217 untuk paket harga. |
plans[].price |
Bilangan mengambang non-negatif | Wajib |
Paket harga harus ditentukan sebagai paket harga tanpa tarif atau paket harga dengan tarif:
|
plans[].per_km_pricing |
Array | Wajib bersyarat |
Jika harga adalah fungsi dari jarak yang ditempuh, ditampilkan dalam kilometer, kolom ini wajib diisi. Array objek yang setiap objeknya menentukan segmen yang dibagi berdasarkan jarak tertentu. Nilai Untuk menentukan harga total paket yang diberikan, tambahkan nilai Jika kolom ini tidak ditetapkan, tidak ada harga variabel berdasarkan jarak dan oleh karena itu, tidak ada yang disertakan sebagai bagian dari total harga. |
plans[].per_km_pricing[].start |
Bilangan bulat non-negatif | Wajib |
Jumlah kilometer saat tarif segmen mulai ditagih.
Kolom ini ditetapkan ke
nilai inklusif
yang memulai rentang segmen. Jadi, setelah jumlah kilometer
ditempuh, rate ditagih satu kali.
|
plans[].per_km_pricing[].rate |
Float | Wajib | Tarif yang dikenakan untuk setiap interval , yang dimulai pada
start inklusif segmen. Jika kolom ini ditetapkan ke
angka negatif, pelancong akan menerima diskon.
|
plans[].per_km_pricing[].interval |
Bilangan bulat non-negatif | Wajib |
Interval dalam kilometer saat
Jika Jika kolom ini ditetapkan ke |
plans[].per_km_pricing[].end |
Bilangan bulat non-negatif | Opsional |
Jumlah kilometer saat Jika kolom ini tidak disetel atau kosong, |
plans[].per_min_pricing |
Array | Wajib bersyarat |
Jika harga adalah fungsi dari waktu yang berlalu, ditampilkan dalam menit, maka kolom ini wajib diisi. Array objek yang setiap objeknya menentukan segmen yang dibagi menurut waktu tertentu. Nilai Untuk menentukan harga total paket yang diberikan, tambahkan nilai Jika kolom ini tidak ditetapkan, tidak ada harga variabel berdasarkan waktu dan oleh karena itu, tidak ada harga yang disertakan sebagai bagian dari total harga. |
plans[].per_min_pricing[].start |
Float | Wajib |
Jumlah menit saat tarif segmen mulai ditagih.
Kolom ini ditetapkan ke
nilai inklusif
yang memulai rentang segmen. Oleh karena itu, setelah jumlah menit yang ditetapkan
berlalu, rate akan ditagih satu kali.
|
plans[].per_min_pricing[].rate |
Float | Wajib | Tarif yang dikenakan untuk setiap interval . Tarif dimulai
pada start inklusif segmen. Jika kolom ini ditetapkan
ke angka negatif, pelancong akan menerima diskon.
|
plans[].per_min_pricing[].interval |
Bilangan bulat non-negatif | Wajib |
Interval dalam menit saat
Jika Jika kolom ini ditetapkan ke |
plans[].per_min_pricing[].end |
Bilangan bulat non-negatif | Opsional |
Jumlah menit saat Jika kolom ini tidak disetel atau kosong, |
Contoh untuk system_pricing_plans.json
Bagian ini memberikan contoh kode system_pricing_plans.json
yang informatif. Detail dan hasil yang relevan dari setiap contoh juga diberikan.
Contoh 1 untuk system_pricing_plans.json
Contoh kode paket harga berikut menunjukkan biaya berdasarkan waktu perjalanan untuk interval berikut:
- [0,1): $2 USD
- Jika durasi perjalanan kurang dari satu menit, pengguna membayar $2 USD.
- Contoh: Perjalanan 59 detik
- [1,2): $3 USD
- Jika durasi perjalanan sama dengan atau lebih dari satu menit, tetapi kurang dari dua menit, pengguna membayar $2 + $1 = $3 USD.
- Contoh: perjalanan 1 menit; perjalanan 1 menit 45 detik
- x jumlah menit dengan x lebih besar dari atau sama dengan 2:
$3 + (($2 + $1) * (x - 2 + 1))
USD
- Jika durasi perjalanan lebih lama atau sama dengan dua menit, pengguna membayar $3 untuk
bagian perjalanan yang kurang dari dua menit dan ($1 [melanjutkan
dari entri pertama daftar
per_min_pricing
] + $2 [entri kedua daftarper_min_pricing
]) untuk setiap menit setelah dan termasuk dua menit. - Contoh:
- Biaya perjalanan 2 menit adalah $3 + ($2 + $1) = $6 USD
- Biaya perjalanan 2 menit 30 detik adalah $3 + ($2 + $1) = $6 USD
- Perjalanan 3 menit dikenai biaya Rp30.000 + (($20.000 + Rp10.000) * 2) = Rp90.000
- Perjalanan 10 menit dikenai biaya Rp30.000 + (($20.000 + Rp10.000) * 9) = Rp300.000
- Jika durasi perjalanan lebih lama atau sama dengan dua menit, pengguna membayar $3 untuk
bagian perjalanan yang kurang dari dua menit dan ($1 [melanjutkan
dari entri pertama daftar
{
"plans": {
"plan_id": "plan1",
"currency": "USD",
"price": 2,
"per_min_pricing": [
{
"interval": 1,
"rate": 1,
"start": 1
},
{
"interval": 1,
"rate": 2,
"start": 2
}
],
}
}
Contoh 2 untuk system_pricing_plans.json
Dalam contoh ini, kami menunjukkan contoh kode untuk paket harga yang dikenai biaya berdasarkan tarif menit dan kilometer:
- Secara khusus, pengguna akhir dikenai biaya $0,25 CAD per km serta $0,50 CAD per menit.
- Kedua rasio ini terjadi secara bersamaan dan tidak saling bergantung.
- Oleh karena itu, perjalanan satu kilometer yang berlangsung selama 10 menit akan dikenai biaya sebesar $9 CAD. Perincian biayanya adalah sebagai berikut:
- $3, harga dasar
- $0,25 * 2, ditagih satu kali di awal perjalanan dan satu kali di tanda 1 km.
- $0,5 * 11, ditagih sekali di awal setiap menit. Tagihan dimulai pada 0 detik, dengan interval terakhir ditagih pada 10 menit.
{
"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
}]
}
}
Wajib bersyarat: geofencing_zones.json (Sistem dengan stasiun pengisian daya dan tanpa stasiun pengisian daya)
Lihat spesifikasi GBFS jika diperlukan.
Feed ini menentukan data geofencing untuk kendaraan mandiri. Data pembatasan wilayah mencakup batas geografis yang menentukan tempat kendaraan diizinkan untuk memulai dan mengakhiri perjalanan, beserta kecepatan yang dapat ditempuh kendaraan. Kecepatan ini adalah kecepatan maksimum kendaraan atau batas kecepatan jalan yang dilalui kendaraan, mana saja yang lebih rendah. Pengemudi harus mematuhi hukum dan peraturan setempat.
Kami menggunakan data ini sehingga saat pengguna menelusuri rute tertentu, jika akhir perjalanan berada di luar geofence tertentu, hasil Mikromobilitas akan dikecualikan. Jika pembatasan wilayah tidak diberikan, Google akan memperlakukan layanan seolah-olah tidak memiliki batasan wilayah.
Nama kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
geofencing_zones |
Objek | Wajib | Objek FeatureCollection sebagaimana dijelaskan oleh
IETF RFC 7946 adalah objek yang memiliki kolom, bernama
features . Nilai features adalah array JSON.
Setiap elemen array JSON adalah objek Feature .
Setiap zona yang dibatasi secara geografis, aturan dan atribut terkait, serta
definisi |
geofencing_zones.type |
String | Wajib | Tetapkan ke FeatureCollection seperti yang dijelaskan oleh
IETF RFC 7946. |
geofencing_zones.features |
Array | Wajib | Array JSON, dengan setiap elemen array JSON adalah objek Feature . |
geofencing_zones.features[].type |
String | Wajib | Tetapkan ke Feature seperti yang dijelaskan oleh
IETF RFC 7946. |
geofencing_zones.features[].geometry |
Multipoligon GeoJSON | Wajib | Multipoligon GeoJSON yang menjelaskan tempat perjalanan tidak dapat dimulai, berakhir, dilalui, selain batasan lainnya. Susunan titik searah jarum jam menentukan area yang dilingkupi poligon, sedangkan urutan berlawanan arah jarum jam menentukan area di luar poligon. Untuk mengetahui informasi selengkapnya tentang hal ini, lihat aturan tangan kanan. |
geofencing_zones.features[].properties |
Objek | Wajib | Objek yang menentukan tunjangan dan batasan perjalanan. |
geofencing_zones.features[].properties.rules |
Array | Opsional | Array objek, di mana setiap objek menentukan satu dan hanya satu aturan. Jika dua aturan atau lebih tumpang-tindih, bertabrakan, atau bertentangan dengan cara tertentu, aturan yang ditentukan paling awal dalam urutan file JSON akan diprioritaskan. |
geofencing_zones.features[].properties.rules[].vehicle_type_id |
Array | Opsional | Array ID jenis kendaraan, dengan setiap elemen adalah
vehicle_type_id , yang pembatasannya harus diterapkan.
Jika tidak ada vehicle_type_id yang ditentukan, maka batasan
berlaku untuk semua jenis kendaraan. |
geofencing_zones.features[].properties.rules[].ride_allowed |
Boolean | Wajib | Apakah perjalanan bersepeda "tanpa dok" yang berdiri bebas dapat dimulai dan diakhiri di
zona, sebagai berikut:
|
Berikut adalah contoh untuk 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]
]]]
}
}]
}
Wajib: station_information.json (Sistem yang terpasang)
Lihat spesifikasi GBFS jika diperlukan.
Feed ini menentukan informasi umum tentang stasiun berbagi sepeda publik.
Nama kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
stations |
Array | Wajib | Array objek yang setiap objeknya menentukan satu dan hanya satu stasiun. |
stations[].station_id |
String | Wajib | ID stasiun. |
stations[].name |
String | Wajib |
Nama publik stasiun dalam bahasa lokal kota tempat stasiun berada. name harus sesuai dengan yang digunakan
pada papan penunjuk di stasiun, jika tersedia, atau harus mencerminkan
lokasi stasiun melalui penggunaan jalan lintas atau landmark lokal.
Jangan gunakan singkatan seperti "Jl." untuk "Jalan", kecuali jika digunakan secara eksplisit dalam papan penunjuk jalan, dan name harus dalam huruf besar/kecil mengikuti ketentuan lokal terkait penggunaan kapitalisasi untuk nama tempat dan tidak dalam huruf besar semua.
|
stations[].lat |
Lintang | Wajib | Lintang WGS 84 stasiun, dalam format derajat desimal. |
stations[].lon |
Bujur | Wajib | Bujur WGS 84 stasiun, dalam format derajat desimal. |
stations[].capacity |
Bilangan bulat non-negatif | Opsional | Bilangan bulat non-negatif yang merepresentasikan jumlah total titik dok yang terpasang di stasiun, baik yang tersedia maupun tidak. |
stations[].rental_uris |
Objek | Wajib |
Objek JSON yang berisi URI sewa untuk Android, iOS, dan web di kolom masing-masing. Jika ditentukan, URI ini akan menggantikan deep link default yang ditetapkan saat penyedia diaktifkan. |
stations[].rental_uris.android |
URI | Wajib bersyarat |
URI yang dapat diteruskan ke aplikasi Android dengan intent Android URI ini harus berupa deep link khusus untuk setiap stasiun, bukan halaman penyewaan umum yang menyertakan informasi untuk lebih dari satu stasiun. Deep link harus mengarahkan pengguna langsung ke stasiun tanpa dialog, halaman interstisial, atau login. Pastikan pengguna dapat melihat SPKLU meskipun mereka belum pernah membuka aplikasi. URI tidak harus menyertakan Jika partner memiliki aplikasi penyewaan Android, kolom ini wajib diisi. Contoh Link Aplikasi Android:
|
stations[].rental_uris.ios |
URI | Wajib bersyarat |
URI yang dapat digunakan di iOS untuk meluncurkan aplikasi penyewaan untuk stasiun.
Untuk mengetahui informasi selengkapnya tentang hal ini, lihat artikel Apple tentang
skema URL kustom iOS.
URI ini harus berupa deep link khusus untuk setiap stasiun, bukan halaman penyewaan umum yang menyertakan informasi untuk lebih dari satu stasiun. Deep link harus mengarahkan pengguna langsung ke stasiun tanpa dialog, halaman interstisial, atau login. Pastikan pengguna dapat melihat SPKLU meskipun mereka belum pernah membuka aplikasi. URI tidak harus menyertakan Jika partner memiliki aplikasi rental iOS, kolom ini wajib diisi. Contoh Link Universal iOS:
|
stations[].rental_uris.web |
URL | Opsional | URL yang dapat digunakan oleh browser web untuk menampilkan informasi selengkapnya tentang cara menyewa kendaraan di SPKLU ini. URL ini harus berupa deep link khusus untuk setiap stasiun, bukan halaman penyewaan umum yang menyertakan informasi untuk lebih dari satu stasiun. Deep link harus mengarahkan pengguna langsung ke stasiun tanpa konfirmasi, halaman interstisial, atau login. Pastikan pengguna dapat melihat stasiun, meskipun mereka belum pernah membuka aplikasi. URL tidak harus menyertakan Jika kolom ini tidak disetel, berarti deep link tidak didukung untuk browser web. Nilai contoh:
|
Berikut adalah contoh untuk 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"
}
},
]
Wajib: station_status.json (Sistem yang terhubung ke dok)
Lihat spesifikasi GBFS jika diperlukan.
Feed ini menentukan status terbaru dan saat ini dari stasiun berbagi sepeda publik.
Nama kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
stations |
Array | Wajib | Array objek, dengan setiap objek menentukan satu dan hanya satu stasiun. |
stations[].station_id |
String | Wajib | ID stasiun. |
stations[].num_bikes_available |
Bilangan bulat non-negatif | Wajib |
Bilangan bulat non-negatif yang merepresentasikan jumlah sepeda fungsional yang secara fisik berada di stasiun dan yang mungkin ditawarkan untuk disewa. Untuk menentukan apakah saat ini stasiun menyewakan sepeda, Anda harus
memeriksa kolom |
stations[].vehicle_types_available |
Array | Opsional |
Array objek yang menentukan jumlah total kendaraan,
yang dikategorikan menurut jenis kendaraan individual yang tersedia di SPKLU. Setiap
objek memodelkan jumlah total kendaraan untuk jenis kendaraan terkait. Jumlah total kendaraan dari setiap objek ini harus sama dengan nilai yang ditentukan di kolom |
stations[].vehicle_types_available[].vehicle_type_id |
ID | Wajib |
|
stations[].vehicle_types_available[].count |
Bilangan bulat non-negatif | Wajib |
Jumlah total kendaraan yang tersedia untuk |
stations[].num_docks_available |
Bilangan bulat non-negatif | Wajib bersyarat |
Kolom ini wajib diisi, kecuali jika stasiun memiliki kapasitas docking tanpa batas. Misalnya, stasiun virtual memiliki kapasitas docking tanpa batas dan kolom ini tidak wajib diisi. Bilangan bulat non-negatif yang menunjukkan jumlah total dermaga fungsional di stasiun yang secara fisik dapat menerima pengembalian kendaraan. Untuk menentukan apakah saat ini stasiun menerima pengembalian sepeda, Anda harus memeriksa kolom |
stations[].is_installed |
Boolean | Wajib |
Boolean yang menunjukkan apakah benar bahwa stasiun saat ini berada di jalan dan terpasang. Jika stasiun dipasang di jalan, setel ke Jika stasiun tidak dipasang di jalan, setel ke |
stations[].is_renting |
Boolean | Wajib |
Boolean yang menunjukkan apakah saat ini stasiun menyewakan sepeda. Jika saat ini stasiun menyewakan sepeda, tetapkan ke Jika saat ini stasiun tidak menyewakan sepeda, tetapkan ke |
stations[].is_returning |
Boolean | Wajib |
Boolean yang menunjukkan apakah benar bahwa saat ini stasiun menerima pengembalian sepeda. Jika saat ini stasiun menerima pengembalian sepeda, setel ke Jika saat ini stasiun tidak menerima pengembalian sepeda, setel ke
|
Berikut adalah contoh 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
},
]