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 必須 車両共有システムのグローバルに一意の識別子。この値は、システムのライフサイクル全体を通して同じ値が維持されることを想定しています。車両が運行される個別のシステムまたは地理的エリアには、それぞれ独自の system_id を設定すべきです。システム ID は、ランダムな文字列ではなく、特定のシステムに属するものとして認識できるべきです(例: bcycle_austin、biketown_pdx)。
name 文字列 必須 お客様に表示されるシステムの名前。
rental_apps オブジェクト 必須 Android と iOS のレンタルアプリの情報をそれぞれのフィールドに含む JSON オブジェクト。
rental_apps.android オブジェクト 条件付き必須 store_uri フィールドと discovery_uri フィールドに、Android プラットフォームのレンタルアプリのダウンロードとアプリの検出に関する情報が含まれます。システム プロバイダに Android レンタルアプリがある場合、このフィールドは必須です。
rental_apps.android.store_uri URI 必須 レンタル Android アプリをダウンロードできる URI。通常は、Google Play などのアプリストアの URI です。URI が Google Play などのアプリストアを指している場合は、Android のベスト プラクティスに沿って URI を設定することをおすすめします。そうすることで、閲覧アプリはウェブサイトではなく、ネイティブのアプリストア アプリに URI を直接開くことができます。
rental_apps.android.discovery_uri URI 必須 your_custom_scheme://your/path/here の形式の URI。この URI は、PackageManager.queryIntentActivities() がデバイスにレンタル Android アプリがインストールされているかどうかを検出するために使用できます。
rental_apps.ios オブジェクト 条件付き必須 store_uri フィールドと discovery_uri フィールドに、iOS プラットフォームのレンタルアプリのダウンロードとアプリの検出に関する情報が含まれます。システム プロバイダに 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 必須 your_custom_scheme:// の形式の URI。URI は、UIApplication canOpenURL: でレンタル iOS アプリがデバイスにインストールされているかどうかを検出するために使用できます。

必須: free_bike_status.json(ドックレス システム)

必要に応じて、GBFS 仕様を参照してください。

このフィードでは、利用可能な独立型車両の場所と属性を定義します。プライバシー上の理由から、アクティブなレンタルの対象となる車両はこのフィードに表示されません。

フィールド名 タイプ 要件 説明
bikes 配列 必須 現在利用可能な停止中の自転車の配列。各自転車はオブジェクトです。
bikes[].bike_id ID 必須 自転車の識別子。

プライバシーを保護するため、ID は乗車ごとにランダムな文字列に変更できます。

bikes[].lat 緯度 必須 自転車の WGS 84 緯度(10 進数形式)。
bikes[].lon 経度 必須 自転車の WGS 84 経度(10 進数形式)。
bikes[].is_reserved ブール値 必須 自転車が現在予約されているかどうか(次のとおり)。
  • 自転車が現在予約されている場合は、true に設定します。
  • 自転車が現在予約されていない場合は、false に設定します。
bikes[].is_disabled ブール値 必須 自転車が現在無効になっているか故障しているか。次のいずれかになります。
  • 自転車が現在無効になっている場合は、true に設定します。
  • 自転車が現在無効になっていない場合は、false に設定します。
bikes[].rental_uris オブジェクト 必須 Android、iOS、ウェブのレンタル URI をそれぞれのフィールドに含む JSON オブジェクト。
bikes[].rental_uris.android URI 条件付き必須 Android ディープリンクをサポートするために、android.intent.action.VIEW Android インテントで Android アプリに渡すことができる URI。提供される rental_uris Android アプリリンクである必要があります。これにより、ユーザーがプロバイダ アプリケーションをインストールしていない場合に、ユーザーをアプリストアにリダイレクトする処理を閲覧アプリが手動で管理する必要がなくなります。

この URI は、複数の自転車の情報を含む一般的なレンタル ページではなく、個々の自転車に固有のディープリンクである必要があります。ディープリンクは、プロンプトや、インタースティシャル ページ、ログインなしで、ユーザーを自転車に直接誘導する必要があります。ユーザーがアプリを開いたことがない場合でも、自転車を表示できるようにします。

パートナーがそれぞれの自転車を識別する他の手段を有している限り、自転車の bike_id を URI に含める必要はありません。たとえば、レンタルアプリは URI 内の他の識別子を使用して、自転車を一意に識別できます。

パートナーが Android レンタルアプリを持っている場合、このフィールドは必須です。

Android アプリリンクの例:

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

bikes[].rental_uris.ios URI 条件付き必須 iOS で自転車のレンタルアプリを起動するために使用できる URI。詳しくは、Apple の iOS カスタム URL スキームに関する記事をご覧ください。ユーザーがプロバイダ アプリケーションをインストールしていない場合に、閲覧アプリがユーザーをアプリストアにリダイレクトする処理を手動で管理する必要がないように、提供される rental_uris iOS ユニバーサル リンクである必要があります。

この URI は、複数の自転車の情報を含む一般的なレンタル ページではなく、個々の自転車に固有のディープリンクである必要があります。ディープリンクは、プロンプトや、インタースティシャル ページ、ログインなしで、ユーザーを自転車に直接誘導する必要があります。ユーザーがアプリを開いたことがない場合でも、自転車を表示できるようにします。

パートナーがそれぞれの自転車を識別する他の手段を有している限り、自転車の URI に bike_id を含める必要はありません。たとえば、レンタルアプリは URI 内の他の識別子を使用して、自転車を一意に識別できます。

パートナーが iOS レンタルアプリを持っている場合、このフィールドは必須です。

iOS ユニバーサル リンクの例:

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

bikes[].rental_uris.web URL 省略可

この車両でのレンタカーに関する詳細情報を表示するためにウェブブラウザで使用できる URL。

この URL は、複数の自転車の情報を含む一般的なレンタル ページではなく、個々の自転車に固有のディープリンクである必要があります。ディープリンクは、プロンプトや、インタースティシャル ページ、ログインなしで、ユーザーを自転車に直接誘導する必要があります。ユーザーがアプリを開いたことがない場合でも、自転車を表示できるようにします。

自転車の bike_id を含めることや、Android または iOS のレンタルの URL のセマンティック規約に準拠することは、必ずしも必須ではありません。レンタルアプリは、自転車を一意に識別する他の識別子を URL 内で使用できます。

このフィールドが設定されていない場合、ウェブブラウザでディープリンクがサポートされていないことを意味します。

値の例:

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

bikes[].vehicle_type_id ID 必須 vehicle_types.json セクションで説明されている車両の vehicle_type_id
bikes[].pricing_plan_id 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 ID 必須 特定の車種の一意の識別子。
vehicle_types[].form_factor 列挙型 必須 現在有効な値の次のリストから、車両の一般的なフォーム ファクタを表す列挙型。
  • bicycle
  • scooter
  • other
vehicle_types[].propulsion_type 列挙型 必須 車両の主な推進タイプを表す列挙型。現在有効な値のリストは次のとおりです。
  • human: ペダルまたは足による推進
  • electric_assist: 人力推進と併用してのみ電力を供給する
  • electric: バッテリー駆動のモーターのアクセル モードが含まれます
  • combustion: ガソリン エンジン搭載のモーターのスロットル モードが含まれます
vehicle_types[].max_range_meters 非負の浮動小数 条件付き必須 propulsion_typehuman に設定されていない場合、車両にはモーターが搭載されているため、このフィールドは必須です。

車両が満タンまたは満充電の状態で、充電や給油なしで走行できる最長距離(メートル単位)に設定します。

以下は、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 必須 プロバイダが提供する特定の料金プランの一意の識別子を表す文字列。
plans[].url URL 省略可 料金プランの詳細情報にエンドユーザーを誘導する URL。
plans[].currency 文字列 必須 料金プランの ISO 4217 規格。
plans[].price 非負の浮動小数点数 必須

料金プランは、レートなしの料金プランまたはレートありの料金プランとして定義する必要があります。

Non-rated price plan(料金プランの評価なし)

このプランは一律料金です。

次のフィールドを設定します。

  • price: 旅行全体の定額料金。
Rated price plan

このプランは、区分的線形レートの価格です。

次のフィールドを設定します。

  • price: 基本料金。1 回の乗車につき 1 回だけ請求されます。

次のフィールドのいずれかまたは両方を設定します。

  • per_km_pricing: 1 キロメートルあたりの料金で指定された乗車料金。
  • per_min_pricing: 1 分あたりの料金で指定された乗車料金。
plans[].per_km_pricing 配列 条件付き必須

価格が走行距離(キロメートル単位)の関数である場合は、このフィールドが必須になります。

オブジェクトの配列。各オブジェクトは、特定の距離で分割されたセグメントを定義します。各セグメントの start 値は、次のセグメントの start 値以下にする必要があります。

指定されたプランの合計価格を決定するには、指定されたプランの plans[].price 値を plans[].per_km_pricingplans[].per_min_pricing のセグメントの未払い価格に追加します。

このフィールドが設定されていない場合、距離に基づく変動料金はないため、合計料金の一部として含まれません。

plans[].per_km_pricing[].start 非負整数 必須 セグメント料金の課金が開始される距離(キロメートル単位)。このフィールドは、セグメントの範囲の開始となる包括的な値に設定されます。そのため、走行距離が一定の距離に達すると、rate が 1 回課金されます。
plans[].per_km_pricing[].rate 浮動小数点数 必須 interval に課金されるレート。セグメントの start(この値を含む)から始まります。このフィールドに負の数を設定すると、旅行者は割引を受けられます。
plans[].per_km_pricing[].interval 非負整数 必須

セグメントの rate が無期限に再適用される間隔(キロメートル単位)。ただし、セグメントの end が非負の整数に設定されている場合を除きます。

rate は各 interval の開始時に 1 回再適用され、距離の丸めは考慮されません。

セグメントの end が負でない整数に設定されている場合、セグメントの end 値まで(その値は含まない)セグメントの rate が再適用されます。

このフィールドが 0 に設定されている場合、rate はセグメントの start で 1 回だけ課金されます。

plans[].per_km_pricing[].end 非負整数 省略可

セグメントの rate が適用されなくなる走行距離(キロメートル単位)。このフィールドには、セグメントの範囲の終了を示す除外値が設定されます。たとえば、end40 に設定されている場合、40 キロメートルでは rate は適用されなくなります。

このフィールドが設定されていないか空の場合、セグメントの rate は、その後の追加セグメントに加えて、乗車が終了するまで請求されます。

plans[].per_min_pricing 配列 条件付き必須

価格が経過時間(分単位で表示)の関数である場合は、このフィールドが必須になります。

オブジェクトの配列。各オブジェクトは、特定の時間で分割されたセグメントを定義します。各セグメントの start 値は、次のセグメントの start 値以下にする必要があります。

指定されたプランの合計価格を決定するには、指定されたプランの plans[].price 値を plans[].per_km_pricingplans[].per_min_pricing のセグメントの未払い価格に追加します。

このフィールドが設定されていない場合、時間に基づく変動価格はないため、合計価格に含まれません。

plans[].per_min_pricing[].start 浮動小数点数 必須 セグメント料金の課金が開始されるまでの時間(分単位)。このフィールドは、セグメントの範囲の開始となる包括的な値に設定されます。したがって、設定された時間が経過すると、rate は 1 回課金されます。
plans[].per_min_pricing[].rate 浮動小数点数 必須 interval に請求される料金。レートはセグメントの start(この値を含む)から始まります。このフィールドに負の数を設定すると、旅行者は割引を受けられます。
plans[].per_min_pricing[].interval 非負整数 必須

セグメントの rate が無期限に再適用される間隔(分単位)。ただし、セグメントの end が 0 以上の整数に設定されている場合を除きます。

rate は各 interval の開始時に 1 回再適用され、移動時間の丸めは考慮されません。

セグメントの end が負でない整数に設定されている場合、セグメントの end 値まで(その値は含まない)セグメントの rate が再適用されます。

このフィールドが 0 に設定されている場合、rate はセグメントの start で 1 回だけ課金されます。

plans[].per_min_pricing[].end 非負整数 省略可

セグメントの rate が適用されなくなるまでの時間(分単位)。このフィールドには、セグメントの範囲の終了を示す除外値が設定されます。たとえば、end20 に設定されている場合、rate は 20 分後に適用されなくなります。

このフィールドが設定されていないか空の場合、セグメントの rate は、その後の追加セグメントに加えて、乗車が終了するまで請求されます。

system_pricing_plans.json の例

このセクションでは、有益な system_pricing_plans.json コードサンプルを提供します。各例の関連する詳細と結果も提供されます。

system_pricing_plans.json の例 1

次の料金プランのコードサンプルは、次の間隔の乗車時間に基づく料金を示しています。

  • [0,1): $2 USD
    • 乗車時間が 1 分未満の場合、ユーザーは 2 米ドルを支払います。
    • 例: 59 秒間の旅行
  • [1,2): $3 USD
    • 乗車時間が 1 分以上 2 分未満の場合、お客様は $2 + $1 = $3 米ドルを支払います。
    • 例: 1 分間の乗車、1 分 45 秒間の乗車
  • x が 2 以上の分数: $3 + (($2 + $1) * (x - 2 + 1)) USD
    • 乗車時間が 2 分以上の場合は、2 分未満の部分に対して 3 ドル、2 分以降の部分に対して(per_min_pricing リストの最初の項目から継続して)1 ドル +(per_min_pricing リストの 2 番目の項目)2 ドルを支払います。
    • 例:
      • 2 分間の乗車料金は $3 + ($2 + $1) = $6 USD
      • 2 分 30 秒の乗車料金は 3 米ドル +(2 米ドル + 1 米ドル)= 6 米ドル
      • 3 分間の乗車料金は $3 + (($2 + $1) * 2) = $9 USD
      • 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

この例では、分とキロメートルの両方のレートで課金される料金プランのコードサンプルを示します。

  • 具体的には、エンドユーザーには 1 km あたり $0.25 CAD と 1 分あたり $0.50 CAD が請求されます。
  • これらのレートは同時に発生し、互いに依存していません。
  • したがって、1 km の乗車で 10 分間かかった場合の料金は 9 カナダドルです。料金の内訳は次のとおりです。
    • 基本料金 $3
    • $0.25 * 2。乗車開始時と 1 km 地点で 1 回ずつ課金されます。
    • $0.5 * 11。毎分の開始時に 1 回請求されます。料金は 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 配列。JSON 配列の各要素は Feature オブジェクトです。
geofencing_zones.features[].type 文字列 必須 IETF RFC 7946 で説明されているように、Feature に設定します。
geofencing_zones.features[].geometry GeoJSON マルチポリゴン 必須 乗車を開始、終了、通過できない場所やその他の制限を記述する GeoJSON マルチポリゴン。ポイントの時計回りの配置はポリゴンで囲まれた領域を定義し、反時計回りの順序はポリゴンの外側の領域を定義します。詳細については、 右手の法則をご覧ください。
geofencing_zones.features[].properties オブジェクト 必須 出張手当と制限を定義するオブジェクト。
geofencing_zones.features[].properties.rules 配列 省略可 オブジェクトの配列。各オブジェクトは 1 つのルールのみを定義します。2 つ以上のルールが重複している、競合している、または何らかの形で競合している場合、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 配列 必須 各オブジェクトが 1 つのステーションのみを定義するオブジェクトの配列。
stations[].station_id 文字列 必須 駅の識別子。
stations[].name 文字列 必須 駅がある都市の現地語での駅の正式名称。name は、駅の標識で使用されているもの(利用可能な場合)に準拠するか、交差点や地域のランドマークを使用して駅の位置を反映したものにする必要があります。標識で明示的に使用されている場合を除き、「Street」の略語「St.」は使用しないでください。また、name は、地名の大文字と小文字の使用について各地の慣習に従い、大文字のみではなく、大文字と小文字を併用します。
stations[].lat 緯度 必須 ステーションの WGS 84 緯度(10 進数形式)。
stations[].lon 経度 必須 ステーションの WGS 84 経度(10 進数形式)。
stations[].capacity 非負整数 省略可 ステーションに設置されているドッキング ポイントの総数(使用可能なものと使用できないものの両方)を表す非負の整数。
stations[].rental_uris オブジェクト 必須

Android、iOS、ウェブのレンタル URI をそれぞれのフィールドに含む JSON オブジェクト。

これらの URI が指定されている場合、プロバイダのオンボーディング時に設定されたデフォルトのディープリンクがオーバーライドされます。

stations[].rental_uris.android URI 条件付き必須

Android ディープリンクをサポートするために、android.intent.action.VIEW Android インテントで Android アプリに渡すことができる URI。提供される rental_urisAndroid アプリリンクでなければなりません。これにより、ユーザーがプロバイダ アプリケーションをインストールしていない場合に、ビューアプリがユーザーをアプリストアにリダイレクトする処理を手動で管理する必要がなくなります。

この URI は、複数のステーションの情報を含む一般的なレンタル ページではなく、個々のステーションに固有のディープリンクである必要があります。ディープリンクは、プロンプトや、インタースティシャル ページ、ログインなしで、ユーザーをステーションに直接誘導する必要があります。ユーザーがそのアプリを以前に開いたことがない場合でも、ステーションを表示できるようにしてください。

パートナーがそれぞれのラジオ局を識別する他の手段を持っている限り、ラジオ局の station_id を URI に含める必要はありません。たとえば、レンタルアプリは URI 内の他の識別子を使用して、ステーションを一意に識別できます。

パートナーが Android レンタルアプリを持っている場合、このフィールドは必須です。

Android アプリリンクの例:

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

stations[].rental_uris.ios URI 条件付き必須

iOS でステーションのレンタルアプリを起動するために使用できる URI。詳しくは、Apple の iOS カスタム URL スキームに関する記事をご覧ください。提供される rental_urisiOS ユニバーサル リンクでなければなりません。これにより、ユーザーがプロバイダ アプリケーションをインストールしていない場合に、ビューア アプリがユーザーをアプリストアにリダイレクトする処理を手動で管理する必要がなくなります。

この URI は、複数のステーションの情報を含む一般的なレンタル ページではなく、個々のステーションに固有のディープリンクである必要があります。ディープリンクは、プロンプトや、インタースティシャル ページ、ログインなしで、ユーザーをステーションに直接誘導する必要があります。ユーザーがそのアプリを以前に開いたことがない場合でも、ステーションを表示できるようにしてください。

URI にステーションの station_id を含める必要はありません。レンタルアプリは、URI 内の他の識別子を使用してステーションを一意に識別できます。

パートナーが iOS レンタルアプリを持っている場合、このフィールドは必須です。

iOS ユニバーサル リンクの例:

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

stations[].rental_uris.web URL 省略可

このステーションで車両をレンタルする方法に関する詳細情報を表示するためにウェブブラウザで使用できる URL。

この URL は、複数のステーションの情報を含む一般的なレンタル ページではなく、個々のステーションに固有のディープリンクである必要があります。ディープリンクは、プロンプトや、インタースティシャル ページ、ログインなしで、ユーザーをステーションに直接誘導する必要があります。ユーザーがそのアプリを以前に開いたことがない場合でも、ステーションを表示できるようにしてください。

URL にステーションの station_id を含める必要はありません。また、Android または iOS のレンタル URL のセマンティック規約に準拠する必要もありません。レンタルアプリは、ステーションを一意に識別する他の識別子を URL 内で使用できます。

このフィールドが設定されていない場合、ウェブブラウザでディープリンクがサポートされていないことを意味します。

値の例:

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

以下は、station_information.json の例です。

"stations": [
  {
    "station_id": "597",
    "name": "Silverthorne Road, Battersea",
    "lat": 51.472865,
    "lon": -0.148059,
    "capacity": 10,
    "rental_uris": {
        "android": "https://www.example.com/app?sid=1234567890&platform=android",
        "ios": "https://www.exampleexample.com/app?sid=1234567890&platform=ios",
        "web": "https://www.example.com/app?sid=1234567890&platform=web"
    }
  },
]

必須: station_status.json(ドッキング システム)

必要に応じて、GBFS 仕様を参照してください。

このフィードは、公共のシェアサイクル ステーションの最新のステータスを定義します。

フィールド名 タイプ 要件 説明
stations 配列 必須 オブジェクトの配列。各オブジェクトは 1 つのステーションのみを定義します。
stations[].station_id 文字列 必須 駅の識別子。
stations[].num_bikes_available 非負整数 必須

ステーションに物理的に存在し、レンタル用に提供される可能性がある機能的な自転車の数を表す 0 以上の整数。

ステーションで現在自転車をレンタルしているかどうかを判断するには、ステーションの 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_types.json で定義されている、駅の対応する vehicle_type_id の利用可能な車両の合計数。

stations[].num_docks_available 非負整数 条件付き必須

ステーションのドッキング容量が無制限でない限り、このフィールドは必須です。たとえば、仮想ステーションのドッキング容量は無制限であるため、このフィールドは必須ではありません。

ステーションに物理的に設置され、車両の返却を受け入れることができる機能的なドックの総数を表す非負の整数。

ステーションで現在自転車の返却を受け付けているかどうかを判断するには、ステーションの is_returning フィールドを調べて、true ブール値を見つける必要があります。

stations[].is_installed ブール値 必須

ステーションが現在路上に設置されているかどうかを示すブール値。

ステーションが道路に設置されている場合は、true に設定します。

ステーションが街路に設置されていない場合は、false に設定します。

stations[].is_renting ブール値 必須

ステーションで現在自転車をレンタルしているかどうかを示すブール値。

ステーションで現在自転車をレンタルしている場合は、true に設定します。ステーションが空の場合でも、レンタルを許可するように設定されている場合は、is_rentingtrue に設定されます。

現在、ステーションで自転車のレンタルを行っていない場合は、false に設定します。

stations[].is_returning ブール値 必須

ステーションが現在自転車の返却を受け付けているかどうかを示すブール値。

ステーションが現在自転車の返却を受け付けている場合は、true に設定します。ステーションが満車でも、満車でなければ返却できる場合は、is_returningtrue に設定されます。

ステーションで現在自転車の返却を受け付けていない場合は、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
        },
]