GBFS Tanımları

Bu bölüme geçmeden önce, feed'i oluştururken kullandığınız desteklenen mikro hareket sistemlerini doğrulamalısınız.

Aşağıdaki bölümlerde, her üstbilginin biçimi şöyledir: Required|Optional|Conditionally required: Feed name (System supported). Aşağıdaki sistemler desteklenir:

  • Yuvaya yerleştirilmiş sistem
  • Sabitlemesiz sistem
  • Yuvada ve yuvasız sistem

Google ile başarılı bir şekilde entegre olmak için yalnızca feed'inizin açıkladığı sistem için gereken dosyaları sağlayın ve ilgili bölümlerde yer alan zorunlu alanları belirtin. Koşula bağlı zorunlu alanlar için rehberlikle ilgili alandaki açıklamaya bakın. Bilgi ekleyen ve daha iyi bir kullanıcı deneyimi sunan isteğe bağlı alanlar da belirtebilirsiniz.

Mikro mobilite feed'leri için gerekli başlık

Mikro hareket feed'leri, bu makalede tanımlandığı gibi yerleşik veya yuvasız olan feed'leri içerir.

Tüm feed'ler, aşağıdaki tabloda yer alan alanları her zaman JSON nesnesinin en üst düzeyinde belirtmelidir. Bu alan, toplu olarak common GBFS üst bilgisi olarak bilinir.

Alan adı Tür Koşul Açıklama
last_updated Zaman damgası Zorunlu 1 Ocak 1970 00:00:00 UTC'den bu yana geçen saniye sayısını belirten POSIX zaman damgası.

Feed'deki verilerin son olarak güncellendiği zamana ayarlanır.

ttl Negatif olmayan tam sayı Zorunlu Feed'i güncelleme zamanı gelene kadar geçen saniye sayısını temsil eden negatif olmayan bir tam sayı.

Verilerin sabit bir hızda güncellenmesi gerekiyorsa bu değeri 0 olarak ayarlayın.

data JSON Zorunlu Bağımsız feed'in veri alanlarını içeren JSON.

Örneğin, ortak GBFS başlığını belirten toplu free_bike_status.json feed'i aşağıdaki gibi olabilir:

{
    "ttl": 30,
    "last_updated": 1576123774,
    "data": {
        "bikes": [ ... ]  // GBFS free bike status objects.
    }
}

Gerekli: system_information.json (Yuvada ve yersiz sistem)

Gerektiğinde GBFS spesifikasyonuna bakın.

Bu feed, sistem operatörüyle ilgili ayrıntılı bilgi sağlar.

Alan adı Tür Koşul Açıklama
system_id Kimlik Zorunlu Araç paylaşım sistemi için genel olarak benzersiz bir tanımlayıcı. Bu değer, sistem ömrü boyunca aynı kalacak şekilde tasarlanmıştır. Araçların çalıştırıldığı her sistem veya coğrafi bölge kendi sistem_kimliğine sahip olmalıdır. Sistem kimlikleri, rastgele dizelerden ziyade belirli bir sisteme ait olduğu bilinmelidir (örneğin, bcycle_austin veya Biketown_pdx).
name Dize Zorunlu Sistemin müşterilere gösterilen adı.
rental_apps Nesne Zorunlu Kiralama uygulamaları için Android ve iOS ile ilgili bilgileri içeren bir JSON nesnesi.
rental_apps.android Nesne Koşula bağlı olarak gereklidir store_uri ve discovery_uri alanlarında Android platformu için kiralama uygulaması indirme ve uygulama keşfetme bilgilerini içerir. Sistem sağlayıcısının bir Android kiralama uygulaması varsa bu alan gereklidir.
rental_apps.android.store_uri URI Zorunlu Kiralanan Android uygulamasının indirilebileceği URI. Bu, genellikle Google Play gibi bir uygulama mağazasının URI'sidir. URI, Google Play gibi bir uygulama mağazasına yönlendiriyorsa URI'nin Android en iyi uygulamalarını izlemesini öneririz. Böylece uygulama, URI'yı bir web sitesi yerine doğrudan yerel uygulama mağazası uygulamasına açabilir.
rental_apps.android.discovery_uri URI Zorunlu your_custom_scheme://your/path/here biçimine sahip URI. URI, kiralık Android uygulamasının cihazda yüklü olup olmadığını öğrenmek için PackageManager.queryIntentActivities() tarafından kullanılabilir.
rental_apps.ios Nesne Koşula bağlı olarak gereklidir iOS ve store_uri için discovery_uri platformundaki kiralama uygulaması indirme ve uygulama keşfi bilgilerini içerir. Sistem sağlayıcısında iOS kiralama uygulaması varsa bu alan zorunludur.
rental_apps.ios.store_uri URI Zorunlu Kiralanan iOS uygulamasının indirilebileceği URI. Bu genellikle Apple App Store gibi bir uygulama mağazasının URI'sidir. URI, Apple App Store gibi bir uygulama mağazasına işaret ediyorsa görüntüleme uygulamasının bir web sitesi yerine yerel uygulama mağazası uygulamasına doğrudan URI açabilmesi için URI'nin iOS en iyi uygulamalarını izlemesini öneririz.
rental_apps.ios.discovery_uri URI Zorunlu your_custom_scheme:// biçimine sahip URI. URI, kiralık iOS uygulamasının cihazda yüklü olup olmadığını keşfetmek için UIApplication canOpenURL: tarafından kullanılabilir.

Gerekli: free_bike_status.json (Yuvasız sistem)

Gerektiğinde GBFS spesifikasyonuna bakın.

Bu feed, mevcut bağımsız taşıtların konumlarını ve özelliklerini tanımlar. Gizlilik nedeniyle, etkin bir kiralamanın parçası olan araçlar bu feed'de görünmemelidir.

Alan adı Tür Koşul Açıklama
bikes Dizi Zorunlu Şu anda mevcut olan, her bisikletin bir nesne olduğu mevcut bisikletler.
bikes[].bike_id Kimlik Zorunlu Bisikletin tanımlayıcısı.

Gizliliği korumak için kimlik, her geziden sonra rastgele bir dize olarak değiştirilebilir.

bikes[].lat Enlem Zorunlu Bisikletin WGS 84 enlemi, ondalık derece biçimindedir.
bikes[].lon Boylam Zorunlu Bisikletin WGS 84 boylamı ondalık derece biçimindedir.
bikes[].is_reserved Boole Zorunlu Bisikletin hâlihazırda rezerve edilip edilmediği aşağıda açıklanmıştır:
  • Bisiklet ayrılmışsa true değerine ayarlayın.
  • Bisiklet şu anda rezerve edilmemişse false olarak ayarlanır.
bikes[].is_disabled Boole Zorunlu Bisikletin şu anda devre dışı mı yoksa kırılmış mı olduğu aşağıdaki gibi:
  • Bisiklet şu anda devre dışıysa true olarak ayarlayın.
  • Bisiklet şu anda devre dışıysa false olarak ayarlayın.
bikes[].rental_uris Nesne Zorunlu İlgili alanlarında Android, iOS ve web için kiralama URI'leri içeren JSON nesnesi.
bikes[].rental_uris.android URI Koşula bağlı olarak gereklidir Android Derin Bağlantılarını desteklemek için android.intent.action.VIEW Android niyetiyle Android uygulamasına geçirilebilen bir URI. Sağlayıcı uygulamanın yüklü olmadığı durumlarda görüntülemekte olan uygulamanın kullanıcının uygulama mağazasına yönlendirilmesini manuel olarak yönetmesine gerek olmaması için sağlanan rental_uris Android App Links olmalıdır.

Bu URI, birden fazla bisiklet için bilgi içeren genel bir kiralama sayfası değil, tek tek bisiklete özel bir derin bağlantı olmalıdır. Derin bağlantı, herhangi bir istem, geçiş sayfası veya giriş olmadan kullanıcıyı doğrudan bisiklete götürmelidir. Kullanıcılar uygulamayı hiç açmamış olsalar bile bisikleti görebildiğinden emin olun.

İş ortağının ilgili bisikleti tanımlamak için başka yöntemleri olduğu sürece URI'lerin bisiklet için bike_id özelliğini içermesi zorunlu değildir. Örneğin, kiralama uygulaması bisikleti benzersiz bir şekilde tanımlamak için URI'deki diğer tanımlayıcıları kullanabilir.

İş ortağının Android kiralama uygulaması varsa bu alan zorunludur.

Android App Links örneği:

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

bikes[].rental_uris.ios URI Koşula bağlı olarak gereklidir iOS'te bisiklet kiralama uygulamasını başlatmak için kullanılabilecek bir URI. Bu konu hakkında daha fazla bilgi için Apple'ın iOS özel URL şemaları ile ilgili makalesine göz atın. Sağlayıcı uygulamanın yüklü olmadığı durumlarda görüntüleme uygulamasının kullanıcının uygulama mağazasına yönlendirilmesini manuel olarak yönetmesine gerek olmaması için sağlanan rental_uris iOS Evrensel Bağlantıları olmalıdır.

Bu URI, birden fazla bisiklet için bilgi içeren genel bir kiralama sayfası değil, tek tek bisiklete özel bir derin bağlantı olmalıdır. Derin bağlantı, herhangi bir istem, geçiş sayfası veya giriş olmadan kullanıcıyı doğrudan bisiklete götürmelidir. Kullanıcılar uygulamayı hiç açmamış olsalar bile bisikleti görebildiğinden emin olun.

İş ortağının bisikleti tanımlamak için başka yöntemleri olduğu sürece URI'lerin bisiklet için bisiklet_kimliğini içermesi zorunlu değildir. Örneğin, kiralık uygulama bisikleti benzersiz şekilde tanımlamak için URI'deki diğer tanımlayıcıları kullanabilir.

İş ortağının iOS kiralama uygulaması varsa bu alan zorunludur.

iOS Geçiş Bağlantıları örneği:

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

bikes[].rental_uris.web URL İsteğe bağlı

Bu araçta araç kiralama hakkında daha fazla bilgi göstermek için bir web tarayıcısı tarafından kullanılabilecek URL.

Bu URL, birden fazla bisiklet hakkında bilgi içeren genel bir kiralama sayfası değil, tek tek bisiklete özel bir derin bağlantı olmalıdır. Derin bağlantı, herhangi bir istem, geçiş sayfası veya giriş olmadan kullanıcıyı doğrudan bisiklete götürmelidir. Kullanıcılar uygulamayı hiç açmamış olsalar bile bisikleti görebildiğinden emin olun.

URL'lerin bisiklet için bike_id içermesi veya Android ya da iOS için kiralama URL'lerinin semantik kurallarına uyması gerekmez. Kiralama uygulaması, URL'de bisikleti benzersiz şekilde tanımlayan başka tanımlayıcılar kullanabilir.

Bu alan ayarlanmazsa derin bağlantılar web tarayıcısı için desteklenmez.

Örnek değer:

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

bikes[].vehicle_type_id Kimlik Zorunlu Aracın vehicle_types.json bölümünde açıklanan vehicle_type_id öğesi.
bikes[].pricing_plan_id Kimlik Zorunlu Bu araç türü kiralandığında geçerli olan fiyat planı tanımlayıcısı, system_pricing_plans.json bölümünde açıklanmıştır.
bikes[].current_range_meters Negatif olmayan kayan noktalı Koşula bağlı olarak gereklidir Araca karşılık gelen vehicle_type tanımı bir motor içeriyorsa bu alan gereklidir.

Aracın mevcut şarj veya yakıt seviyesi göz önünde bulundurularak, şarj veya yakıt yardımı gerekmeden aracın gidebileceği en uzak mesafeyi ayarlayın.

bikes[].last_reported Zaman damgası İsteğe bağlı Aracın durumunu, operatörün arka ucuna en son bildirildiği saat olarak ayarlayın.

Aşağıda free_bike_status.json için bir örnek verilmiştir:

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

Gerekli: traffic_types.json (Yuvada ve yersiz sistem)

Gerektiğinde GBFS spesifikasyonuna bakın.

Bu feed, free_bike_status.json bölümünde belirtildiği şekilde her bir araç türünün ayrıntılarını tanımlar.

Alan adı Tür Koşul Açıklama
vehicle_types Dizi Zorunlu Sağlayıcının kataloğunda her bir nesnenin farklı bir araç türünü tanımladığı bir nesne dizisi. Belirli bir araç türü için yalnızca bir nesne olabilir.
vehicle_types[].vehicle_type_id Kimlik Zorunlu Belirli bir araç türünün benzersiz tanımlayıcısıdır.
vehicle_types[].form_factor Enum Zorunlu Aşağıdaki geçerli değerler listesinden aracın genel form faktörünü temsil eden bir sıralama:
  • bicycle
  • scooter
  • other
vehicle_types[].propulsion_type Enum Zorunlu Aşağıdaki geçerli değerler listesinde bulunan, aracın birincil itki türünü temsil eden enum :
  • human: Pedal veya yaya itme
  • electric_assist: İnsanın itici gücüyle birlikte güç sağlar
  • electric: Pille çalışan bir motorla kısılma modunu içerir
  • combustion: Gaz motoruyla çalışan gaz modu içerir
vehicle_types[].max_range_meters Negatif olmayan kayan noktalı Koşula bağlı olarak gereklidir propulsion_type human olarak ayarlanmadıysa aracın bir motoru vardır, dolayısıyla bu alan gereklidir.

Aracın tam olarak yakıt doldurması veya tamamen şarj olması durumunda şarj veya yakıt ihtiyacı olmadan seyahat edebileceği en uzak mesafe olarak ayarlayın.

Aşağıda vehicle_types.json için bir örnek verilmiştir:

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

Gerekli: System_pricing_plans.json (Yuvasız sistem)

Gerektiğinde GBFS spesifikasyonuna bakın.

Bu feed ayaklı araçlar için fiyat planlarını tanımlar. Sağlayıcıların ayaklı araçlar için fiyat bilgisi göstermesini zorunlu tutuyoruz.

Alan adı Tür Koşul Açıklama
plans Dizi Zorunlu Her bir nesnenin belirli bir fiyat planını tanımladığı nesne dizisi.
plans[].plan_id Kimlik Zorunlu Sağlayıcının sunduğu belirli bir fiyat planının benzersiz tanımlayıcısını temsil eden bir dize.
plans[].url URL İsteğe bağlı Son kullanıcıları fiyat planı hakkında daha fazla bilgiye yönlendiren URL.
plans[].currency Dize Zorunlu Fiyat planının ISO 4217 standardı.
plans[].price Negatif olmayan kayan noktalı Zorunlu

Fiyat planı, puan verilmemiş bir fiyat planı veya derecelendirilen fiyat planı olarak tanımlanmalıdır:

Derecelendirilmemiş fiyat planı

Bu plan, tek bir sabit ücrettir.

Aşağıdaki alanı ayarlayın:

  • price: Tüm seyahatin sabit fiyatı.
Ücretli fiyat planı

Bu plan, parçalı doğrusal bir fiyattır.

Aşağıdaki alanı ayarlayın:

  • price: Seyahat başına tam olarak bir kez tahsil edilen taban fiyattır.

Aşağıdaki alanlardan birini veya ikisini birden ayarlayın:

  • per_km_pricing: Kilometre başına ücrette belirtilen seyahatin fiyatı.
  • per_min_pricing: Dakika başına ücrette belirtilen gezi fiyatı.
plans[].per_km_pricing Dizi Koşula bağlı olarak gereklidir

Fiyat, kat edilen ve kilometre olarak gösterilen mesafenin bir işleviyse bu alan zorunludur.

Her bir nesnenin belirli bir mesafeye ayrılmış segmenti tanımladığı nesne dizisi. Her segmentin start değeri, sonraki segmentin start değerinden küçük veya bu değere eşit olmalıdır.

Belirli bir planın toplam fiyatını belirlemek için plans[].per_km_pricing ve plans[].per_min_pricing bölgelerindeki segmentlerin tahakkuk eden fiyatlarına planın plans[].price değerini ekleyin.

Bu alan ayarlanmamışsa mesafeye bağlı olarak değişen fiyat yoktur ve bu nedenle hiçbiri toplam fiyatın bir parçası olarak dahil edilmez.

plans[].per_km_pricing[].start Negatif olmayan tam sayı Zorunlu Segment ücretinin ücretlendirilmeye başlayacağı kilometre sayısı. Bu alan, segmentin aralığını başlatan kapsayıcı değere ayarlanır. Bu nedenle, kilometrelerce süre geçtikten sonra rate bir kez ücretlendirilir.
plans[].per_km_pricing[].rate Kayan Zorunlu Segmentin kapsayıcı start aralığından başlayan her interval için tahsil edilen ücret. Bu alan negatif bir sayıya ayarlanırsa yolcuya indirim uygulanır.
plans[].per_km_pricing[].interval Negatif olmayan tam sayı Zorunlu

Segmentin end parametresi negatif olmayan bir tam sayı olarak ayarlanmadıkça, segmentin rate değerinin süresiz olarak yeniden uygulandığı kilometre aralığı.

rate, her interval başlangıcında bir kez yeniden uygulanır ve mesafenin yuvarlanması hesaba katılmaz.

Segmentin end değeri negatif olmayan bir tam sayıya ayarlanırsa segmentin rate değeri, segmentin end değerine kadar (ancak bunu dahil olmayacak şekilde) yeniden uygulanır.

Bu alan, 0 değerine ayarlanırsa rate, segmentin start değeriyle tam olarak bir kez ücretlendirilir.

plans[].per_km_pricing[].end Negatif olmayan tam sayı İsteğe bağlı

Segmentin rate değerinin artık uygulanmadığı kilometre sayısı. Bu alan, segmentin aralığını bitiren özel değere ayarlanır. Örneğin, end öğesi 40 olarak ayarlanırsa rate artık 40 kilometrede uygulanmaz.

Bu alan ayarlanmamışsa veya boşsa segmentin rate değeri, seyahatten sonraki ek segmentlere ek olarak yolculuk sona erene kadar ücretlendirilir.

plans[].per_min_pricing Dizi Koşula bağlı olarak gereklidir

Fiyat, iletilen zamanın bir işleviyse ve dakika cinsinden gösteriliyorsa bu alan gereklidir.

Her bir nesnenin belirli bir zaman bölümüne bölünmüş segmenti tanımladığı nesne dizisi. Her segmentin start değeri, sonraki segmentin start değerinden küçük veya bu değere eşit olmalıdır.

Belirli bir planın toplam fiyatını belirlemek için plans[].per_km_pricing ve plans[].per_min_pricing bölgelerindeki segmentlerin tahakkuk eden fiyatlarına planın plans[].price değerini ekleyin.

Bu alan ayarlanmamışsa zamana dayalı değişken fiyat yoktur ve bu nedenle hiçbiri toplam fiyata dahil edilmez.

plans[].per_min_pricing[].start Kayan Zorunlu Segment ücretinin ücretlendirilmeye başlayacağı dakika sayısı. Bu alan, segmentin aralığını başlatan kapsayıcı değere ayarlanır. Bu nedenle, belirlenen dakika sayısı dolduğunda rate üzerinden bir kez ödeme alınır.
plans[].per_min_pricing[].rate Kayan Zorunlu Her interval için alınan ücret. Ücret, segmentin kapsayıcı start sürümünden başlar. Bu alan negatif bir sayıya ayarlanırsa yolcuya indirim uygulanır.
plans[].per_min_pricing[].interval Negatif olmayan tam sayı Zorunlu

Segmentin end negatif olmayan bir tam sayı olarak ayarlanmadığı sürece, segmentin rate süresiz olarak yeniden uygulanacağı dakika aralığı.

rate, her interval başlangıcında bir kez yeniden uygulanır ve seyahat süresi yuvarlanmaz.

Segmentin end değeri negatif olmayan bir tam sayıya ayarlanırsa segmentin rate değeri, segmentin end değerine kadar (ancak bunu dahil olmayacak şekilde) yeniden uygulanır.

Bu alan, 0 değerine ayarlanırsa rate, segmentin start değeriyle tam olarak bir kez ücretlendirilir.

plans[].per_min_pricing[].end Negatif olmayan tam sayı İsteğe bağlı

Segmentin rate öğesinin artık uygulanmadığı dakika sayısı. Bu alan, segmentin aralığını bitiren özel değere ayarlanır. Örneğin, end öğesi 20 olarak ayarlanırsa rate artık 20 dakika içinde geçerli olmaz.

Bu alan ayarlanmamışsa veya boşsa seyahatin sonuna kadar segmentten sonraki rate segmentlerine ek olarak segmentten ücret alınır.

System_pricing_plans.json örnekleri

Bu bölümde bilgilendirici system_pricing_plans.json kod örnekleri verilmiştir. Her örneğin alakalı ayrıntıları ve sonuçları da verilmiştir.

System_pricing_plans.json için 1. örnek

Aşağıdaki fiyat planı kodu örneği, aşağıdaki aralıklar için yolculuk süresine göre ücretleri göstermektedir:

  • [0,1): 2 TL
    • Yolculuk bir dakikadan kısaysa kullanıcı 2 ABD doları öder.
    • Örnek: 59 saniyelik gezi
  • [1,2): 3 TL
    • Yolculuk daha uzun veya bir dakikaysa ancak iki dakikadan kısaysa kullanıcı 2 ABD doları + 1 ABD doları = 3 ABD doları ödeme yapar.
    • Örnekler: 1 dakikalık gezi; 1 dk. 45 saniyelik gezi
  • x dakika sayısı, x değeri 2'den büyük veya 2'ye eşittir: 3 ABD doları + ((2 ABD doları + 1 ABD doları) * (x - 2 + 1)) USD
    • Yolculuk iki dakikadan uzun veya iki dakikaya eşitse kullanıcı, yolculuğun iki dakikadan kısa olan kısmı için 3 ABD doları, (iki dakika sonra ve dahil olmak üzere her dakika için [per_min_pricing listesinin ilk girişinden itibaren devam eder] + 2 ABD doları [per_min_pricing listesinin ikinci girişi) öder.
    • Örnekler:
      • 2 dakikalık seyahat maliyeti 3 ABD doları + (2 ABD doları + 1 ABD doları) = 6 ABD doları
      • 3 dk. süreli 2 dakikalık seyahat 3 TL + (2 TL + 1 TL) = 6 TL
      • 3 dakikalık gezi maliyeti 3 ABD doları + ((2 ABD doları + 1 ABD doları) * 2) = 9 ABD doları
      • 10 dakikalık gezi maliyeti 3 ABD doları + ((2 ABD doları + 1 ABD doları) * 9) = 30 ABD doları
{
  "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 için 2. örnek

Bu örnekte, hem fiyat hem de dakika başına ücret alınan bir fiyat planı için bir kod örneği gösteriyoruz:

  • Daha ayrıntılı olarak belirtmek gerekirse, son kullanıcıdan km başına 0,25 Kanada doları ile dakika başına 0,50 Kanada doları ücret alınır.
  • Bu oranların her ikisi de eş zamanlı olarak gerçekleşir ve birbirine bağlı değildir.
  • Bu nedenle, 10 dakika süren bir kilometrelik yolculuk için 9 Kanada doları ücret alınır. Maliyetin dökümü şu şekildedir:
    • 3 ABD doları, taban fiyat
    • Seyahatin başlangıcında bir kez, 1 km işaretinde bir kez ödeme yapılan 0,25 ABD doları * 2.
    • Her dakikanın başında bir kez ödeme alınır.0, 5 * 11. Şarjlar 0 saniyede başlar ve son aralık 10 dakika olarak ücretlendirilir.
{
  "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
    }]
  }
}

Koşula bağlı olarak gerekli: geofencing_zones.json (Yerleştirilmiş ve sabit olmayan sistem)

Gerektiğinde GBFS spesifikasyonuna bakın.

Bu feed, bağımsız araçlar için coğrafi çit verileri tanımlar. Coğrafi sınır verileri, araçların yola çıkmasına ve sürüşü bitirmelerine izin verilen yerleri belirten coğrafi sınırları ve araçların gidebileceği hızları içerir. Bu hız, aracın maksimum hızı veya aracın bulunduğu yolun hız sınırını (hangisi daha düşükse) belirler. Sürücüler, yerel yasalara ve kurallara uymalıdır.

Bu verileri, bir kullanıcı belirli bir rotayı aradığında yolculuğun sonu belirli coğrafi sınırların dışında kaldığında Yaratıcılık sonucunun filtrelenmesi için kullanırız. Coğrafi sınırların belirtilmediği durumlarda Google, hizmeti herhangi bir sınır kısıtlaması yokmuş gibi işler.

Alan adı Tür Koşul Açıklama
geofencing_zones Nesne Zorunlu IETF RFC 7946 tarafından tanımlandığı gibi bir FeatureCollection nesnesi, features adlı bir alanı olan bir nesnedir. features bir JSON dizisidir. JSON dizisindeki her öğe bir Feature nesnesidir.

Coğrafi sınır çizilmiş her alt bölge, ilişkili kurallar ve özellikler ile FeatureCollection tanımı, geofencing_zones.json feed tanımlarının bir parçası olarak burada belirtilir.

geofencing_zones.type Dize Zorunlu IETF RFC 7946'da açıklandığı şekilde FeatureCollection olarak ayarlayın.
geofencing_zones.features Dizi Zorunlu JSON dizisinin her bir öğesinin bir Feature nesnesi olduğu JSON dizisi.
geofencing_zones.features[].type Dize Zorunlu IETF RFC 7946'da açıklandığı şekilde Feature olarak ayarlayın.
geofencing_zones.features[].geometry GeoJSON Çoklu Poligon Zorunlu Yolculukların nerede başlayıp bittiğini, bittiğini, geçtiği yerleri ve diğer sınırlamaları ortadan kaldıran bir GeoJSON Çoklu Poligonu. Noktalar saat yönünde düzenlenir, poligonun çevreleyen alanı tanımlarken saat yönünün tersine, poligonun dışındaki alanı tanımlar. Bu konuyla ilgili daha fazla bilgi için sağdaki kurala bakın.
geofencing_zones.features[].properties Nesne Zorunlu Seyahat izinlerinin ve sınırlamalarını tanımlayan bir nesne.
geofencing_zones.features[].properties.rules Dizi İsteğe bağlı Her bir nesnenin yalnızca bir kural tanımladığı bir nesne dizisi. İki veya daha fazla kural herhangi bir şekilde çakışırsa, çakışırsa veya başka bir şekilde çakışırsa JSON dosyası sırasına göre tanımlanan ilk kural öncelikli olur.
geofencing_zones.features[].properties.rules[].vehicle_type_id Dizi İsteğe bağlı Her bir öğenin vehicle_type_id olması gereken bir araç türü kimliği dizisi. Kısıtlamaların uygulanması gerekir. vehicle_type_id özelliği belirtilmezse kısıtlamalar tüm araç türleri için geçerlidir.
geofencing_zones.features[].properties.rules[].ride_allowed Boole Zorunlu Bağımsız ve plansız bisiklet gezisi, alt bölgede aşağıdaki gibi başlayıp başlayıp bitemez:
  • Çıkarılan bisiklete binme başlayıp alt bölgede başlayabiliyorsa true olarak ayarlayın.
  • Çıkarılan bisiklete binme başlatılamaz ve alt bölgede başlatılamazsa false olarak ayarlanır.

Aşağıda geofencing_zones.json için bir örnek verilmiştir:

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

Gerekli: Station_information.json (Yerleştirilmiş sistem)

Gerektiğinde GBFS spesifikasyonuna bakın.

Bu feed, herkese açık bisiklet paylaşımı istasyonlarıyla ilgili genel bilgileri tanımlar.

Alan adı Tür Koşul Açıklama
stations Dizi Zorunlu Her bir nesnenin yalnızca bir istasyon tanımladığı nesne dizisi.
stations[].station_id Dize Zorunlu İstasyonun tanımlayıcısı.
stations[].name Dize Zorunlu İstasyonun bulunduğu şehrin yerel dilinde istasyonun herkese açık adı. name, uygun olduğu durumlarda istasyondaki tabelalarda kullanılanlara uygun olmalı veya istasyonun konumu, bir ara sokak veya yerel bir önemli nokta kullanılarak yansıtılmalıdır. Tabelalarda açık bir şekilde kullanılmıyorsa "st." ve "Street" gibi kısaltmalar kullanmayın. name, yer adlarının büyük harf kullanımıyla ilgili yerel kurallara uygun şekilde büyük harfle yazılmalıdır (büyük harfle değil).
stations[].lat Enlem Zorunlu İstasyonun WGS 84 enlemi, ondalık derece biçimindedir.
stations[].lon Boylam Zorunlu İstasyonun WGS 84 boylamı, ondalık derece biçiminde.
stations[].capacity Negatif olmayan tam sayı İsteğe bağlı İstasyonda bulunan ve hem kullanılamayan hem de kullanılamayan toplam sabitleme noktası sayısını temsil eden negatif olmayan tam sayı.
stations[].rental_uris Nesne Zorunlu

İlgili alanlarında Android, iOS ve web için kiralama URI'leri içeren JSON nesnesi.

Bu URI'ler belirtilirse sağlayıcının ilk katılımı sırasında ayarlanan varsayılan derin bağlantıları geçersiz kılarlar.

stations[].rental_uris.android URI Koşula bağlı olarak gereklidir

Android Derin Bağlantılarını desteklemek için android.intent.action.VIEW Android intent'sine sahip bir Android uygulamasına geçirilebilen bir URI. Sağlayıcı uygulamanın yüklü olmadığı durumlarda görüntülemekte olan uygulamanın kullanıcının uygulama mağazasına yönlendirilmesini manuel olarak yönetmesine gerek olmaması için sağlanan rental_uris Android App Links olmalıdır.

Bu URI, birden fazla istasyon hakkında bilgi içeren genel bir kiralama sayfası değil, tek bir istasyona özgü derin bağlantı olmalıdır. Derin bağlantı, herhangi bir istem, geçiş sayfası veya giriş olmadan kullanıcıyı doğrudan istasyona götürmelidir. Kullanıcıların uygulamayı hiç açmamış olsalar bile istasyonu görebilmelerini sağlayın.

İş ortağının ilgili istasyonu tanımlamak için başka yöntemleri olduğu sürece URI'lerin her zaman station_id için istasyon içermesi gerekmez. Örneğin, kiralama uygulaması istasyonu benzersiz şekilde tanımlamak için URI'deki diğer tanımlayıcıları kullanabilir.

İş ortağının Android kiralama uygulaması varsa bu alan zorunludur.

Android App Links örneği:

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

stations[].rental_uris.ios URI Koşula bağlı olarak gereklidir

İstasyonun kiralama uygulamasını başlatmak için iOS'te kullanılabilecek bir URI. Bu konu hakkında daha fazla bilgi için Apple'ın iOS özel URL şemaları ile ilgili makalesine göz atın. Sağlanan rental_uris iOS Evrensel Bağlantıları olmalıdır. Böylece, uygulamada kullanılan uygulama, sağlayıcıda sağlayıcı yüklü değilse görüntüleme uygulamasının kullanıcıyı uygulama mağazasına yönlendirmesini manuel olarak yönetmesi gerekmez.

Bu URI, birden fazla istasyon hakkında bilgi içeren genel bir kiralama sayfası değil, tek bir istasyona özgü derin bağlantı olmalıdır. Derin bağlantı, herhangi bir istem, geçiş sayfası veya giriş olmadan kullanıcıyı doğrudan istasyona götürmelidir. Kullanıcıların uygulamayı hiç açmamış olsalar bile istasyonu görebilmelerini sağlayın.

URI'ların istasyon için station_id özelliğini içermesi şart değildir. Kiralama uygulaması, istasyonu benzersiz bir şekilde tanımlamak için URI'deki diğer tanımlayıcıları kullanabilir.

İş ortağının iOS kiralama uygulaması varsa bu alan zorunludur.

iOS Geçiş Bağlantıları örneği:

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

stations[].rental_uris.web URL İsteğe bağlı

Bu istasyonda araç kiralamayla ilgili daha fazla bilgi göstermek için web tarayıcısı tarafından kullanılabilecek bir URL.

Bu URL, birden fazla istasyon hakkında bilgi içeren genel bir kiralama sayfası değil, ayrı bir istasyona özgü derin bağlantı olmalıdır. Derin bağlantı, herhangi bir istem, geçiş sayfası veya giriş olmadan kullanıcıyı doğrudan istasyona götürmelidir. Kullanıcıların uygulamayı hiç açmamış olsalar bile istasyonu görebilmelerini sağlayın.

URL'lerin istasyon için station_id'in eklenmesi veya Android ya da iOS için kiralama URL'lerinin semantik kurallarına uyması gerekmez. Kiralama uygulaması, URL'de istasyonu benzersiz bir şekilde tanımlayan diğer tanımlayıcıları kullanabilir.

Bu alan ayarlanmazsa derin bağlantılar web tarayıcısı için desteklenmez.

Örnek değer:

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

Aşağıda station_information.json için bir örnek verilmiştir:

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

Gerekli: Station_status.json (Yerleştirilmiş sistem)

Gerektiğinde GBFS spesifikasyonuna bakın.

Bu feed, herkese açık bisiklet paylaşımı istasyonlarının güncel ve mevcut durumunu tanımlar.

Alan adı Tür Koşul Açıklama
stations Dizi Zorunlu Her bir nesnenin yalnızca bir istasyon tanımladığı bir nesne dizisi.
stations[].station_id Dize Zorunlu İstasyonun tanımlayıcısı.
stations[].num_bikes_available Negatif olmayan tam sayı Zorunlu

Fiziksel olarak istasyonda bulunan ve kiralanmak üzere sunulabilecek işlevsel bisikletlerin sayısını temsil eden negatif olmayan tam sayı.

İstasyonun bisiklet kiralayıp kiralamadığını belirlemek için istasyonun is_renting alanını denetlemeniz ve gerçek bir Boole değeri bulmanız gerekir.

stations[].vehicle_types_available Dizi İsteğe bağlı

Bir istasyonda bulunan her araç türüne göre kategorize edilmiş toplam araç sayısını tanımlayan bir nesne dizisi. Her nesne, ilişkili araç türü için toplam araç sayısını modeller. Bu nesnelerin her birinden gelen toplam araç sayısı, num_bikes_available alanında belirtilen değerle eşleşmelidir.

stations[].vehicle_types_available[].vehicle_type_id Kimlik Zorunlu

vehicle_types.json dosyasında açıklanan şekilde her araç türünün istasyondaki vehicle_type_id değeri.

stations[].vehicle_types_available[].count Negatif olmayan tam sayı Zorunlu

vehicle_types.json dosyasında tanımlandığı şekilde istasyonda ilgili vehicle_type_id için mevcut araçların toplam sayısı.

stations[].num_docks_available Negatif olmayan tam sayı Koşula bağlı olarak gereklidir

İstasyonun sınırsız bağlantı noktası kapasitesi olmadığı sürece bu alan gereklidir. Örneğin, sanal istasyonların sınırsız bağlantı noktası kapasitesi vardır ve alanın doldurulması zorunlu değildir.

İstasyonda araç iadelerini kabul edebilen fiziksel yuvaların toplam sayısını temsil eden negatif olmayan tam sayı.

İstasyonun şu anda bisiklet iadelerini kabul edip etmediğini belirlemek için istasyonun is_returning alanını incelemeniz ve true Boole değeri bulmanız gerekir.

stations[].is_installed Boole Zorunlu

İstasyonun şu anda cadde üzerinde ve yüklü olduğunun doğru olduğunu belirten bir Boole.

İstasyonun caddeye yüklenmesi durumunda true olarak ayarlayın.

İstasyonun caddeye eklenmemesi durumunda false olarak ayarlayın.

stations[].is_renting Boole Zorunlu

İstasyonun şu anda bisiklet kiraladığını doğrulayıp belirtmediğini gösteren bir Boole.

İstasyonun bisiklet kiralama hizmeti mevcutsa true olarak ayarlayın. İstasyon boş olsa bile kiralama işlemlerine izin verecek şekilde ayarlanmışsa is_renting true olarak ayarlanır.

İstasyonun bisiklet kiralama hizmeti yoksa false olarak ayarlayın.

stations[].is_returning Boole Zorunlu

İstasyonun bisiklet iadelerini şu anda kabul edip etmediğini belirten bir Boole.

İstasyon şu anda bisiklet iadelerini kabul ediyorsa true olarak ayarlayın. İstasyon dolu olsa bile olmasa bile geri dönmeye izin verirdi. is_returning, true olarak ayarlandı.

İstasyon şu anda bisiklet iadelerini kabul etmiyorsa false olarak ayarlayın.

Aşağıda station_status.json örneği verilmiştir:

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