Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add vehicle drop off restrictions #329

Merged
merged 4 commits into from
Sep 3, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 58 additions & 53 deletions gbfs.md
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,7 @@ Field Name | REQUIRED | Type | Defines
\- `propulsion_type` | Yes | Enum | The primary propulsion type of the vehicle. <br /><br />Current valid values are:<br /><ul><li>`human` _(Pedal or foot propulsion)_</li><li>`electric_assist` _(Provides power only alongside human propulsion)_</li><li>`electric` _(Contains throttle mode with a battery-powered motor)_</li><li>`combustion` _(Contains throttle mode with a gas engine-powered motor)_</li></ul> This field was inspired by, but differs from the propulsion types field described in the [Open Mobility Foundation Mobility Data Specification](https://github.com/openmobilityfoundation/mobility-data-specification/blob/master/provider/README.md#propulsion-types).
\- `max_range_meters` | Conditionally REQUIRED | Non-negative float | If the vehicle has a motor (as indicated by having a value other than `human` in the `propulsion_type` field), this field is REQUIRED. This represents the furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential (for example, a full battery or full tank of gas).
\- `name` | OPTIONAL | String | The public name of this vehicle type.
\- `return_type`<br/>*(added in v2.3-RC)*|| OPTIONAL | Array | The conditions for returning the vehicle at the end of the trip. For vehicles that have more than one return option, include all applicable methods in the array. <br /><br />Current valid values are:<br /><ul><li>`free_floating` _(The vehicle can be returned anywhere permitted within the service area - note that this field is subject to rules in `geofencing_zones.json` if defined.)_</li><li>`roundtrip_station` _(The vehicle must be returned to the initial rental station. Cannot be defined in combination with `free_floating`.)_</li><li>`any_station` _(The vehicle must be returned to any station within the service area - note that a specific station can be defined in [free_bike_status.json](#free_bike_status.json) using `home_station`. Cannot be defined in combination with `roundtrip_station`.)_
\- `vehicle_assets`<br/>*(added in v2.3-RC)*| OPTIONAL | Object | An object where each key defines one of the items listed below.
&emsp;&emsp;\- `icon_url`<br/>*(added in v2.3-RC)*| Conditionally REQUIRED | URL | REQUIRED if `vehicle_assets` is defined. A fully qualified URL pointing to the location of a graphic icon file that MAY be used to represent this vehicle type on maps and in other applications. File MUST be in SVG V1.1 format and MUST be either square or round.
&emsp;&emsp;\- `icon_url_dark`<br/>*(added in v2.3-RC)*| OPTIONAL | URL | A fully qualified URL pointing to the location of a graphic icon file to be used to represent this vehicle type when in dark mode on maps and in other applications. File MUST be in SVG V1.1 format and MUST be either square or round.
Expand All @@ -424,57 +425,60 @@ Field Name | REQUIRED | Type | Defines

```jsonc
{
"last_updated": 1609866247,
"ttl": 0,
"version": "3.0",
"data": {
"vehicle_types": [
{
"vehicle_type_id": "abc123",
"form_factor": "bicycle",
"propulsion_type": "human",
"name": "Example Basic Bike",
"vehicle_assets": {
"icon_url": "https://www.example.com/assets/icon_bicycle.svg",
"icon_url_dark": "https://www.example.com/assets/icon_bicycle_dark.svg",
"icon_last_modified": "2021-06-15"
}
"default_pricing_plan": "bike_plan_1",
"pricing_plans": [
"bike_plan_1",
"bike_plan_2",
"bike_plan_3"
]
},
{
"vehicle_type_id": "def456",
"form_factor": "scooter",
"propulsion_type": "electric",
"name": "Example E-scooter V2",
"max_range_meters": 12345,
"vehicle_assets": {
"icon_url": "https://www.example.com/assets/icon_escooter.svg",
"icon_url_dark": "https://www.example.com/assets/icon_escooter_dark.svg",
"icon_last_modified": "2021-06-15"
}
"default_pricing_plan": "scooter_plan_1"
},
{
"vehicle_type_id": "car1",
"form_factor": "car",
"propulsion_type": "combustion",
"name": "Four-door Sedan",
"max_range_meters": 12345,
"vehicle_assets": {
"icon_url": "https://www.example.com/assets/icon_car.svg",
"icon_url_dark": "https://www.example.com/assets/icon_car_dark.svg",
"icon_last_modified": "2021-06-15"
}
"max_range_meters": 523992,
"default_pricing_plan": "car_plan_1"
}
]
}
"last_updated": 1609866247,
"ttl": 0,
"version": "3.0",
"data": {
"vehicle_types": [{
"vehicle_type_id": "abc123",
"form_factor": "bicycle",
"propulsion_type": "human",
"name": "Example Basic Bike",
"return_type": ["any_station", "free_floating"],
"vehicle_assets": {
"icon_url": "https://www.example.com/assets/icon_bicycle.svg",
"icon_url_dark": "https://www.example.com/assets/icon_bicycle_dark.svg",
"icon_last_modified": "2021-06-15"
},
"default_pricing_plan": "bike_plan_1",
"pricing_plans": [
"bike_plan_1",
"bike_plan_2",
"bike_plan_3"
]
},
{
"vehicle_type_id": "def456",
"form_factor": "scooter",
"propulsion_type": "electric",
"name": "Example E-scooter V2",
"max_range_meters": 12345,
"return_type": ["free_floating"],
"vehicle_assets": {
"icon_url": "https://www.example.com/assets/icon_escooter.svg",
"icon_url_dark": "https://www.example.com/assets/icon_escooter_dark.svg",
"icon_last_modified": "2021-06-15"
},
"default_pricing_plan": "scooter_plan_1"

},
{
"vehicle_type_id": "car1",
"form_factor": "car",
"propulsion_type": "combustion",
"name": "Four-door Sedan",
"max_range_meters": 523992,
"return_type": ["roundtrip_station"],
"vehicle_assets": {
"icon_url": "https://www.example.com/assets/icon_car.svg",
"icon_url_dark": "https://www.example.com/assets/icon_car_dark.svg",
"icon_last_modified": "2021-06-15"
},
"default_pricing_plan": "car_plan_1"

}
]
}
}
```

Expand Down Expand Up @@ -704,9 +708,9 @@ Field Name | REQUIRED | Type | Defines
\- `last_reported` <br/>*(added in v2.1)* | OPTIONAL | Timestamp | The last time this vehicle reported its status to the operator's backend.
\- `current_range_meters` <br/>*(added in v2.1)* | Conditionally REQUIRED | Non-negative float | If the corresponding `vehicle_type` definition for this vehicle has a motor, then this field is REQUIRED. This value represents the furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel.
\- `station_id` <br/>*(added in v2.1)* | Conditionally REQUIRED | ID | Identifier referencing the `station_id` field in [station_information.json](#station_informationjson). REQUIRED only if the vehicle is currently at a station and the [vehicle_types.json](#vehicle_typesjson) file has been defined.
\- `home_station` | OPTIONAL | ID | The `station_id` of the station this vehicle must be returned to as defined in [station_information.json](#station_ifnormation.json).
\- `pricing_plan_id` <br/>*(added in v2.2)* | OPTIONAL | ID | The `plan_id` of the pricing plan this vehicle is eligible for as described in [system_pricing_plans.json](#system_pricing_plans.json). If this field is defined it supersedes `default_pricing_plan` in `vehicle_types.json`. This field SHOULD be used to override `default_pricing_plan_id` in `vehicle_types.json` to define pricing plans for individual vehicles when necessary.


##### Example:

```jsonc
Expand All @@ -733,7 +737,8 @@ Field Name | REQUIRED | Type | Defines
"vehicle_type_id": "def456",
"current_range_meters": 6543,
"station_id": "86",
"pricing_plan_id": "plan3"
"pricing_plan_id": "plan3",
"home_station": "146"
}
]
}
Expand Down