GBFS 定義

在繼續本節內容之前,請先驗證您要建構動態饋給的支援微型移動裝置系統

以下各節的標題格式如下: Required|Optional|Conditionally required: Feed name (System supported)。系統支援下列裝置:

  • 已插入座架的系統
  • 無樁系統
  • 有底座和無底座系統

如要順利與 Google 整合,請只提供動態饋給所描述系統所需的檔案,並在相關部分中指定必填欄位。如為必要 (有條件) 欄位,請參閱欄位說明瞭解相關指引。你也可以指定選填欄位,新增資訊並提供更優質的使用者體驗。

微型移動裝置動態饋給的必要標頭

微型移動裝置動態饋給包含停靠式或無樁微型移動裝置結構化資料,如本文所述。

所有動態消息都必須在 JSON 物件的頂層指定下表所列的欄位,這些欄位統稱為常見的 GBFS 標頭

欄位名稱 類型 規定 說明
last_updated 時間戳記 必填 POSIX 時間戳記,指定自 1970 年 1 月 1 日 00:00:00 UTC 起的秒數。

設為動態饋給中資料上次更新的時間。

ttl 非負整數 必填 非負整數,代表距離更新動態消息還有幾秒。

如果資料必須以固定速率更新,請將這個值設為 0

data JSON 必填 包含個別動態消息資料欄位的 JSON。

舉例來說,指定常見 GBFS 標頭的匯總 free_bike_status.json 動態饋給可能如下所示:

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

必要:system_information.json (有底座和無底座的系統)

如有需要,請參閱 GBFS 規格

這個動態饋給提供系統營運商的詳細資料。

欄位名稱 類型 規定 說明
system_id ID 必填 車輛共用系統的全域專屬 ID。這個值在系統生命週期內應維持不變。 車輛運作的每個不同系統或地理區域「應」有自己的 system_id。系統 ID 應可辨識為屬於特定系統,而非隨機字串,例如 bcycle_austin 或 biketown_pdx。
name 字串 必填 系統名稱,會向消費者顯示。
rental_apps 物件 必填 JSON 物件,內含 Android 和 iOS 專屬欄位的租借應用程式資訊。
rental_apps.android 物件 必要 (有條件) store_uridiscovery_uri 欄位包含 Android 平台的租借應用程式下載和應用程式探索資訊。如果系統供應商有 Android 租借應用程式,則必須填寫這個欄位。
rental_apps.android.store_uri URI 必填 可下載租借 Android 應用程式的 URI。這通常是應用程式商店 (例如 Google Play) 的 URI。如果 URI 指向 Google Play 等應用程式商店,建議 URI 遵循 Android 最佳做法,這樣檢視應用程式就能直接開啟 URI,前往原生應用程式商店應用程式,而非網站。
rental_apps.android.discovery_uri URI 必填 URI,格式為 your_custom_scheme://your/path/herePackageManager.queryIntentActivities() 可用來判斷裝置上是否已安裝租賃 Android 應用程式。
rental_apps.ios 物件 必要 (有條件) 包含 iOS 平台在 store_uridiscovery_uri 欄位中的租借應用程式下載和應用程式探索資訊。如果系統供應商有 iOS 租賃應用程式,則必須填寫這個欄位。
rental_apps.ios.store_uri URI 必填 可下載租借 iOS 應用程式的 URI。這通常是應用程式商店 (例如 Apple App Store) 的 URI。如果 URI 指向 Apple App Store 等應用程式商店,建議 URI 遵循 iOS 最佳做法,這樣檢視應用程式就能直接開啟 URI,前往原生應用程式商店應用程式,而非網站。
rental_apps.ios.discovery_uri URI 必填 URI,格式為 your_custom_scheme://UIApplication canOpenURL: 可使用 URI 探索裝置上是否已安裝租借的 iOS 應用程式。

必要:free_bike_status.json (無樁系統)

如有需要,請參閱 GBFS 規格

這項動態饋給會定義可用的獨立車輛位置和屬性。基於隱私考量,這個動態饋給不得顯示正在租用的車輛。

欄位名稱 類型 規定 說明
bikes 陣列 必填 目前可用的停放自行車陣列,每輛自行車都是一個物件。
bikes[].bike_id ID 必填 自行車的 ID。

為保護隱私,每次行程結束後,ID 會變更為隨機字串。

bikes[].lat 緯度 必填 自行車的 WGS 84 緯度,格式為十進制度小數。
bikes[].lon 經度 必填 自行車的 WGS 84 經度,格式為十進制度小數。
bikes[].is_reserved 布林值 必填 單車目前是否已預訂,如下所示:
  • 如果單車目前已預訂,請設為 true
  • 如果目前沒有預訂的單車,請設為 false
bikes[].is_disabled 布林值 必填 車輛目前是否停用或故障,如下所示:
  • 如果單車目前已停用,請設為 true
  • 如果單車目前未停用,請設為 false
bikes[].rental_uris 物件 必填 內含 Android、iOS 和網頁租借 URI 的 JSON 物件,分別位於各自的欄位中。
bikes[].rental_uris.android URI 必要 (有條件) 可傳遞至 Android 應用程式的 URI,並搭配 android.intent.action.VIEW Android 意圖支援 Android 深層連結。提供的 rental_uris 必須是 Android 應用程式連結,這樣一來,如果使用者未安裝供應商應用程式,檢視應用程式就不必手動管理使用者重新導向至應用程式商店的程序。

這個 URI 必須是特定單車的深層連結,不得是包含多輛單車資訊的一般租借頁面。深層連結必須直接將使用者帶往自行車,略過提示訊息、插頁和登入程序。請確認使用者即使未曾開啟應用程式,也能查看自行車。

URI 不一定需要包含單車的 bike_id,只要合作夥伴有其他方式可識別相應單車即可。舉例來說,租車應用程式可以在 URI 中使用其他 ID,專門用來識別自行車。

如果合作夥伴有 Android 租借應用程式,則必須填寫這個欄位。

Android 應用程式連結範例:

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

bikes[].rental_uris.ios URI 必要 (有條件) 可在 iOS 上啟動自行車租借應用程式的 URI。 如要進一步瞭解這項功能,請參閱 Apple 的「 iOS 自訂網址架構」一文。提供的 rental_uris 必須是 iOS 通用連結,這樣一來,如果使用者未安裝供應商應用程式,檢視應用程式就不必手動管理使用者重新導向至應用程式商店的程序。

這個 URI 必須是特定單車的深層連結,不得是包含多輛單車資訊的一般租借頁面。深層連結必須直接將使用者帶往自行車,略過提示訊息、插頁和登入程序。請確認使用者即使未曾開啟應用程式,也能查看自行車。

URI 不一定需要包含單車的 bike_id,只要合作夥伴有其他方式可識別相應單車即可。舉例來說,租車應用程式可以在 URI 中使用其他 ID,專門用來識別自行車。

如果合作夥伴有 iOS 租借應用程式,則必須填寫這個欄位。

iOS 通用連結範例:

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

bikes[].rental_uris.web 網址 選用

網址,網路瀏覽器可透過這個網址顯示有關在該車輛租車的詳細資訊。

這個網址必須是特定單車的深層連結,而非包含多輛單車資訊的一般租借頁面。深層連結必須直接將使用者帶往自行車,略過提示訊息、插頁和登入程序。請確認使用者即使未曾開啟應用程式,也能查看自行車。

網址不一定需要包含自行車的 bike_id,也不一定需要遵循 Android 或 iOS 租賃網址的語意慣例。租賃應用程式可以在網址中使用其他 ID,明確識別自行車。

如果未設定這個欄位,表示網頁瀏覽器不支援深層連結。

範例值:

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

bikes[].vehicle_type_id ID 必填 車輛的 vehicle_type_id,如 vehicle_types.json 一節所述。
bikes[].pricing_plan_id ID 必填 當這個車輛類型如 system_pricing_plans.json 部分所述出租時,所套用的價格方案 ID。
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 ID 必填 特定車輛類型的專屬 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 ID 必填 字串,代表供應商提供的指定價格方案專屬 ID。
plans[].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_km_pricingplans[].per_min_pricing 中各區隔的累計價格。

如未設定這個欄位,系統就不會根據距離計算變動價格,因此總價不會包含這類費用。

plans[].per_km_pricing[].start 非負整數 必填 開始收取路段費率的公里數。 這個欄位會設為區隔範圍的起始含值。因此,一旦達到公里數,系統就會收取一次 rate 費用。
plans[].per_km_pricing[].rate 浮點值 必填 每個 interval 的收費費率,從區隔的含頭不含尾 start 開始計算。如果這個欄位設為負數,旅客可享有折扣。
plans[].per_km_pricing[].interval 非負整數 必填

以公里為單位的間隔,區隔的 rate 會無限期重新套用,除非區隔的 end 設為任何非負整數。

系統會在每個 interval 開始時重新套用 rate,且不會將距離四捨五入。

如果區段的 end 設為任何非負整數,系統會重新套用區段的 rate,直到區段的 end 值 (不含該值) 為止。

如果此欄位設為 0,系統會在該片段的 start 確切收取 rate 一次費用。

plans[].per_km_pricing[].end 非負整數 選用

此為公里數,達到此數值後,系統就不會再套用該路段的rate。這個欄位會設為不含的值,代表區隔範圍的結尾。舉例來說,如果 end 設為 40rate 就不再適用於 40 公里。

如果未設定或留空這個欄位,系統會針對該區段的 rate 收費,直到行程結束為止,此外,後續的任何其他區段也會收費。

plans[].per_min_pricing 陣列 必要 (有條件)

如果價格是經過時間的函數 (以分鐘為單位),則必須填寫這個欄位。

物件陣列,每個物件都會定義特定時間區隔的片段。每個區隔的 start 值必須小於或等於下一個區隔的 start 值。

如要判斷指定方案的總價,請將指定方案的 plans[].price 值加到 plans[].per_km_pricingplans[].per_min_pricing 中各區隔的累計價格。

如果未設定這個欄位,系統就不會根據時間設定變動價格,因此總價不會包含這類價格。

plans[].per_min_pricing[].start 浮點值 必填 開始收取區隔費率的分鐘數。 這個欄位會設為區隔範圍的起始含值。因此,一旦經過設定的分鐘數,系統就會向您收取一次 rate 費用。
plans[].per_min_pricing[].rate 浮點值 必填 每個 interval 的收費率。費率會從片段的 start (含) 開始計算。如果這個欄位設為負數,旅客可享有折扣。
plans[].per_min_pricing[].interval 非負整數 必填

除非區隔的 end 設為任何非負整數,否則系統會以分鐘為間隔,無限期重新套用區隔的 rate

系統會在每個 interval 開始時重新套用 rate,且不會將車程時間四捨五入。

如果區段的 end 設為任何非負整數,系統會重新套用區段的 rate,直到區段的 end 值 (不含該值) 為止。

如果此欄位設為 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 美元
    • 如果行程不到一分鐘,使用者須支付 $2 美元。
    • 示例:59 秒的行程
  • [1,2):$3 美元
    • 如果行程長度為一分鐘以上,但不到兩分鐘,使用者須支付 $2 美元 + $1 美元 = $3 美元。
    • 示例:1 分鐘的行程;1 分 45 秒的行程
  • x 分鐘數 (x 大於或等於 2): $3 + (($2 + $1) * (x - 2 + 1)) 美元
    • 如果行程時間大於或等於兩分鐘,使用者須支付 $3 美元,這筆費用包含前兩分鐘的行程,以及兩分鐘後每分鐘的費用 ($1 美元 [per_min_pricing 清單的第一個項目] + $2 美元 [per_min_pricing 清單的第二個項目])。
    • 範例:
      • 2 分鐘的行程費用為 $3 美元 + ($2 美元 + $1 美元) = $6 美元
      • 2 分 30 秒的行程費用為 $3 + ($2 + $1) = $6 美元
      • 3 分鐘的行程費用為 $3 美元 + (($2 美元 + $1 美元) * 2) = $9 美元
      • 10 分鐘的行程費用為 $3 + (($2 + $1) * 9) = $30 美元
{
  "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 加幣,每分鐘則需支付 $0.50 加幣。
  • 這兩種比率會同時發生,且互不相干。
  • 因此,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 規格

這個動態饋給會定義獨立車輛的地理圍欄資料。地理圍欄資料包括指定車輛可開始和結束行程的地理界線,以及車輛可達到的速度。這項速度是車輛的最高速度或車輛所在道路的速限,以較低者為準。駕駛人必須遵守當地法律和法令。

我們使用這項資料,在使用者搜尋特定路線時,如果行程終點位於特定地理圍欄外,就會篩除微型機動性交通工具的結果。如果未提供地理圍欄,Google 會將服務視為沒有邊界限制。

欄位名稱 類型 規定 說明
geofencing_zones 物件 必填 如  IETF RFC 7946 所述,FeatureCollection 物件是具有名為 features 欄位的物件。features 的值為 JSON 陣列。 JSON 陣列的每個元素都是 Feature 物件。

每個地理圍欄區域、相關聯的規則和屬性,以及 FeatureCollection 的定義,都會在此指定為 geofencing_zones.json 動態饋給定義的一部分。

geofencing_zones.type 字串 必填 請按照 IETF RFC 7946 的說明,將值設為 FeatureCollection
geofencing_zones.features 陣列 必填 JSON 陣列,其中每個元素都是 Feature 物件。
geofencing_zones.features[].type 字串 必填 請按照 IETF RFC 7946 的說明,將值設為 Feature
geofencing_zones.features[].geometry GeoJSON Multipolygon 必填 GeoJSON Multipolygon,說明行程無法開始、結束、經過的地點,以及其他限制。順時針排列的點會定義多邊形圍起的區域,逆時針排列的點則會定義多邊形外的區域。如要進一步瞭解這項規則,請參閱 右手定則
geofencing_zones.features[].properties 物件 必填 定義差旅津貼和限制的物件。
geofencing_zones.features[].properties.rules 陣列 選用 物件陣列,每個物件只定義一項規則。如果兩個以上的規則重疊、衝突或以其他方式發生衝突,JSON 檔案中最早定義的規則會優先套用。
geofencing_zones.features[].properties.rules[].vehicle_type_id 陣列 選用 車輛類型 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 字串 必填 電台的 ID。
stations[].name 字串 必填 車站的公開名稱,以車站所在城市的當地語言顯示。name 必須與車站標誌上使用的名稱相符 (如適用),或透過十字路口或當地地標反映車站位置。除非標誌上明確使用縮寫,否則請勿使用縮寫,例如「St.」代表「Street」,且 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 應用程式的 URI,並搭配 android.intent.action.VIEW Android 意圖,支援 Android 深層連結。提供的 rental_uris 必須是 Android 應用程式連結,這樣一來,如果使用者未安裝供應商應用程式,檢視應用程式就不必手動管理使用者重新導向至應用程式商店的程序。

這個 URI 必須是特定車站的深層連結,而非包含多個車站資訊的一般租借頁面。深層連結必須直接將使用者帶往電台,略過提示訊息、插頁和登入程序。請確認使用者即使未曾開啟應用程式,也能查看電台。

只要合作夥伴有其他方式可識別相應的電台,URI 就不一定需要包含電台的 station_id。舉例來說,租車應用程式可以在 URI 中使用其他 ID,專門用來識別車站。

如果合作夥伴有 Android 租借應用程式,則必須填寫這個欄位。

Android 應用程式連結範例:

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

stations[].rental_uris.ios URI 必要 (有條件)

可在 iOS 上啟動車站租車應用程式的 URI。 如要進一步瞭解這項功能,請參閱 Apple 的文章,瞭解 iOS 自訂網址架構。提供的 rental_uris 必須是 iOS 通用連結,這樣一來,如果使用者未安裝供應商應用程式,檢視應用程式就不必手動管理使用者重新導向至應用程式商店的程序。

這個 URI 必須是特定車站的深層連結,而非包含多個車站資訊的一般租借頁面。深層連結必須直接將使用者帶往電台,略過提示訊息、插頁和登入程序。請確認使用者即使未曾開啟應用程式,也能查看電台。

URI 不一定需要包含電台的 station_id。租賃應用程式可以使用 URI 中的其他 ID,專門識別電台。

如果合作夥伴有 iOS 租借應用程式,則必須填寫這個欄位。

iOS 通用連結範例:

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

stations[].rental_uris.web 網址 選用

網址,網路瀏覽器可透過這個網址顯示更多資訊,說明如何在該車站租車。

這個網址必須是特定車站的深層連結,而非包含多個車站資訊的一般租借頁面。深層連結必須直接將使用者帶往電台,略過提示訊息、插頁和登入程序。請確認使用者即使未曾開啟應用程式,也能查看電台。

網址不一定需要包含電台的 station_id,也不必遵循 Android 或 iOS 租借網址的語意慣例。租賃應用程式可以在網址中使用其他 ID,以專屬方式識別充電站。

如果未設定這個欄位,表示網頁瀏覽器不支援深層連結。

範例值:

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 字串 必填 電台的 ID。
stations[].num_bikes_available 非負整數 必填

非負整數,代表車站內可供出租的自行車數量。

如要判斷車站目前是否提供自行車租借服務,請檢查車站的 is_renting 欄位,並找出 true 布林值。

stations[].vehicle_types_available 陣列 選用

物件陣列,定義車輛總數,並依車站提供的個別車輛類型分類。每個物件都會為相關聯的車輛類型建立車輛總數模型。這些物件的車輛總數必須與 num_bikes_available 欄位中指定的值相符。

stations[].vehicle_types_available[].vehicle_type_id ID 必填

車站提供的每種車輛類型,如 vehicle_types.json 所述。vehicle_type_id

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