From c901afbf78c080c3636138cf99c9c7d12c0ff661 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Wed, 8 Feb 2023 16:06:31 -0500 Subject: [PATCH 01/29] Car share, maintenance, API tweaks --- README.md | 26 ++++++++++++++------------ modes/car-share.md | 23 ++++++++++++++++++----- modes/event_types.md | 7 ++++--- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index dc39e6bf..5535d0db 100644 --- a/README.md +++ b/README.md @@ -36,49 +36,49 @@ The Mobility Data Specification (**MDS**), a project of the [Open Mobility Found -The [`provider`][provider] API endpoints are intended to be implemented by mobility providers and consumed by regulatory agencies. When a municipality queries information from a mobility provider, the Provider API has a historical view of operations in a standard format. It was first released in June 2018. +The [`provider`][provider] API endpoints are intended to be implemented by mobility providers and consumed by regulatory agencies. Data is **pulled** from providers by agencies. When a municipality queries information from a mobility provider, the Provider API provides historical and recent views of operations. First released in June 2018. --- -The [`agency`][agency] API endpoints are intended to be implemented by regulatory agencies and consumed by mobility providers. Providers query the Agency API when events (such as a trip start or vehicle status change) occur in their systems. It was first released in April 2019. +The [`agency`][agency] API endpoints are intended to be implemented by regulatory agencies and consumed by mobility providers. Data is **pushed** to agencies by providers. Providers query the Agency API when events (such as a trip start or vehicle status change) occur in their systems. First released in April 2019. --- -The [`policy`][policy] API endpoints are intended to be implemented by regulatory agencies and consumed by mobility providers. Providers query the Policy API to get information about local rules that may affect the operation of their mobility service or which may be used to determine compliance. It was first released in October 2019. +The [`policy`][policy] API endpoints are intended to be implemented by regulatory agencies and consumed by mobility providers. Providers query the Policy API to get information about local rules that may affect the operation of their mobility service or which may be used to determine compliance. First released in October 2019. --- -The [`geography`][geography] API endpoints are intended to be implemented by regulatory agencies and consumed by mobility providers. Providers query the Policy API to get information about geographical regions for regulatory and other purposes. It was first released in October 2019, originally included as part of the Policy specification. +The [`geography`][geography] API endpoints are intended to be implemented by regulatory agencies and consumed by mobility providers. Providers query the Geography API to get information about geographical regions for regulatory and other purposes. First released in October 2019, as part of the Policy specification. --- -The [`jurisdiction`][jurisdiction] API endpoints are intended to be implemented by regulatory agencies that have a need to coordinate with each other. The jurisdiction endpoints allow cities to communicate boundaries between one another and to mobility providers. It was first released in March 2021. +The [`jurisdiction`][jurisdiction] API endpoints are intended to be implemented by regulatory agencies that have a need to coordinate with each other. The Jurisdiction API endpoints allow cities to communicate boundaries between one another and to mobility providers. First released in March 2021. --- -The [`metrics`](/metrics) API endpoints are intended to be implemented by regulatory agencies or their appointed third-party representatives to have a standard way to consistently describe available metrics, and create an extensible interface for querying MDS metrics. It was first released in March 2021. +The [`metrics`](/metrics) API endpoints are intended to be implemented by regulatory agencies or their appointed third-party representatives to have a standard way to consistently describe available metrics, and create an extensible interface for querying MDS metrics. First released in March 2021. --- ## Modularity -MDS is designed to be a modular kit-of-parts. Regulatory agencies can use the components of the API that are appropriate for their needs. An agency may choose to use only `agency`, `provider`, or `policy`. Other APIs like `geography`, `jurisdiction`, and `metrics` can be used in coordination as described with these APIs or sometimes on their own. Or agencies may select specific elements (endpoints) from each API to help them implement their goals. Development of the APIs takes place under the guidance of the OMF's [MDS Working Group](https://github.com/openmobilityfoundation/mobility-data-specification/wiki/MDS-Working-Group). +MDS is designed to be a modular kit-of-parts. Regulatory agencies can use the components of the API that are appropriate for their needs. An agency may choose to use only `agency`, `provider`, and/or `policy`. Other APIs like `geography`, `jurisdiction`, and/or `metrics` can be used in coordination as described with these APIs or sometimes on their own. Or agencies may select specific elements (endpoints) from each API to help them implement their goals. Development of the APIs takes place under the guidance of the OMF's [MDS Working Group](https://github.com/openmobilityfoundation/mobility-data-specification/wiki/MDS-Working-Group). Many parts of the MDS definitions and APIs align across each other. In these cases, consolidated information can be found on the [General Information](/general-information.md) page. You can read more in our **[Understanding the different MDS APIs](https://github.com/openmobilityfoundation/governance/blob/main/technical/Understanding-MDS-APIs.md)** guide. -![MDS APIs and Endpoints](https://i.imgur.com/cCjI0RS.png) +![MDS APIs and Endpoints](https://i.imgur.com/i27Mmfw.png) ## GBFS Requirement @@ -97,7 +97,7 @@ MDS supports multiple "modes", defined as a distinct regulatory framework for a
@@ -107,7 +107,7 @@ MDS supports multiple "modes", defined as a distinct regulatory framework for a # Versions -MDS has a **current release** (version 1.2.0), **previous releases** (both recommended and longer recommended for use), and **upcoming releases** in development. For a full list of releases, their status, recommended versions, and timelines, see the [Official MDS Releases](https://github.com/openmobilityfoundation/governance/wiki/Releases) page. +MDS has a **current release** (version 2.0.0), **previous releases** (both recommended and longer recommended for use), and **upcoming releases** in development. For a full list of releases, their status, recommended versions, and timelines, see the [Official MDS Releases](https://github.com/openmobilityfoundation/governance/wiki/Releases) page. The OMF provides guidance on upgrading for cities, providers, and software companies, and sample permit language for cities. See our [MDS Version Guidance](https://github.com/openmobilityfoundation/governance/blob/main/technical/OMF-MDS-Version-Guidance.md) for best practices on how and when to upgrade MDS as new versions become available. Our complimentary [MDS Policy Language Guidance](https://github.com/openmobilityfoundation/governance/blob/main/technical/OMF-MDS-Policy-Language-Guidance.md) document is for cities writing MDS into their operating policy and includes sample policy language. @@ -177,7 +177,9 @@ To add yourself to the provider list, please let us know [via our website](https An open source approach to data specifications benefits cities and companies by creating a space for collaborative development, reducing costs, and nurturing a healthy, competitive ecosystem for mobility services and software tools. The open model promotes a competitive ecosystem for software tools built by dozens of software companies providing their services to cities, agencies, and providers. -- See our **[list of third party software companies using MDS](https://www.openmobilityfoundation.org/mds-users/#software-companies-using-mds)** and an article about the [benefits of an open approach](https://www.openmobilityfoundation.org/why-open-behind-omfs-unique-open-source-model/). +- See our **[list of third party software companies using MDS](https://www.openmobilityfoundation.org/mds-users/#software-companies-using-mds)** and an article about the [benefits of an open approach](https://www.openmobilityfoundation.org/why-open-behind-omfs-unique-open-source-model/). For a table list with unique IDs, see the MDS [provider list](/providers.csv) which includes both service operators and data solution providers. + +To add yourself to the provider list (as a data solution providers), please let us know [via our website](https://www.openmobilityfoundation.org/get-in-touch/) or open an [Issue](https://github.com/openmobilityfoundation/mobility-data-specification/issues) or [Pull Request](https://github.com/openmobilityfoundation/mobility-data-specification/pulls). Find out how in our [Adding an Provider ID](https://github.com/openmobilityfoundation/mobility-data-specification/wiki/Adding-an-MDS-Provider-ID) help document. Please [let us know](https://www.openmobilityfoundation.org/get-in-touch/) if you are using MDS in your company so we can add you to the list. @@ -233,4 +235,4 @@ Please [let us know](https://www.openmobilityfoundation.org/get-in-touch/) if yo [jurisdiction]: /jurisdiction/README.md [metrics]: /metrics/README.md [modes]: /modes/README.md -[toc]: #table-of-contents +[toc]: #table-of-contents \ No newline at end of file diff --git a/modes/car-share.md b/modes/car-share.md index cd079e2c..33c95419 100644 --- a/modes/car-share.md +++ b/modes/car-share.md @@ -92,8 +92,8 @@ The `trip_type` field **must** have one of the following enumerated values: The `trip_attributes` array **may** have the following key value pairs: -- `hail_type` (enumerated, required): `phone_dispatch`, `phone`, `text`, `app` -- `app_name` (text, optional): name of the app used to reserve the trip which could be provider's app or 3rd party app +- `reservation_type` (enumerated, required): how was the vehicle reserved, one of `phone_dispatch`, `phone`, `text`, `app` +- `app_name` (text, optional): name of the app used to reserve the vehicle which could be provider's app or 3rd party app - `permit_license_number` (string, optional) - The permit license number of the organization that dispatched the vehicle - `driver_id` (string, optional): Universal identifier of a specific driver, static across operators, like a driver's license number, for company employees in `reservation` or `empty` trip types, not `private` trips. Could also be used as a lookup in an agency's internal driver system. @@ -138,6 +138,17 @@ The `vehicle_attributes` array **may** have the following key value pairs: - `toll_transponder` (boolean, optional) - toll transponder for national/regional toll system - `phone_charger` (boolean, optional) - a place to charge your phone - `sunshade` (boolean, optional) - sunshade available (i.e. for windshield) +- `cargo_volume_capacity` (integer, optional) - Cargo volume available in the vehicle, expressed in liters. For cars, it corresponds to the space between the boot floor, including the storage under the hatch, to the rear shelf in the trunk. +- `cargo_load_capacity` (integer, optional) - The capacity of the vehicle cargo space (excluding passengers), expressed in kilograms. +- `door_count` (integer, optional) - number of doors this vehicle type has +- `wheel_count` (integer, optional) - number of wheels this vehicle type has +- `air_conditioning` (boolean, optional) - vehicle has air conditioning +- `gear_switch` (enum, optional) - one of `automatic`, `manual` +- `convertible` (boolean, optional) - vehicle has a retractable roof +- `cruise_control` (boolean, optional) - vehicle has a cruise control system +- `navigation` (boolean, optional) - vehicle has a built-in navigation system + +Note many of these attributes come from fields in [GBFS vehicle_types](https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#vehicle_typesjson). [Top][toc] @@ -182,8 +193,9 @@ Valid car share vehicle event types are - `decommission` - `fueling_start` - `fueling_end` +- `maintenance` +- `maintenance_pick_up` - `maintenance_end` -- `maintenance_start` - `passenger_cancellation` - `provider_cancellation` - `recommission` @@ -224,12 +236,13 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `non_operational` | `available` | N/A | `service_start` | The vehicle has went into service (is available for-hire) | | `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | | `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | -| `non_operational` | `removed` | N/A | `maintenance_start` | The vehicle has entered the depot for maintenance | +| `non_operational` | `removed` | N/A | `maintenance` | The vehicle is undergoing maintenance on site | +| `non_operational` | `removed` | N/A | `maintenance_pick_up` | The vehicle has entered the depot for maintenance | | `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while not operating commercially | | `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | | `on_trip` | `stopped` | `stopped` | `trip_stop` | The vehicle has stopped while on a trip | | `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip | -| `removed` | `non_operational` | N/A | `maintenance_end` | The vehicle has left the depot | +| `removed` | `non_operational` | N/A | `maintenance_end` | The vehicle maintenance work has ended | | `removed` | `non_operational` | N/A | `recommissioned` | The vehicle has been re-added to the Provider's fleet after being previously `decommissioned` | | `removed` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while removed | | `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | diff --git a/modes/event_types.md b/modes/event_types.md index c781d4cf..81b4e476 100644 --- a/modes/event_types.md +++ b/modes/event_types.md @@ -21,10 +21,11 @@ As with all MDS definitions, they should be described in a way that maximizes th | `driver_cancellation` | Driver cancelled a trip | | `fueling_start` | Fueling starts | | `fueling_end` | Fueling ends | -| `not_located` | Location unknown | +| `not_located` | Location unknown | | `located` | Location found (opposite of Missing) | -| `maintenance` | General maintenance | -| `maintenance_pick_up` | Pick up for maintenance | +| `maintenance` | Start general maintenance in right of way | +| `maintenance_pick_up` | Start pick up for maintenance outside of right of way | +| `maintenance_end` | End of maintenance | | `off_hours` | Off hours - end of service | | `on_hours` | On hours - start of service | | `customer_cancellation` | Customer cancelled a trip | From d4c6b31569c6ca5f02b074e9f242c0cae60e7935 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Wed, 8 Feb 2023 22:01:23 -0500 Subject: [PATCH 02/29] New Micromobility state machine diagram --- modes/micromobility-state-machine-diagram.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modes/micromobility-state-machine-diagram.svg b/modes/micromobility-state-machine-diagram.svg index 38d2e2dd..32773d87 100644 --- a/modes/micromobility-state-machine-diagram.svg +++ b/modes/micromobility-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 3ebfd3798125be71c251243558535f5b7daa9990 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Wed, 8 Feb 2023 22:04:10 -0500 Subject: [PATCH 03/29] Micromobility state machine svg embed --- modes/micromobility.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modes/micromobility.md b/modes/micromobility.md index 456898fa..4de6f8c3 100644 --- a/modes/micromobility.md +++ b/modes/micromobility.md @@ -222,9 +222,9 @@ Vehicles can exit the `missing` state to any other state with the following even ### State Machine Diagram -This *State Machine Diagram* shows how `vehicle_state` and `event_type` relate to each other and how vehicles can transition between states. See [Google Slides](https://docs.google.com/presentation/d/1fHdq1efbN5GSFDLF4en-oA_BYPXQKbbIbHff6iROJKA/edit#slide=id.g924900addd_1_0) for the source file. +This *State Machine Diagram* shows how `vehicle_state` and `event_type` relate to each other and how vehicles can transition between states. See [Google Slides](https://docs.google.com/presentation/d/1fHdq1efbN5GSFDLF4en-oA_BYPXQKbbIbHff6iROJKA/edit#slide=id.g206f7c6e12e_0_0) for the source file. -![micromobility-state-machine-diagram-2 0 0](https://user-images.githubusercontent.com/58531352/208538219-78d71c0e-fccc-4edd-b624-95e0b4364ebf.svg) +![micromobility-state-machine-diagram](/modes/micromobility-state-machine-diagram.svg) [Top][toc] From 5ccdbf66cfa1c2258531d9c27768be3a6e5f198c Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Wed, 8 Feb 2023 22:18:47 -0500 Subject: [PATCH 04/29] Branding on state machine diagram --- modes/micromobility-state-machine-diagram.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modes/micromobility-state-machine-diagram.svg b/modes/micromobility-state-machine-diagram.svg index 32773d87..36af2d93 100644 --- a/modes/micromobility-state-machine-diagram.svg +++ b/modes/micromobility-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 086a250b69ea1214d1db94425a65dbec1d0597e4 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Wed, 8 Feb 2023 22:55:26 -0500 Subject: [PATCH 05/29] Micro SMD all SVG --- modes/micromobility-state-machine-diagram.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modes/micromobility-state-machine-diagram.svg b/modes/micromobility-state-machine-diagram.svg index 36af2d93..57a4cb61 100644 --- a/modes/micromobility-state-machine-diagram.svg +++ b/modes/micromobility-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 8e8b4e69b88afd0eaef9971e2c2f291c50e63b90 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 07:37:33 -0500 Subject: [PATCH 06/29] All vector SMD logos and trip outline --- modes/micromobility-state-machine-diagram.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modes/micromobility-state-machine-diagram.svg b/modes/micromobility-state-machine-diagram.svg index 57a4cb61..efacdaeb 100644 --- a/modes/micromobility-state-machine-diagram.svg +++ b/modes/micromobility-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From b5759a3e7730656fc4340dc575e90f3e4c80ac70 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 15:30:15 -0500 Subject: [PATCH 07/29] Added link to MobilityData guide --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5535d0db..a99aed84 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,9 @@ You can read more in our **[Understanding the different MDS APIs](https://github ## GBFS Requirement -All MDS compatible Provider and/or Agency feeds must also expose a public [GBFS](https://github.com/NABSA/gbfs) feed for the micromobility and car share [modes](/modes) (passenger services and delivery robots may be optionally supported at the discretion of the agency running the program). Compatibility with [GBFS 2.2](https://github.com/NABSA/gbfs/blob/v2.2/gbfs.md) or greater is advised, or the version recommended per MobilityData's [supported releases](https://github.com/MobilityData/gbfs#past-version-releases) guidance. See our [MDS Vehicles Guide](https://github.com/openmobilityfoundation/mobility-data-specification/wiki/MDS-Vehicles) for how MDS Provider/Agency `/vehicles` can be used by regulators instead of the public GBFS `/free_bike_status`. Additional information on MDS and GBFS can be found in this [guidance document](https://github.com/openmobilityfoundation/governance/blob/main/technical/GBFS_and_MDS.md). +All MDS compatible Provider and/or Agency feeds must also expose a public [GBFS](https://github.com/NABSA/gbfs) feed for the micromobility and car share [modes](/modes) (passenger services and delivery robots may be optionally supported at the discretion of the agency running the program). Compatibility with [GBFS 2.2](https://github.com/NABSA/gbfs/blob/v2.2/gbfs.md) or greater is advised, or the version recommended per MobilityData's [supported releases](https://github.com/MobilityData/gbfs#past-version-releases) guidance. Read MobilityData's RFP recommendations and required files list in their [GBFS and Shared Mobility Data Policy guide](https://mobilitydata.org/gbfs-and-shared-mobility-data-policy/). + +See our [MDS Vehicles Guide](https://github.com/openmobilityfoundation/mobility-data-specification/wiki/MDS-Vehicles) for how MDS Provider/Agency `/vehicles` can be used by regulators instead of the public GBFS `/free_bike_status`. Additional information on MDS and GBFS can be found in this [guidance document](https://github.com/openmobilityfoundation/governance/blob/main/technical/GBFS_and_MDS.md). [Top][toc] @@ -235,4 +237,4 @@ Please [let us know](https://www.openmobilityfoundation.org/get-in-touch/) if yo [jurisdiction]: /jurisdiction/README.md [metrics]: /metrics/README.md [modes]: /modes/README.md -[toc]: #table-of-contents \ No newline at end of file +[toc]: #table-of-contents From 0473848b72c1f538e246798660e6efa2f0d9f2a1 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:39:35 -0500 Subject: [PATCH 08/29] Update mode text --- provider/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/README.md b/provider/README.md index 92ce4186..f5b785bb 100644 --- a/provider/README.md +++ b/provider/README.md @@ -62,7 +62,7 @@ Versioning must be implemented as specified in the [Versioning section][versioni ### Modes -MDS is intended to be used for multiple transportation modes, including its original micromobility (e-scooters, bikes, etc.) as well as additional modes such as taxis and delivery bots. A given `provider_id` shall be associated with a single mobility [mode], so that the mode does not have to be specified in each data structure and API call. A provider implementing more than one mode shall [register](/README.md#providers-using-mds) a `provider_id` for each mode. +MDS is intended to be used for multiple transportation modes, including its original micromobility (e-scooters, bikes, etc.) mode, as well as additional modes such as taxis, car share, and delivery bots. A given `provider_id` shall be associated with a single mobility [mode], so that the mode does not have to be specified in each data structure and API call. A provider implementing more than one mode shall [register](/README.md#providers-using-mds) a unique `provider_id` for each mode. [Top][toc] From c983956afcfe9f2a8d74b0120fa2a416dd8df82f Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:39:57 -0500 Subject: [PATCH 09/29] update mode text Agency --- agency/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agency/README.md b/agency/README.md index 2968bb65..1f046f66 100644 --- a/agency/README.md +++ b/agency/README.md @@ -52,7 +52,7 @@ Versioning must be implemented as specified in the [Versioning section][versioni ### Modes -MDS is intended to be used for multiple transportation modes, including its original micromobility (e-scooters, bikes, etc.) as well as additional modes such as taxis and delivery bots. A given `provider_id` shall be associated with a single mobility [mode][modes], so that the mode does not have to be specified in each data structure and API call. A provider implementing more than one mode shall [register](/README.md#providers-using-mds) a `provider_id` for each mode. +MDS is intended to be used for multiple transportation modes, including its original micromobility (e-scooters, bikes, etc.) mode, as well as additional modes such as taxis, car share, and delivery bots. A given `provider_id` shall be associated with a single mobility [mode], so that the mode does not have to be specified in each data structure and API call. A provider implementing more than one mode shall [register](/README.md#providers-using-mds) a unique `provider_id` for each mode. [Top][toc] From e58e57bbbf5737098f85c1d1c1ec23989e5a0885 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:42:59 -0500 Subject: [PATCH 10/29] Added provider id section to modes --- modes/README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modes/README.md b/modes/README.md index 3e7b9da7..f52c2799 100644 --- a/modes/README.md +++ b/modes/README.md @@ -7,9 +7,10 @@ All MDS APIs should be mode-agnostic. ## Table of Contents - [Modes](#modes) + - [Provider ID](#provider-id) - [List of Supported Modes](#list-of-supported-modes) - [Mode Attributes](#mode-attributes) -- [Unique Mode Properties](#unique-mode-properties) +- [Mode Properties](#mode-properties) ## Modes @@ -25,6 +26,12 @@ Each mode defined in MDS shall include key descriptive information, such as jour [Top][toc] +### Provider ID + +MDS is intended to be used for multiple transportation modes, including its original micromobility (e-scooters, bikes, etc.) mode, as well as additional modes such as taxis, car share, and delivery bots. A given `provider_id` shall be associated with a single mobility [mode], so that the mode does not have to be specified in each data structure and API call. A provider implementing more than one mode shall [register](/README.md#providers-using-mds) a unique `provider_id` for each mode. + +[Top][toc] + ## List of Supported Modes - **[Micromobility](/modes/micromobility.md)** (`micromobility`) - dockless or docked small devices such as e-scooters and bikes. @@ -82,9 +89,9 @@ The `accessibility_options` array returns a list of JSON-formatted key/value pai [Top][toc] -## Unique Mode Properties +## Mode Properties -While each mode is unique in its operational and business models, there are several areas where there are significant differences from one mode to the next. Each of these areas is defined in more detail within the mode, and each pull from a base of options defined in a global location. +While each mode is unique in its operational and business models, there are several areas where there are significant differences from one mode to the next. Each of these areas is defined in more detail within the mode, and each pull from a base of options defined in a central location. ### Vehicle States From 3cd892fa5697ad3e9bec47f00e5a865d2444adf8 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:43:31 -0500 Subject: [PATCH 11/29] Fix link typo --- modes/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modes/README.md b/modes/README.md index f52c2799..dff5c164 100644 --- a/modes/README.md +++ b/modes/README.md @@ -28,7 +28,7 @@ Each mode defined in MDS shall include key descriptive information, such as jour ### Provider ID -MDS is intended to be used for multiple transportation modes, including its original micromobility (e-scooters, bikes, etc.) mode, as well as additional modes such as taxis, car share, and delivery bots. A given `provider_id` shall be associated with a single mobility [mode], so that the mode does not have to be specified in each data structure and API call. A provider implementing more than one mode shall [register](/README.md#providers-using-mds) a unique `provider_id` for each mode. +MDS is intended to be used for multiple transportation modes, including its original micromobility (e-scooters, bikes, etc.) mode, as well as additional modes such as taxis, car share, and delivery bots. A given `provider_id` shall be associated with a single mobility mode, so that the mode does not have to be specified in each data structure and API call. A provider implementing more than one mode shall [register](/README.md#providers-using-mds) a unique `provider_id` for each mode. [Top][toc] From 505c9f10e1ec4ad42b54f62a6195bd7a493b5cdf Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:55:51 -0500 Subject: [PATCH 12/29] Add mode_id to provider.csv --- providers.csv | 100 +++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/providers.csv b/providers.csv index ead70dad..9fdd93be 100644 --- a/providers.csv +++ b/providers.csv @@ -1,50 +1,50 @@ -provider_name,provider_id,url,mds_api_url,gbfs_api_url -JUMP,c20e08cf-8488-46a6-a66c-5d8fb827f7e0,https://jump.com,https://api.uber.com/v0.2/emobility/mds, -Lime,63f13c48-34ff-49d2-aca7-cf6a5b6171c3,https://li.me,https://data.lime.bike/api/partners/v1/mds, -Bird,2411d395-04f2-47c9-ab66-d09e9e3c3251,https://www.bird.co,https://mds.bird.co,https://mds.bird.co/gbfs -Razor,6ddcc0ad-1d66-4046-bba4-d1d96bb8ca4d,https://www.razor.com/share,https://razor-200806.appspot.com/api/v2/mds, -Lyft,e714f168-ce56-4b41-81b7-0b6a4bd26128,https://www.lyft.com,https://api.lyft.com/v1/last-mile/mds, -Skip,d73fcf80-22b1-450f-b535-042b4e30aac7,https://www.skipscooters.com,https://api.skipscooters.com/mds, -HOPR,2e4cb206-b475-4a9d-80fb-0880c9a033e0,https://gohopr.com,https://gbfs.hopr.city/api/mds, -Wheels,b79f8687-526d-4ae6-80bf-89b4c44dc071,https://wheels.co,https://mds.getwheelsapp.com, -Spin,70aa475d-1fcd-4504-b69c-2eeb2107f7be,https://www.spin.app,https://web.spin.pm/api/mds/v1, -WIND,d56d2df6-fa92-43de-ab61-92c3a84acd7d,https://www.wind.co,https://partners.wind.co/v1/mds, -Tier,264aad41-b47c-415d-8585-0208d436516e,https://www.tier.app,https://partner.tier-services.io/mds, -Cloud,bf95148b-d1d1-464e-a140-6d2563ac43d4,https://www.cloud.tt,https://mds.cloud.tt,https://mds.cloud.tt/gbfs -BlueLA,f3c5a65d-fd85-463e-9564-fc95ea473f7d,https://www.bluela.com,https://api.bluela.com/mds/v0,https://api.bluela.com/gbfs/v1/meta -Bolt,3291c288-c9c8-42f1-bc3e-8502b077cd7f,https://www.micromobility.com/,https://bolt.miami/bolt2/api/mds, -CLEVR,daecbe87-a9f2-4a5a-b5df-8e3e14180513,https://clevrmobility.com,https://portal.clevrmobility.com/api/mds, -SherpaLA,3c95765d-4da6-41c6-b61e-1954472ec6c9,,https://mds.bird.co,https://mds.bird.co/gbfs/platform-partner/sherpa-la -OjO Electric,8d293326-8464-4256-8312-617ebcd0efad,https://www.ojoelectric.com,https://api.ojoelectric.com/api/mds,https://api.ojoelectric.com/api/mds/gbfs.json -VOI,1f129e3f-158f-4df5-af9c-a80de238e334,https://www.voiscooters.com/,https://mds.voiapp.io,https://mds.voiapp.io/v1/gbfs -MOVO,40dad54c-e199-4fd8-9f5b-cff93ffced63,https://movo.me,https://mds.movo.me,https://gbfs.movo.me -Baus,638ba503-4006-4c53-bf34-cd625cc03d61,https://bausmoves.com,https://mds.bird.co,https://mds.bird.co/gbfs/platform-partner/v2/baus -Bolt Technology,7ea695ca-9de7-4b3b-9f3c-241b2045a1fe,https://bolt.eu,https://mds.bolt.eu,https://mds.bolt.eu/gbfs/1 -Grin,8a0ecfce-5fb3-451e-8069-434b79c8b01a,https://ongrin.com,https://open-data.grow.mobi/mds/,https://open-data.grow.mobi/api/v1/gbfs/ -Dott,0a899e3a-705a-46f2-9189-d78cc83a2db4,https://ridedott.com,https://mds.api.ridedott.com,https://gbfs.api.ridedott.com -Superpedestrian,420e6e94-55a6-4946-b6b3-4398fe22e912,https://www.superpedestrian.com,https://mds.linkyour.city/mds, -Circ,03d5d605-e5c9-45a1-a1dd-144aa8649525,https://www.circ.com,https://mds.bird.co, -GIG,42475742-8618-4fc0-aa8f-3b3948b84b85,https://gigcarshare.com/,https://global.us.prod.svc.ridecell.io/reporting/api/mds, -Zisch,fb62cfe6-757c-4e5b-a264-18b43b3fc40b,https://www.e-zisch.ch,https://mds.bird.co, -Seven Group,7fca7812-c718-48dd-b9f2-d1ae160f2ae4,https://www.group-seven.ch,https://mds.bird.co, -Pony,f190d330-b49e-4590-871b-0bcbec565a8c,https://getapony.com/,https://mds.getapony.com/v1, -SHARE-NOW,d8f880d6-96d8-4cdc-8069-32a683b2bce6,https://www.share-now.com,https://external.share-now.com/api/rental/mds/,https://external.share-now.com/api/rental/mds/gbfs/ -Boaz Bikes,7c96bc58-fb63-433a-b77f-84ccb1c9d737,https://www.boazbikes.com/,https://mds.movatic.co/,https://gbsf.movatic.co/en/1.1/576347857979998215 -VeoRide INC.,6e39f9db-751b-5cea-ae7e-486f579a56bc,https://www.veoride.com/,https://cluster-prod.veoride.com/api/shares/mds,https://cluster-prod.veoride.com/api/shares/gbfs -LEO Ride,b0eedf6-c7a5-4262-9222-ab2484ad214e,https://leoride.co/,https://mobile.leoriders.com/mds,https://mobile.leoriders.com/gbpf -LEO Explore,7c653014-2f33-4f5b-98de-30ea66430986,https://leoride.co/,, -ATOM Mobility,4d88272c-032e-487c-9f58-ab5951a23427,https://atommobility.com/,https://mds.rideatom.com/mds, -Zig Zag Sharing,39977af0-4b94-11ec-81d3-0242ac130003,https://www.zigzagsharing.com/,https://mds.zigzagsharing.com/, -TukTuk,1a99bf67-14a0-48a1-98d1-77147a88c3d2,https://tuktukscooters.com/,https://app.tuktukscooters.com/mds-feed, -Helbiz,3aece8c6-416a-4d39-bcc4-d02524cb8004,https://helbiz.com,https://mds.helbiz.com, -Kiwibot,5f19acae-d7e9-4b57-96bd-f6406712d654,https://www.kiwibot.com/,, -Yego,da99028e-28b7-4dd3-ad23-41b7a045db8a,https://www.rideyego.com/,https://mds.yego.app/mds,https://services.rideyego.com/gbfs -Leo&Go,84b174c4-eb74-5d07-bdeb-27f4215d2aa9,https://www.leoandgo.com,https://mds.vulog.io/mds/fleets/LEONGO-FRLIO, -Scoot,07a25fe6-d0be-11e8-a8d5-f2801f1b9fd1,https://scoot.co/san-francisco/,https://mds.bird.co/,https://mds.bird.co/gbfs/ -Revel,89301314-1210-4126-a213-3c41423f2ac5,https://gorevel.com/,https://opendata.gorevel.com/opendata/mds/,https://gbfs.gorevel.com/gbfs/v2/ -Troopy,2b684c7c-f8ad-4c65-92f0-b9e57aaa7dd3,https://www.troopy.com,https://mds.vulog.io/mds/fleets/TROOPY-FRPAR,https://gbfs.vulog.io/mds/fleets/TROOPY-FRPAR/gbfs -BCycle,938D9F8B-B8D3-46CC-9276-F4A8C4FA3610,https://www.bcycle.com,https://mds.bcycle.com,https://gbfs.bcycle.com -Tembici,46b28e68-8ecb-4875-b97e-836fd5e1930f,https://www.tembici.com.br/,https://api.tembici.com.br/mds,https://api.tembici.com.br/gbfs -POPPY Mobility,5c869736-797f-4244-9132-fb50a22d1bfd,https://www.poppy.be/,https://poppy.red/mds, -Whoosh,3f8908a7-86fa-450d-8889-5d49077e06cd,https://whoosh.bike,https://mds.whoosh.bike, -Telofun,3dd253d3-557c-4fcb-98da-9af3edeaaae6,https://www.tel-o-fun.co.il/,https://mds.fsmctmobility.com/api/mds/v1/, +provider_name,mode_id,provider_id,url,mds_api_url,gbfs_api_url +JUMP,micromobility,c20e08cf-8488-46a6-a66c-5d8fb827f7e0,https://jump.com,https://api.uber.com/v0.2/emobility/mds, +Lime,micromobility,63f13c48-34ff-49d2-aca7-cf6a5b6171c3,https://li.me,https://data.lime.bike/api/partners/v1/mds, +Bird,micromobility,2411d395-04f2-47c9-ab66-d09e9e3c3251,https://www.bird.co,https://mds.bird.co,https://mds.bird.co/gbfs +Razor,micromobility,6ddcc0ad-1d66-4046-bba4-d1d96bb8ca4d,https://www.razor.com/share,https://razor-200806.appspot.com/api/v2/mds, +Lyft,micromobility,e714f168-ce56-4b41-81b7-0b6a4bd26128,https://www.lyft.com,https://api.lyft.com/v1/last-mile/mds, +Skip,micromobility,d73fcf80-22b1-450f-b535-042b4e30aac7,https://www.skipscooters.com,https://api.skipscooters.com/mds, +HOPR,micromobility,2e4cb206-b475-4a9d-80fb-0880c9a033e0,https://gohopr.com,https://gbfs.hopr.city/api/mds, +Wheels,micromobility,b79f8687-526d-4ae6-80bf-89b4c44dc071,https://wheels.co,https://mds.getwheelsapp.com, +Spin,micromobility,70aa475d-1fcd-4504-b69c-2eeb2107f7be,https://www.spin.app,https://web.spin.pm/api/mds/v1, +WIND,micromobility,d56d2df6-fa92-43de-ab61-92c3a84acd7d,https://www.wind.co,https://partners.wind.co/v1/mds, +Tier,micromobility,264aad41-b47c-415d-8585-0208d436516e,https://www.tier.app,https://partner.tier-services.io/mds, +Cloud,micromobility,bf95148b-d1d1-464e-a140-6d2563ac43d4,https://www.cloud.tt,https://mds.cloud.tt,https://mds.cloud.tt/gbfs +BlueLA,micromobility,f3c5a65d-fd85-463e-9564-fc95ea473f7d,https://www.bluela.com,https://api.bluela.com/mds/v0,https://api.bluela.com/gbfs/v1/meta +Bolt,micromobility,3291c288-c9c8-42f1-bc3e-8502b077cd7f,https://www.micromobility.com/,https://bolt.miami/bolt2/api/mds, +CLEVR,micromobility,daecbe87-a9f2-4a5a-b5df-8e3e14180513,https://clevrmobility.com,https://portal.clevrmobility.com/api/mds, +SherpaLA,micromobility,3c95765d-4da6-41c6-b61e-1954472ec6c9,,https://mds.bird.co,https://mds.bird.co/gbfs/platform-partner/sherpa-la +OjO Electric,micromobility,8d293326-8464-4256-8312-617ebcd0efad,https://www.ojoelectric.com,https://api.ojoelectric.com/api/mds,https://api.ojoelectric.com/api/mds/gbfs.json +VOI,micromobility,1f129e3f-158f-4df5-af9c-a80de238e334,https://www.voiscooters.com/,https://mds.voiapp.io,https://mds.voiapp.io/v1/gbfs +MOVO,micromobility,40dad54c-e199-4fd8-9f5b-cff93ffced63,https://movo.me,https://mds.movo.me,https://gbfs.movo.me +Baus,micromobility,638ba503-4006-4c53-bf34-cd625cc03d61,https://bausmoves.com,https://mds.bird.co,https://mds.bird.co/gbfs/platform-partner/v2/baus +Bolt Technology,micromobility,7ea695ca-9de7-4b3b-9f3c-241b2045a1fe,https://bolt.eu,https://mds.bolt.eu,https://mds.bolt.eu/gbfs/1 +Grin,micromobility,8a0ecfce-5fb3-451e-8069-434b79c8b01a,https://ongrin.com,https://open-data.grow.mobi/mds/,https://open-data.grow.mobi/api/v1/gbfs/ +Dott,micromobility,0a899e3a-705a-46f2-9189-d78cc83a2db4,https://ridedott.com,https://mds.api.ridedott.com,https://gbfs.api.ridedott.com +Superpedestrian,micromobility,420e6e94-55a6-4946-b6b3-4398fe22e912,https://www.superpedestrian.com,https://mds.linkyour.city/mds, +Circ,micromobility,03d5d605-e5c9-45a1-a1dd-144aa8649525,https://www.circ.com,https://mds.bird.co, +GIG,car-share,42475742-8618-4fc0-aa8f-3b3948b84b85,https://gigcarshare.com/,https://global.us.prod.svc.ridecell.io/reporting/api/mds, +Zisch,micromobility,fb62cfe6-757c-4e5b-a264-18b43b3fc40b,https://www.e-zisch.ch,https://mds.bird.co, +Seven Group,micromobility,7fca7812-c718-48dd-b9f2-d1ae160f2ae4,https://www.group-seven.ch,https://mds.bird.co, +Pony,micromobility,f190d330-b49e-4590-871b-0bcbec565a8c,https://getapony.com/,https://mds.getapony.com/v1, +SHARE-NOW,car-share,d8f880d6-96d8-4cdc-8069-32a683b2bce6,https://www.share-now.com,https://external.share-now.com/api/rental/mds/,https://external.share-now.com/api/rental/mds/gbfs/ +Boaz Bikes,micromobility,7c96bc58-fb63-433a-b77f-84ccb1c9d737,https://www.boazbikes.com/,https://mds.movatic.co/,https://gbsf.movatic.co/en/1.1/576347857979998215 +VeoRide INC.,micromobility,6e39f9db-751b-5cea-ae7e-486f579a56bc,https://www.veoride.com/,https://cluster-prod.veoride.com/api/shares/mds,https://cluster-prod.veoride.com/api/shares/gbfs +LEO Ride,micromobility,b0eedf6-c7a5-4262-9222-ab2484ad214e,https://leoride.co/,https://mobile.leoriders.com/mds,https://mobile.leoriders.com/gbpf +LEO Explore,micromobility,7c653014-2f33-4f5b-98de-30ea66430986,https://leoride.co/,, +ATOM Mobility,micromobility,4d88272c-032e-487c-9f58-ab5951a23427,https://atommobility.com/,https://mds.rideatom.com/mds, +Zig Zag Sharing,micromobility,39977af0-4b94-11ec-81d3-0242ac130003,https://www.zigzagsharing.com/,https://mds.zigzagsharing.com/, +TukTuk,micromobility,1a99bf67-14a0-48a1-98d1-77147a88c3d2,https://tuktukscooters.com/,https://app.tuktukscooters.com/mds-feed, +Helbiz,micromobility,3aece8c6-416a-4d39-bcc4-d02524cb8004,https://helbiz.com,https://mds.helbiz.com, +Kiwibot,delivery-robots,5f19acae-d7e9-4b57-96bd-f6406712d654,https://www.kiwibot.com/,, +Yego,micromobility,da99028e-28b7-4dd3-ad23-41b7a045db8a,https://www.rideyego.com/,https://mds.yego.app/mds,https://services.rideyego.com/gbfs +Leo&Go,micromobility,84b174c4-eb74-5d07-bdeb-27f4215d2aa9,https://www.leoandgo.com,https://mds.vulog.io/mds/fleets/LEONGO-FRLIO, +Scoot,micromobility,07a25fe6-d0be-11e8-a8d5-f2801f1b9fd1,https://scoot.co/san-francisco/,https://mds.bird.co/,https://mds.bird.co/gbfs/ +Revel,micromobility,89301314-1210-4126-a213-3c41423f2ac5,https://gorevel.com/,https://opendata.gorevel.com/opendata/mds/,https://gbfs.gorevel.com/gbfs/v2/ +Troopy,micromobility,2b684c7c-f8ad-4c65-92f0-b9e57aaa7dd3,https://www.troopy.com,https://mds.vulog.io/mds/fleets/TROOPY-FRPAR,https://gbfs.vulog.io/mds/fleets/TROOPY-FRPAR/gbfs +BCycle,micromobility,938D9F8B-B8D3-46CC-9276-F4A8C4FA3610,https://www.bcycle.com,https://mds.bcycle.com,https://gbfs.bcycle.com +Tembici,micromobility,46b28e68-8ecb-4875-b97e-836fd5e1930f,https://www.tembici.com.br/,https://api.tembici.com.br/mds,https://api.tembici.com.br/gbfs +POPPY Mobility,micromobility,5c869736-797f-4244-9132-fb50a22d1bfd,https://www.poppy.be/,https://poppy.red/mds, +Whoosh,micromobility,3f8908a7-86fa-450d-8889-5d49077e06cd,https://whoosh.bike,https://mds.whoosh.bike, +Telofun,micromobility,3dd253d3-557c-4fcb-98da-9af3edeaaae6,https://www.tel-o-fun.co.il/,https://mds.fsmctmobility.com/api/mds/v1/ From 8b08bda7cd067dcd22cc9e0dad50498737bc3995 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:56:40 -0500 Subject: [PATCH 13/29] Missing comma --- providers.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/providers.csv b/providers.csv index 9fdd93be..538108ce 100644 --- a/providers.csv +++ b/providers.csv @@ -47,4 +47,4 @@ BCycle,micromobility,938D9F8B-B8D3-46CC-9276-F4A8C4FA3610,https://www.bcycle.com Tembici,micromobility,46b28e68-8ecb-4875-b97e-836fd5e1930f,https://www.tembici.com.br/,https://api.tembici.com.br/mds,https://api.tembici.com.br/gbfs POPPY Mobility,micromobility,5c869736-797f-4244-9132-fb50a22d1bfd,https://www.poppy.be/,https://poppy.red/mds, Whoosh,micromobility,3f8908a7-86fa-450d-8889-5d49077e06cd,https://whoosh.bike,https://mds.whoosh.bike, -Telofun,micromobility,3dd253d3-557c-4fcb-98da-9af3edeaaae6,https://www.tel-o-fun.co.il/,https://mds.fsmctmobility.com/api/mds/v1/ +Telofun,micromobility,3dd253d3-557c-4fcb-98da-9af3edeaaae6,https://www.tel-o-fun.co.il/,https://mds.fsmctmobility.com/api/mds/v1/, From 002cd0f8ea372aba5906c6d65ed9cc922c38e3b1 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 20:17:28 -0500 Subject: [PATCH 14/29] Add mode_id to issue --- .github/ISSUE_TEMPLATE/add-provider-id.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/add-provider-id.md b/.github/ISSUE_TEMPLATE/add-provider-id.md index 9b5ad30f..091ca3bc 100644 --- a/.github/ISSUE_TEMPLATE/add-provider-id.md +++ b/.github/ISSUE_TEMPLATE/add-provider-id.md @@ -9,7 +9,7 @@ assignees: '' **Note:** See the [Adding an MDS Provider ID](https://github.com/openmobilityfoundation/mobility-data-specification/wiki/Adding-an-MDS-Provider-ID) page for more help. -Opening this issue will allow you as a mobility service provider get an official provider ID for use across MDS globally. +Opening this issue will allow you as a mobility service provider or data source provider to get an official provider ID for use across MDS globally. **Fields needed from you for the [providers.csv file](https://github.com/openmobilityfoundation/mobility-data-specification/blob/main/providers.csv).** @@ -17,13 +17,16 @@ _All fields are required._ 1. **provider_name** - Short name of your company. - ... +1. **mode_id** - The mode that you support. Use the mode short identifier from `micromobility`, `passenger-services`, `delivery-robots`, `car-share`. Register a unique ID for each mode you support. + - ... 1. **provider_id** - A random UUID version 4. There are lots of way to generate a unique UUID, like using this [website](https://www.uuidgenerator.net/version4). - ... 1. **url** - URL to the home page of your company. - ... -1. **mds_api_url** - Full https:// URL where your root MDS feeds are located. +1. **mds_api_url** - Full https:// base URL where your root MDS feeds are located. - ... -1. **gbfs_api_url** - Full https:// URL where your public GBFS feeds are located. +1. **gbfs_api_url** - Full https:// base URL where your public GBFS feeds are located. - ... Additionally, please provide your name and role within your agency to help with verification. + - ... From 957ff60cf930d3aa79e9f871fd48a97213456239 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 21:18:14 -0500 Subject: [PATCH 15/29] Sorting micromobility SM table --- modes/micromobility.md | 94 +++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/modes/micromobility.md b/modes/micromobility.md index 4de6f8c3..675016a2 100644 --- a/modes/micromobility.md +++ b/modes/micromobility.md @@ -169,54 +169,54 @@ Note that to handle out-of-order events, the validity of the prior-state shall n Vehicles can enter the `non_contactable` state to and from any other state with the following event types: any state can go to `non_contactable` with event type `comms_lost` or `unspecified`, and `non_contactable` can go to any state with event type `comms_restored` of `unspecified`. Vehicles can exit the `missing` state to any other state with the following event types: `missing` can go to any state with event type `located` or `unspecified`. +| From `vehicle_state` | `event_type` | To `vehicle_state` | Description | +|-------------------------------------------------------------------------------|---------------------------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `available` | `battery_low` | `non_operational` | The vehicle's battery is below some rentability threshold | +| `available` | `maintenance` | `non_operational` | The vehicle requires some non-charge-related maintenance | +| `available` | `off_hours` | `non_operational` | The vehicle has exited operating hours (per the regulator or per the Provider) | +| `available` | `reservation_start` | `reserved` | The vehicle was reserved for use by a customer | +| `available` | `system_suspend` | `non_operational` | The vehicle is not available because of e.g. weather or temporary regulations | +| `available`, `elsewhere`, `non_operational`, `on_trip`, `removed`, `reserved` | `comms_lost` | `non_contactable` | The vehicle is unable to transmit its GPS location or other status information | +| `available`, `elsewhere`, `non_operational`, `on_trip`, `removed`, `reserved` | `unspecified` | `non_contactable` | The provider cannot definitively (yet) specify the reason for the non_contactable state | +| `available`, `non_contactable`, `missing` | `unspecified` | `non_operational` | The vehicle became unavailable, but the Provider cannot definitively (yet) specify the reason. | +| `available`, `non_operational`, `elsewhere` | `compliance_pick_up` | `removed` | The provider picked up the vehicle because it was placed in a non-compliant location | +| `available`, `non_operational`, `elsewhere` | `maintenance_pick_up` | `removed` | The provider picked up the vehicle to service it | +| `available`, `non_operational`, `elsewhere` | `rebalance_pick_up` | `removed` | The provider picked up the vehicle for rebalancing purposes | +| `available`, `non_operational`, `elsewhere`, `non_contactable`, `missing` | `agency_pick_up` | `removed` | An agency picked up the vehicle for some reason, e.g. illegal placement | +| `available`, `non_operational`, `elsewhere`, `non_contactable`, `missing` | `decommissioned` | `removed` | The provider has removed the vehicle from its fleet | +| `available`, `reserved` | `trip_start` | `on_trip` | A customer initiated a trip with this vehicle | +| `elsewhere` | `trip_enter_jurisdiction` | `on_trip` | A vehicle on a trip entered the jurisdiction | +| `missing` | `located` | `available` | The vehicle has been located by the provider | +| `missing` | `located` | `elsewhere` | The vehicle has been located by the provider | +| `missing` | `located` | `non_operational` | The vehicle has been located by the provider | +| `missing` | `located` | `on_trip` | The vehicle has been located by the provider | +| `missing` | `located` | `removed` | The vehicle has been located by the provider | +| `missing` | `located` | `reserved` | The vehicle has been located by the provider | +| `non_contactable` | `comms_restored` | `available` | The vehicle transmitted status information after a period of being out of communication. | +| `non_contactable` | `comms_restored` | `elsewhere` | The vehicle transmitted status information after a period of being out of communication. | +| `non_contactable` | `comms_restored` | `non_operational` | The vehicle transmitted status information after a period of being out of communication | +| `non_contactable` | `comms_restored` | `on_trip` | The vehicle transmitted status information after a period of being out of communication. | +| `non_contactable` | `comms_restored` | `removed` | The vehicle transmitted status information after a period of being in an non_contactable state | +| `non_contactable` | `comms_restored` | `reserved` | The vehicle transmitted status information after a period of being out of communication. | +| `non_contactable` | `not_located` | `missing` | The vehicle is not at its last reported GPS location, or that location is wildly in error | +| `non_contactable` | `unspecified` | `missing` | The provider cannot definitively (yet) specify the reason for the missing state | +| `non_contactable`, `missing` | `unspecified` | `elsewhere` | The provider cannot definitively state how a vehicle went `elsewhere`. | +| `non_contactable`, `missing` | `unspecified` | `on_trip` | The provider cannot definitively state how a vehicle started a trip. | +| `non_contactable`, `missing` | `unspecified` | `reserved` | The provider cannot definitively state how a vehicle became reserved. | +| `non_contactable`, `missing`, `non_operational`, `available`, `elsewhere` | `unspecified` | `removed` | The vehicle was removed, but the provider cannot definitively (yet) specify the reason | +| `non_operational` | `battery_charged` | `available` | The vehicle became available because its battery is now charged. | +| `non_operational` | `maintenance` | `available` | The vehicle was previously in need of maintenance | +| `non_operational` | `on_hours` | `available` | The vehicle has entered operating hours (per the regulator or per the provider) | +| `non_operational` | `system_resume` | `available` | The vehicle is available because e.g. weather suspension or temporary regulations ended | +| `non_operational`, `non_contactable`, `missing` | `unspecified` | `available` | The vehicle became available, but the provider cannot definitively (yet) specify the reason. Generally, regulator Service-Level Agreements will limit the amount of time a vehicle's last event type may be `unspecified`. | +| `on_trip` | `changed_geographies` | `on_trip ` | **[Beta feature](/general-information.md#beta-features):** *Yes (as of 1.1.0)*. The vehicle has entered or left one or more Geographies managed by a Policy. See [Geography Driven Events](#geography-driven-events). | +| `on_trip` | `trip_cancel` | `available` | A trip was initiated, then canceled prior to moving any distance | +| `on_trip` | `trip_end` | `available` | A trip has ended, and the vehicle is again available for rent | +| `on_trip` | `trip_leave_jurisdiction` | `elsewhere` | A vehicle on a trip left the jurisdiction | +| `removed`, `non_contactable`, `missing` | `agency_drop_off` | `available` | The vehicle was placed in the PROW by a city or county | +| `removed`, `non_contactable`, `missing` | `provider_drop_off` | `available` | The vehicle was placed in the PROW by the provider | +| `reserved` | `reservation_cancel` | `available` | A reservation was canceled and the vehicle returned to service | -| Valid prior `vehicle_state` values | `vehicle_state` | `event_type` | Description | -| ---------------------------------- | --------------- | ------------ | ----------- | -| `non_operational` | `available` | `battery_charged` | The vehicle became available because its battery is now charged. | -| `non_operational` | `available` | `on_hours` | The vehicle has entered operating hours (per the regulator or per the provider) | -| `removed`, `non_contactable`, `missing` | `available` | `provider_drop_off` | The vehicle was placed in the PROW by the provider | -| `removed`, `non_contactable`, `missing` | `available` | `agency_drop_off` | The vehicle was placed in the PROW by a city or county | -| `non_operational` | `available` | `maintenance` | The vehicle was previously in need of maintenance | -| `on_trip` | `available` | `trip_end` | A trip has ended, and the vehicle is again available for rent | -| `reserved` | `available` | `reservation_cancel` | A reservation was canceled and the vehicle returned to service | -| `on_trip` | `available` | `trip_cancel` | A trip was initiated, then canceled prior to moving any distance | -| `non_operational` | `available` | `system_resume` | The vehicle is available because e.g. weather suspension or temporary regulations ended | -| `non_contactable` | `available` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication. | -| `missing` | `available` | `located` | The vehicle has been located by the provider | -| `non_operational`, `non_contactable`, `missing` | `available` | `unspecified` | The vehicle became available, but the provider cannot definitively (yet) specify the reason. Generally, regulator Service-Level Agreements will limit the amount of time a vehicle's last event type may be `unspecified`. | -| `available` | `reserved` | `reservation_start` | The vehicle was reserved for use by a customer | -| `non_contactable` | `reserved` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication. | -| `missing` | `reserved` | `located` | The vehicle has been located by the provider | -| `non_contactable`, `missing` | `reserved` | `unspecified` | The provider cannot definitively state how a vehicle became reserved. | -| `available`, `reserved` | `on_trip` | `trip_start` | A customer initiated a trip with this vehicle | -| `elsewhere` | `on_trip` | `trip_enter_jurisdiction` | A vehicle on a trip entered the jurisdiction | -| `non_contactable` | `on_trip` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication. | -| `missing` | `on_trip` | `located` | The vehicle has been located by the provider | -| `non_contactable`, `missing` | `on_trip` | `unspecified` | The provider cannot definitively state how a vehicle started a trip. | -| `on_trip` | `elsewhere` | `trip_leave_jurisdiction` | A vehicle on a trip left the jurisdiction | -| `on_trip` | `on_trip ` | `changed_geographies` | **[Beta feature](/general-information.md#beta-features):** *Yes (as of 1.1.0)*. The vehicle has entered or left one or more Geographies managed by a Policy. See [Geography Driven Events](#geography-driven-events).| -| `non_contactable` | `elsewhere` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication. | -| `missing` | `elsewhere` | `located` | The vehicle has been located by the provider | -| `non_contactable`, `missing` | `elsewhere` | `unspecified` | The provider cannot definitively state how a vehicle went `elsewhere`. | -| `available` | `non_operational` | `battery_low` | The vehicle's battery is below some rentability threshold | -| `available` | `non_operational` | `maintenance` | The vehicle requires some non-charge-related maintenance | -| `available` | `non_operational` | `off_hours` | The vehicle has exited operating hours (per the regulator or per the Provider) | -| `available` | `non_operational` | `system_suspend` | The vehicle is not available because of e.g. weather or temporary regulations | -| `available`, `non_contactable`, `missing` | `non_operational` | `unspecified` | The vehicle became unavailable, but the Provider cannot definitively (yet) specify the reason. | -| `non_contactable` | `non_operational` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication | -| `missing` | `non_operational` | `located` | The vehicle has been located by the provider | -| `available`, `non_operational`, `elsewhere` | `removed` | `rebalance_pick_up` | The provider picked up the vehicle for rebalancing purposes | -| `available`, `non_operational`, `elsewhere` | `removed` | `maintenance_pick_up` | The provider picked up the vehicle to service it | -| `available`, `non_operational`, `elsewhere`, `non_contactable`, `missing` | `removed` | `agency_pick_up` | An agency picked up the vehicle for some reason, e.g. illegal placement | -| `available`, `non_operational`, `elsewhere` | `removed` | `compliance_pick_up` | The provider picked up the vehicle because it was placed in a non-compliant location | -| `available`, `non_operational`, `elsewhere`, `non_contactable`, `missing` | `removed` | `decommissioned` | The provider has removed the vehicle from its fleet | -| `non_contactable`, `missing`, `non_operational`, `available`, `elsewhere` | `removed` | `unspecified` | The vehicle was removed, but the provider cannot definitively (yet) specify the reason | -| `non_contactable` | `removed` | `comms_restored` | The vehicle transmitted status information after a period of being in an non_contactable state | -| `missing` | `removed` | `located` | The vehicle has been located by the provider | -| `non_contactable` | `missing` | `not_located` | The vehicle is not at its last reported GPS location, or that location is wildly in error | -| `available`, `elsewhere`, `non_operational`, `on_trip`, `removed`, `reserved` | `non_contactable` | `comms_lost` | The vehicle is unable to transmit its GPS location or other status information | -| `available`, `elsewhere`, `non_operational`, `on_trip`, `removed`, `reserved` | `non_contactable` | `unspecified` | The provider cannot definitively (yet) specify the reason for the non_contactable state | -| `non_contactable` | `missing` | `unspecified` | The provider cannot definitively (yet) specify the reason for the missing state | [Top][toc] From 03bcc982a1cebedc3aef15edb3dc7e2ac8e71278 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 21:42:56 -0500 Subject: [PATCH 16/29] Latest micro SMD --- modes/micromobility-state-machine-diagram.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modes/micromobility-state-machine-diagram.svg b/modes/micromobility-state-machine-diagram.svg index efacdaeb..d286f46a 100644 --- a/modes/micromobility-state-machine-diagram.svg +++ b/modes/micromobility-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From ec155660423fd6b763530493348e8340736b4334 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Thu, 9 Feb 2023 22:03:46 -0500 Subject: [PATCH 17/29] Update link to Pass Serv SMD source --- modes/passenger-services.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modes/passenger-services.md b/modes/passenger-services.md index ff266adb..8c070661 100644 --- a/modes/passenger-services.md +++ b/modes/passenger-services.md @@ -263,7 +263,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th ### State Machine Diagram -The *Passenger Services State Machine Diagram* shows how the `vehicle_state` and `event_type` relate to each other and how taxi vehicles can transition between states. See this [text-editable EPS](https://drive.google.com/file/d/1WusVpFK1Vm7HSJgNcA_10T74TEzuCpTB/view?usp=sharing) for the source file. +This *State Machine Diagram* shows how `vehicle_state` and `event_type` relate to each other and how vehicles can transition between states. See [Google Slides](https://docs.google.com/presentation/d/1fHdq1efbN5GSFDLF4en-oA_BYPXQKbbIbHff6iROJKA/edit#slide=id.g2072486e468_1_19) for the source file. ![Passenger Services State Machine Diagram](passenger-services-state-machine-diagram.svg) From 4a15b3d50f9381e01a9f46547c346a069c07980e Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Fri, 10 Feb 2023 13:07:56 -0500 Subject: [PATCH 18/29] Added updated and flipped PS and Micro SMDs --- modes/micromobility-state-machine-diagram.svg | 2 +- ...ssenger-services-state-machine-diagram.svg | 95 +------------------ 2 files changed, 2 insertions(+), 95 deletions(-) diff --git a/modes/micromobility-state-machine-diagram.svg b/modes/micromobility-state-machine-diagram.svg index d286f46a..986e19f3 100644 --- a/modes/micromobility-state-machine-diagram.svg +++ b/modes/micromobility-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modes/passenger-services-state-machine-diagram.svg b/modes/passenger-services-state-machine-diagram.svg index 5069d6c1..890b55c8 100644 --- a/modes/passenger-services-state-machine-diagram.svg +++ b/modes/passenger-services-state-machine-diagram.svg @@ -1,94 +1 @@ - + \ No newline at end of file From 7e693cc324f4e1bdb48f6ac551c484f5b0e8b4b4 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Fri, 10 Feb 2023 13:32:01 -0500 Subject: [PATCH 19/29] Sorting and formatting state machine tables --- modes/car-share.md | 98 ++++++++++++++++----------------- modes/delivery-robots.md | 106 ++++++++++++++++++------------------ modes/micromobility.md | 94 ++++++++++++++++---------------- modes/passenger-services.md | 84 ++++++++++++++-------------- 4 files changed, 191 insertions(+), 191 deletions(-) diff --git a/modes/car-share.md b/modes/car-share.md index 33c95419..8dd0ac9b 100644 --- a/modes/car-share.md +++ b/modes/car-share.md @@ -222,55 +222,55 @@ See vehicle [Event Types][vehicle-events] for descriptions. This is the list of `vehicle_state` and `event_type` pairings that constitute the valid transitions of the vehicle state machine. -| **Previous** `vehicle_state` | `vehicle_state` | `trip_state` | `event_type` | Description | -|------------------------------|-------------------|--------------|--------------------------|------------------------------------------------------------------------------------------------------------------| -| `available` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | -| `available` | `non_operational` | N/A | `service_end` | The vehicle has went out of service (is unavailable for-hire) | -| `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a passenger | -| `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while available for-use | -| `elsewhere` | `available` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | -| `elsewhere` | `non_operational` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | -| `elsewhere` | `on_trip` | `on_trip` | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | -| `elsewhere` | `reserved` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | -| `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while outside of jurisdictional boundaries | -| `non_operational` | `available` | N/A | `service_start` | The vehicle has went into service (is available for-hire) | -| `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | -| `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | -| `non_operational` | `removed` | N/A | `maintenance` | The vehicle is undergoing maintenance on site | -| `non_operational` | `removed` | N/A | `maintenance_pick_up` | The vehicle has entered the depot for maintenance | -| `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while not operating commercially | -| `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | -| `on_trip` | `stopped` | `stopped` | `trip_stop` | The vehicle has stopped while on a trip | -| `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip | -| `removed` | `non_operational` | N/A | `maintenance_end` | The vehicle maintenance work has ended | -| `removed` | `non_operational` | N/A | `recommissioned` | The vehicle has been re-added to the Provider's fleet after being previously `decommissioned` | -| `removed` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while removed | -| `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | -| `reserved` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the reservation | -| `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | -| `reserved` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | -| `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pick up the passenger | -| `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle went out of comms while being reserved by a passenger | -| `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while either waiting for the passenger, or dropping them off | -| `stopped` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the trip while the vehicle is waiting to pick them up, or they are being dropped off | -| `stopped` | `available` | N/A | `provider_cancellation` | The provider has canceled the trip while the vehicle is waiting for a passenger, or dropping them off | -| `stopped` | `available` | N/A | `trip_end` | The trip has been successfully completed | -| `stopped` | `on_trip` | `on_trip` | `trip_resume` | Resume a trip that was previously stopped (e.g. picking up a friend to go to the airport with) | -| `stopped` | `on_trip` | `on_trip` | `trip_start` | Start a trip | -| `stopped` | `stopped` | `stopped` | `charging_start` | Start charging the device battery | -| `stopped` | `stopped` | `stopped` | `charging_end` | End charging the device battery | -| `stopped` | `stopped` | `stopped` | `fueling_start` | Start fueling the device with physical fuel | -| `stopped` | `stopped` | `stopped` | `fueling_end` | End fueling the device with physical fuel | -| `stopped` | `stopped` | `stopped` | `remote_start` | Remotely start the engine while vehicle is stopped, usually to charge battery or warm up | -| `stopped` | `stopped` | `stopped` | `remote_end` | Remotely stop the engine while vehicle is already stopped | -| `stopped` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while stopped | -| `non_contactable` | `available` | N/A | `comms_restored` | The vehicle has come back into comms while available for-hire | -| `non_contactable` | `elsewhere` | N/A | `comms_restored` | The vehicle has come back into comms while outside of jurisdictional boundaries | -| `non_contactable` | `non_operational` | N/A | `comms_restored` | The vehicle has come back into comms while not operating commercially | -| `non_contactable` | `on_trip` | `on_trip` | `comms_restored` | The vehicle has come back into comms while on a trip | -| `non_contactable` | `removed` | N/A | `comms_restored` | The vehicle has come back into comms while removed | -| `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a passenger | -| `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | +| **From** `vehicle_state` | **To** `vehicle_state` | `trip_state` | `event_type` | Description | +| ------------------------ | ---------------------- | ------------ | ------------------------ | --------------------------------------------------------------------------------------------------------------- | +| `available` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | +| `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while available for-use | +| `available` | `non_operational` | N/A | `service_end` | The vehicle has went out of service (is unavailable for-hire) | +| `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a passenger | +| `elsewhere` | `available` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | +| `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while outside of jurisdictional boundaries | +| `elsewhere` | `non_operational` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | +| `elsewhere` | `on_trip` | `on_trip` | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | +| `elsewhere` | `reserved` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | +| `non_contactable` | `available` | N/A | `comms_restored` | The vehicle has come back into comms while available for-hire | +| `non_contactable` | `elsewhere` | N/A | `comms_restored` | The vehicle has come back into comms while outside of jurisdictional boundaries | +| `non_contactable` | `non_operational` | N/A | `comms_restored` | The vehicle has come back into comms while not operating commercially | +| `non_contactable` | `on_trip` | `on_trip` | `comms_restored` | The vehicle has come back into comms while on a trip | +| `non_contactable` | `removed` | N/A | `comms_restored` | The vehicle has come back into comms while removed | +| `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a passenger | +| `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | +| `non_operational` | `available` | N/A | `service_start` | The vehicle has went into service (is available for-hire) | +| `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | +| `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while not operating commercially | +| `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | +| `non_operational` | `removed` | N/A | `maintenance_pick_up` | The vehicle has entered the depot for maintenance | +| `non_operational` | `removed` | N/A | `maintenance` | The vehicle is undergoing maintenance on site | +| `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | +| `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip | +| `on_trip` | `stopped` | `stopped` | `trip_stop` | The vehicle has stopped while on a trip | +| `removed` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while removed | +| `removed` | `non_operational` | N/A | `maintenance_end` | The vehicle maintenance work has ended | +| `removed` | `non_operational` | N/A | `recommissioned` | The vehicle has been re-added to the Provider's fleet after being previously `decommissioned` | +| `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | +| `reserved` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the reservation | +| `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | +| `reserved` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | +| `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle went out of comms while being reserved by a passenger | +| `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pick up the passenger | +| `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while either waiting for the passenger, or dropping them off | +| `stopped` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the trip while the vehicle is waiting to pick them up, or they are being dropped off | +| `stopped` | `available` | N/A | `provider_cancellation` | The provider has canceled the trip while the vehicle is waiting for a passenger, or dropping them off | +| `stopped` | `available` | N/A | `trip_end` | The trip has been successfully completed | +| `stopped` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while stopped | +| `stopped` | `on_trip` | `on_trip` | `trip_resume` | Resume a trip that was previously stopped (e.g. picking up a friend to go to the airport with) | +| `stopped` | `on_trip` | `on_trip` | `trip_start` | Start a trip | +| `stopped` | `stopped` | `stopped` | `charging_end` | End charging the device battery | +| `stopped` | `stopped` | `stopped` | `charging_start` | Start charging the device battery | +| `stopped` | `stopped` | `stopped` | `fueling_end` | End fueling the device with physical fuel | +| `stopped` | `stopped` | `stopped` | `fueling_start` | Start fueling the device with physical fuel | +| `stopped` | `stopped` | `stopped` | `remote_end` | Remotely stop the engine while vehicle is already stopped | +| `stopped` | `stopped` | `stopped` | `remote_start` | Remotely start the engine while vehicle is stopped, usually to charge battery or warm up | [Top][toc] diff --git a/modes/delivery-robots.md b/modes/delivery-robots.md index d5fe2249..40c0dbf3 100644 --- a/modes/delivery-robots.md +++ b/modes/delivery-robots.md @@ -219,59 +219,59 @@ See vehicle [Event Types][vehicle-events] for descriptions. This is the list of `vehicle_state` and `event_type` pairings that constitute the valid transitions of the vehicle state machine. -| **Previous** `vehicle_state` | `vehicle_state` | `trip_state` | `event_type` | Description | -|------------------------------|-------------------|--------------|--------------------------|------------------------------------------------------------------------------------------------------------------| -| `available` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | -| `available` | `non_operational` | N/A | `service_end` | The vehicle has gone out of service (is unavailable for-hire) | -| `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a customer | -| `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while available for-use | -| `elsewhere` | `available` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | -| `elsewhere` | `non_operational` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | -| `elsewhere` | `on_trip` | `on_trip` | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | -| `elsewhere` | `reserved` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | -| `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while outside of jurisdictional boundaries | -| `non_operational` | `available` | N/A | `service_start` | The vehicle has gone into service (is available for-hire) | -| `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | -| `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | -| `non_operational` | `removed` | N/A | `maintenance_start` | The vehicle has entered the depot for maintenance | -| `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while not operating commercially | -| `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | -| `on_trip` | `stopped` | `stopped` | `trip_pause` | The vehicle has paused while on a trip | -| `on_trip` | `stopped` | `stopped` | `order_pick_up` | The vehicle has come to pick up the order at the restaurant | -| `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip to pick up the order | -| `on_trip` |`available` | N/A | `order_drop_off` | The vehicle is at the customer's place and is waiting for them | -| `on_trip` |`stopped` | N/A | `order_drop_off` | The vehicle is at the customer's place and is waiting for them | -| `removed` | `non_operational` | N/A | `maintenance_end` | The vehicle has left the depot | -| `removed` | `non_operational` | N/A | `recommissioned` | The vehicle has been re-added to the Provider's fleet after being previously `decommissioned` | -| `removed` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while removed | -| `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | -| `reserved` | `available` | N/A | `customer_cancellation` | The customer has canceled the reservation | -| `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | -| `reserved` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | -| `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pickup reservation | -| `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone of comms while being reserved by a customer | -| `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while waiting | -| `stopped` | `available` | N/A | `customer_cancellation` | The customer has canceled the trip while the vehicle is waiting | -| `stopped` | `available` | N/A | `provider_cancellation` | The provider has canceled the trip while the vehicle is waiting | -| `stopped` | `available` | N/A | `trip_end` | The trip has been successfully completed | -| `stopped` | `on_trip` | `on_trip` | `trip_resume` | Resume a trip that was previously paused (e.g. picking up an order) | -| `stopped` | `on_trip` | `on_trip` | `trip_start` | Start a trip | -| `stopped` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while stopped | -| `non_contactable` | `available` | N/A | `comms_restored` | The vehicle has come back into comms while available for-hire | -| `non_contactable` | `elsewhere` | N/A | `comms_restored` | The vehicle has come back into comms while outside of jurisdictional boundaries | -| `non_contactable` | `non_operational` | N/A | `comms_restored` | The vehicle has come back into comms while not operating commercially | -| `non_contactable` | `on_trip` | `on_trip` | `comms_restored` | The vehicle has come back into comms while on a trip | -| `non_contactable` | `removed` | N/A | `comms_restored` | The vehicle has come back into comms while removed | -| `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a customer | -| `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | -| `non_contactable` | `missing` | N/A | `not_located` | The vehicle has gone missing after a period of lost comms | -| `missing` | `available` | N/A | `located` | The vehicle has been located while available for-hire | -| `missing` | `elsewhere` | N/A | `located` | The vehicle has been located while outside of jurisdictional boundaries | -| `missing` | `non_operational` | N/A | `located` | The vehicle has been located while not operating commercially | -| `missing` | `on_trip` | `on_trip` | `located` | The vehicle has been located while on a trip | -| `missing` | `removed` | N/A | `located` | The vehicle has been located while removed | -| `missing` | `reserved` | `reserved` | `located` | The vehicle has been located while reserved by a customer | -| `missing` | `stopped` | `stopped` | `located` | The vehicle has been located while stopped | +| **From** `vehicle_state` | **To** `vehicle_state` | `trip_state` | `event_type` | Description | +| ------------------------ | ---------------------- | ------------ | ----------------------- | --------------------------------------------------------------------------------------------- | +| `available` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | +| `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while available for-use | +| `available` | `non_operational` | N/A | `service_end` | The vehicle has gone out of service (is unavailable for-hire) | +| `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a customer | +| `elsewhere` | `available` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | +| `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while outside of jurisdictional boundaries | +| `elsewhere` | `non_operational` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | +| `elsewhere` | `on_trip` | `on_trip` | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | +| `elsewhere` | `reserved` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | +| `missing` | `available` | N/A | `located` | The vehicle has been located while available for-hire | +| `missing` | `elsewhere` | N/A | `located` | The vehicle has been located while outside of jurisdictional boundaries | +| `missing` | `non_operational` | N/A | `located` | The vehicle has been located while not operating commercially | +| `missing` | `on_trip` | `on_trip` | `located` | The vehicle has been located while on a trip | +| `missing` | `removed` | N/A | `located` | The vehicle has been located while removed | +| `missing` | `reserved` | `reserved` | `located` | The vehicle has been located while reserved by a customer | +| `missing` | `stopped` | `stopped` | `located` | The vehicle has been located while stopped | +| `non_contactable` | `available` | N/A | `comms_restored` | The vehicle has come back into comms while available for-hire | +| `non_contactable` | `elsewhere` | N/A | `comms_restored` | The vehicle has come back into comms while outside of jurisdictional boundaries | +| `non_contactable` | `missing` | N/A | `not_located` | The vehicle has gone missing after a period of lost comms | +| `non_contactable` | `non_operational` | N/A | `comms_restored` | The vehicle has come back into comms while not operating commercially | +| `non_contactable` | `on_trip` | `on_trip` | `comms_restored` | The vehicle has come back into comms while on a trip | +| `non_contactable` | `removed` | N/A | `comms_restored` | The vehicle has come back into comms while removed | +| `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a customer | +| `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | +| `non_operational` | `available` | N/A | `service_start` | The vehicle has gone into service (is available for-hire) | +| `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | +| `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while not operating commercially | +| `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | +| `non_operational` | `removed` | N/A | `maintenance_start` | The vehicle has entered the depot for maintenance | +| `on_trip` | `available` | N/A | `order_drop_off` | The vehicle is at the customer's place and is waiting for them | +| `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | +| `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip to pick up the order | +| `on_trip` | `stopped` | N/A | `order_drop_off` | The vehicle is at the customer's place and is waiting for them | +| `on_trip` | `stopped` | `stopped` | `order_pick_up` | The vehicle has come to pick up the order at the restaurant | +| `on_trip` | `stopped` | `stopped` | `trip_pause` | The vehicle has paused while on a trip | +| `removed` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while removed | +| `removed` | `non_operational` | N/A | `maintenance_end` | The vehicle has left the depot | +| `removed` | `non_operational` | N/A | `recommissioned` | The vehicle has been re-added to the Provider's fleet after being previously `decommissioned` | +| `reserved` | `available` | N/A | `customer_cancellation` | The customer has canceled the reservation | +| `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | +| `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | +| `reserved` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | +| `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone of comms while being reserved by a customer | +| `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pickup reservation | +| `stopped` | `available` | N/A | `customer_cancellation` | The customer has canceled the trip while the vehicle is waiting | +| `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while waiting | +| `stopped` | `available` | N/A | `provider_cancellation` | The provider has canceled the trip while the vehicle is waiting | +| `stopped` | `available` | N/A | `trip_end` | The trip has been successfully completed | +| `stopped` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while stopped | +| `stopped` | `on_trip` | `on_trip` | `trip_resume` | Resume a trip that was previously paused (e.g. picking up an order) | +| `stopped` | `on_trip` | `on_trip` | `trip_start` | Start a trip | [Top][toc] diff --git a/modes/micromobility.md b/modes/micromobility.md index 675016a2..4ac97731 100644 --- a/modes/micromobility.md +++ b/modes/micromobility.md @@ -169,53 +169,53 @@ Note that to handle out-of-order events, the validity of the prior-state shall n Vehicles can enter the `non_contactable` state to and from any other state with the following event types: any state can go to `non_contactable` with event type `comms_lost` or `unspecified`, and `non_contactable` can go to any state with event type `comms_restored` of `unspecified`. Vehicles can exit the `missing` state to any other state with the following event types: `missing` can go to any state with event type `located` or `unspecified`. -| From `vehicle_state` | `event_type` | To `vehicle_state` | Description | -|-------------------------------------------------------------------------------|---------------------------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `available` | `battery_low` | `non_operational` | The vehicle's battery is below some rentability threshold | -| `available` | `maintenance` | `non_operational` | The vehicle requires some non-charge-related maintenance | -| `available` | `off_hours` | `non_operational` | The vehicle has exited operating hours (per the regulator or per the Provider) | -| `available` | `reservation_start` | `reserved` | The vehicle was reserved for use by a customer | -| `available` | `system_suspend` | `non_operational` | The vehicle is not available because of e.g. weather or temporary regulations | -| `available`, `elsewhere`, `non_operational`, `on_trip`, `removed`, `reserved` | `comms_lost` | `non_contactable` | The vehicle is unable to transmit its GPS location or other status information | -| `available`, `elsewhere`, `non_operational`, `on_trip`, `removed`, `reserved` | `unspecified` | `non_contactable` | The provider cannot definitively (yet) specify the reason for the non_contactable state | -| `available`, `non_contactable`, `missing` | `unspecified` | `non_operational` | The vehicle became unavailable, but the Provider cannot definitively (yet) specify the reason. | -| `available`, `non_operational`, `elsewhere` | `compliance_pick_up` | `removed` | The provider picked up the vehicle because it was placed in a non-compliant location | -| `available`, `non_operational`, `elsewhere` | `maintenance_pick_up` | `removed` | The provider picked up the vehicle to service it | -| `available`, `non_operational`, `elsewhere` | `rebalance_pick_up` | `removed` | The provider picked up the vehicle for rebalancing purposes | -| `available`, `non_operational`, `elsewhere`, `non_contactable`, `missing` | `agency_pick_up` | `removed` | An agency picked up the vehicle for some reason, e.g. illegal placement | -| `available`, `non_operational`, `elsewhere`, `non_contactable`, `missing` | `decommissioned` | `removed` | The provider has removed the vehicle from its fleet | -| `available`, `reserved` | `trip_start` | `on_trip` | A customer initiated a trip with this vehicle | -| `elsewhere` | `trip_enter_jurisdiction` | `on_trip` | A vehicle on a trip entered the jurisdiction | -| `missing` | `located` | `available` | The vehicle has been located by the provider | -| `missing` | `located` | `elsewhere` | The vehicle has been located by the provider | -| `missing` | `located` | `non_operational` | The vehicle has been located by the provider | -| `missing` | `located` | `on_trip` | The vehicle has been located by the provider | -| `missing` | `located` | `removed` | The vehicle has been located by the provider | -| `missing` | `located` | `reserved` | The vehicle has been located by the provider | -| `non_contactable` | `comms_restored` | `available` | The vehicle transmitted status information after a period of being out of communication. | -| `non_contactable` | `comms_restored` | `elsewhere` | The vehicle transmitted status information after a period of being out of communication. | -| `non_contactable` | `comms_restored` | `non_operational` | The vehicle transmitted status information after a period of being out of communication | -| `non_contactable` | `comms_restored` | `on_trip` | The vehicle transmitted status information after a period of being out of communication. | -| `non_contactable` | `comms_restored` | `removed` | The vehicle transmitted status information after a period of being in an non_contactable state | -| `non_contactable` | `comms_restored` | `reserved` | The vehicle transmitted status information after a period of being out of communication. | -| `non_contactable` | `not_located` | `missing` | The vehicle is not at its last reported GPS location, or that location is wildly in error | -| `non_contactable` | `unspecified` | `missing` | The provider cannot definitively (yet) specify the reason for the missing state | -| `non_contactable`, `missing` | `unspecified` | `elsewhere` | The provider cannot definitively state how a vehicle went `elsewhere`. | -| `non_contactable`, `missing` | `unspecified` | `on_trip` | The provider cannot definitively state how a vehicle started a trip. | -| `non_contactable`, `missing` | `unspecified` | `reserved` | The provider cannot definitively state how a vehicle became reserved. | -| `non_contactable`, `missing`, `non_operational`, `available`, `elsewhere` | `unspecified` | `removed` | The vehicle was removed, but the provider cannot definitively (yet) specify the reason | -| `non_operational` | `battery_charged` | `available` | The vehicle became available because its battery is now charged. | -| `non_operational` | `maintenance` | `available` | The vehicle was previously in need of maintenance | -| `non_operational` | `on_hours` | `available` | The vehicle has entered operating hours (per the regulator or per the provider) | -| `non_operational` | `system_resume` | `available` | The vehicle is available because e.g. weather suspension or temporary regulations ended | -| `non_operational`, `non_contactable`, `missing` | `unspecified` | `available` | The vehicle became available, but the provider cannot definitively (yet) specify the reason. Generally, regulator Service-Level Agreements will limit the amount of time a vehicle's last event type may be `unspecified`. | -| `on_trip` | `changed_geographies` | `on_trip ` | **[Beta feature](/general-information.md#beta-features):** *Yes (as of 1.1.0)*. The vehicle has entered or left one or more Geographies managed by a Policy. See [Geography Driven Events](#geography-driven-events). | -| `on_trip` | `trip_cancel` | `available` | A trip was initiated, then canceled prior to moving any distance | -| `on_trip` | `trip_end` | `available` | A trip has ended, and the vehicle is again available for rent | -| `on_trip` | `trip_leave_jurisdiction` | `elsewhere` | A vehicle on a trip left the jurisdiction | -| `removed`, `non_contactable`, `missing` | `agency_drop_off` | `available` | The vehicle was placed in the PROW by a city or county | -| `removed`, `non_contactable`, `missing` | `provider_drop_off` | `available` | The vehicle was placed in the PROW by the provider | -| `reserved` | `reservation_cancel` | `available` | A reservation was canceled and the vehicle returned to service | +| **From** `vehicle_state` | **To** `vehicle_state` | `event_type` | Description | +|-------------------------------------------------------------------------------|--------------------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `available` | `non_operational` | `battery_low` | The vehicle's battery is below some rentability threshold | +| `available` | `non_operational` | `maintenance` | The vehicle requires some non-charge-related maintenance | +| `available` | `non_operational` | `off_hours` | The vehicle has exited operating hours (per the regulator or per the Provider) | +| `available` | `reserved` | `reservation_start` | The vehicle was reserved for use by a customer | +| `available` | `non_operational` | `system_suspend` | The vehicle is not available because of e.g. weather or temporary regulations | +| `available`, `elsewhere`, `non_operational`, `on_trip`, `removed`, `reserved` | `non_contactable` | `comms_lost` | The vehicle is unable to transmit its GPS location or other status information | +| `available`, `elsewhere`, `non_operational`, `on_trip`, `removed`, `reserved` | `non_contactable` | `unspecified` | The provider cannot definitively (yet) specify the reason for the non_contactable state | +| `available`, `non_contactable`, `missing` | `non_operational` | `unspecified` | The vehicle became unavailable, but the Provider cannot definitively (yet) specify the reason. | +| `available`, `non_operational`, `elsewhere` | `removed` | `compliance_pick_up` | The provider picked up the vehicle because it was placed in a non-compliant location | +| `available`, `non_operational`, `elsewhere` | `removed` | `maintenance_pick_up` | The provider picked up the vehicle to service it | +| `available`, `non_operational`, `elsewhere` | `removed` | `rebalance_pick_up` | The provider picked up the vehicle for rebalancing purposes | +| `available`, `non_operational`, `elsewhere`, `non_contactable`, `missing` | `removed` | `agency_pick_up` | An agency picked up the vehicle for some reason, e.g. illegal placement | +| `available`, `non_operational`, `elsewhere`, `non_contactable`, `missing` | `removed` | `decommissioned` | The provider has removed the vehicle from its fleet | +| `available`, `reserved` | `on_trip` | `trip_start` | A customer initiated a trip with this vehicle | +| `elsewhere` | `on_trip` | `trip_enter_jurisdiction` | A vehicle on a trip entered the jurisdiction | +| `missing` | `available` | `located` | The vehicle has been located by the provider | +| `missing` | `elsewhere` | `located` | The vehicle has been located by the provider | +| `missing` | `non_operational` | `located` | The vehicle has been located by the provider | +| `missing` | `on_trip` | `located` | The vehicle has been located by the provider | +| `missing` | `removed` | `located` | The vehicle has been located by the provider | +| `missing` | `reserved` | `located` | The vehicle has been located by the provider | +| `non_contactable` | `available` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication. | +| `non_contactable` | `elsewhere` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication. | +| `non_contactable` | `non_operational` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication | +| `non_contactable` | `on_trip` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication. | +| `non_contactable` | `removed` | `comms_restored` | The vehicle transmitted status information after a period of being in an non_contactable state | +| `non_contactable` | `reserved` | `comms_restored` | The vehicle transmitted status information after a period of being out of communication. | +| `non_contactable` | `missing` | `not_located` | The vehicle is not at its last reported GPS location, or that location is wildly in error | +| `non_contactable` | `missing` | `unspecified` | The provider cannot definitively (yet) specify the reason for the missing state | +| `non_contactable`, `missing` | `elsewhere` | `unspecified` | The provider cannot definitively state how a vehicle went `elsewhere`. | +| `non_contactable`, `missing` | `on_trip` | `unspecified` | The provider cannot definitively state how a vehicle started a trip. | +| `non_contactable`, `missing` | `reserved` | `unspecified` | The provider cannot definitively state how a vehicle became reserved. | +| `non_contactable`, `missing`, `non_operational`, `available`, `elsewhere` | `removed` | `unspecified` | The vehicle was removed, but the provider cannot definitively (yet) specify the reason | +| `non_operational` | `available` | `battery_charged` | The vehicle became available because its battery is now charged. | +| `non_operational` | `available` | `maintenance` | The vehicle was previously in need of maintenance | +| `non_operational` | `available` | `on_hours` | The vehicle has entered operating hours (per the regulator or per the provider) | +| `non_operational` | `available` | `system_resume` | The vehicle is available because e.g. weather suspension or temporary regulations ended | +| `non_operational`, `non_contactable`, `missing` | `available` | `unspecified` | The vehicle became available, but the provider cannot definitively (yet) specify the reason. Generally, regulator Service-Level Agreements will limit the amount of time a vehicle's last event type may be `unspecified`. | +| `on_trip` | `on_trip ` | `changed_geographies` | **[Beta feature](/general-information.md#beta-features):** *Yes (as of 1.1.0)*. The vehicle has entered or left one or more Geographies managed by a Policy. See [Geography Driven Events](#geography-driven-events). | +| `on_trip` | `available` | `trip_cancel` | A trip was initiated, then canceled prior to moving any distance | +| `on_trip` | `available` | `trip_end` | A trip has ended, and the vehicle is again available for rent | +| `on_trip` | `elsewhere` | `trip_leave_jurisdiction` | A vehicle on a trip left the jurisdiction | +| `removed`, `non_contactable`, `missing` | `available` | `agency_drop_off` | The vehicle was placed in the PROW by a city or county | +| `removed`, `non_contactable`, `missing` | `available` | `provider_drop_off` | The vehicle was placed in the PROW by the provider | +| `reserved` | `available` | `reservation_cancel` | A reservation was canceled and the vehicle returned to service | [Top][toc] diff --git a/modes/passenger-services.md b/modes/passenger-services.md index 8c070661..dbab4cf2 100644 --- a/modes/passenger-services.md +++ b/modes/passenger-services.md @@ -216,48 +216,48 @@ See vehicle [Event Types][vehicle-events] for descriptions. This is the list of `vehicle_state` and `event_type` pairings that constitute the valid transitions of the vehicle state machine. -| **Previous** `vehicle_state` | `vehicle_state` | `trip_state` | `event_type` | Description | -|------------------------------|-------------------|--------------|--------------------------|------------------------------------------------------------------------------------------------------------------| -| `available` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | -| `available` | `non_operational` | N/A | `service_end` | The vehicle has went out of service (is unavailable for-hire) | -| `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a passenger | -| `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while available for-use | -| `elsewhere` | `available` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | -| `elsewhere` | `non_operational` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | -| `elsewhere` | `on_trip` | `on_trip` | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | -| `elsewhere` | `reserved` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | -| `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while outside of jurisdictional boundaries | -| `non_operational` | `available` | N/A | `service_start` | The vehicle has went into service (is available for-hire) | -| `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | -| `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | -| `non_operational` | `removed` | N/A | `maintenance_start` | The vehicle has entered the depot for maintenance | -| `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while not operating commercially | -| `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | -| `on_trip` | `stopped` | `stopped` | `trip_stop` | The vehicle has stopped while on a trip | -| `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip | -| `removed` | `non_operational` | N/A | `maintenance_end` | The vehicle has left the depot | -| `removed` | `non_operational` | N/A | `recommissioned` | The vehicle has been re-added to the Provider's fleet after being previously `decommissioned` | -| `removed` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while removed | -| `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | -| `reserved` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the reservation | -| `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | -| `reserved` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | -| `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pick up the passenger | -| `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle went out of comms while being reserved by a passenger | -| `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while either waiting for the passenger, or dropping them off | -| `stopped` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the trip while the vehicle is waiting to pick them up, or they are being dropped off | -| `stopped` | `available` | N/A | `provider_cancellation` | The provider has canceled the trip while the vehicle is waiting for a passenger, or dropping them off | -| `stopped` | `available` | N/A | `trip_end` | The trip has been successfully completed | -| `stopped` | `on_trip` | `on_trip` | `trip_resume` | Resume a trip that was previously stopped (e.g. picking up a friend to go to the airport with) | -| `stopped` | `on_trip` | `on_trip` | `trip_start` | Start a trip | -| `stopped` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while stopped | -| `non_contactable` | `available` | N/A | `comms_restored` | The vehicle has come back into comms while available for-hire | -| `non_contactable` | `elsewhere` | N/A | `comms_restored` | The vehicle has come back into comms while outside of jurisdictional boundaries | -| `non_contactable` | `non_operational` | N/A | `comms_restored` | The vehicle has come back into comms while not operating commercially | -| `non_contactable` | `on_trip` | `on_trip` | `comms_restored` | The vehicle has come back into comms while on a trip | -| `non_contactable` | `removed` | N/A | `comms_restored` | The vehicle has come back into comms while removed | -| `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a passenger | -| `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | +| **From** `vehicle_state` | **To** `vehicle_state` | `trip_state` | `event_type` | Description | +| ------------------------ | ---------------------- | ------------ | ------------------------ | --------------------------------------------------------------------------------------------------------------- | +| `available` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | +| `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while available for-use | +| `available` | `non_operational` | N/A | `service_end` | The vehicle has went out of service (is unavailable for-hire) | +| `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a passenger | +| `elsewhere` | `available` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | +| `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while outside of jurisdictional boundaries | +| `elsewhere` | `non_operational` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | +| `elsewhere` | `on_trip` | `on_trip` | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | +| `elsewhere` | `reserved` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | +| `non_contactable` | `available` | N/A | `comms_restored` | The vehicle has come back into comms while available for-hire | +| `non_contactable` | `elsewhere` | N/A | `comms_restored` | The vehicle has come back into comms while outside of jurisdictional boundaries | +| `non_contactable` | `non_operational` | N/A | `comms_restored` | The vehicle has come back into comms while not operating commercially | +| `non_contactable` | `on_trip` | `on_trip` | `comms_restored` | The vehicle has come back into comms while on a trip | +| `non_contactable` | `removed` | N/A | `comms_restored` | The vehicle has come back into comms while removed | +| `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a passenger | +| `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | +| `non_operational` | `available` | N/A | `service_start` | The vehicle has went into service (is available for-hire) | +| `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | +| `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while not operating commercially | +| `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | +| `non_operational` | `removed` | N/A | `maintenance_start` | The vehicle has entered the depot for maintenance | +| `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | +| `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip | +| `on_trip` | `stopped` | `stopped` | `trip_stop` | The vehicle has stopped while on a trip | +| `removed` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while removed | +| `removed` | `non_operational` | N/A | `maintenance_end` | The vehicle has left the depot | +| `removed` | `non_operational` | N/A | `recommissioned` | The vehicle has been re-added to the Provider's fleet after being previously `decommissioned` | +| `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | +| `reserved` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the reservation | +| `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | +| `reserved` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | +| `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle went out of comms while being reserved by a passenger | +| `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pick up the passenger | +| `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while either waiting for the passenger, or dropping them off | +| `stopped` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the trip while the vehicle is waiting to pick them up, or they are being dropped off | +| `stopped` | `available` | N/A | `provider_cancellation` | The provider has canceled the trip while the vehicle is waiting for a passenger, or dropping them off | +| `stopped` | `available` | N/A | `trip_end` | The trip has been successfully completed | +| `stopped` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while stopped | +| `stopped` | `on_trip` | `on_trip` | `trip_resume` | Resume a trip that was previously stopped (e.g. picking up a friend to go to the airport with) | +| `stopped` | `on_trip` | `on_trip` | `trip_start` | Start a trip | [Top][toc] From 9acc2a6dfc23b5488c5cadf2c2fcde23178e2011 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Fri, 10 Feb 2023 14:06:45 -0500 Subject: [PATCH 20/29] Car share and Delivery Robots SMD section --- modes/car-share.md | 2 +- modes/delivery-robots.md | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modes/car-share.md b/modes/car-share.md index 8dd0ac9b..c0c747ff 100644 --- a/modes/car-share.md +++ b/modes/car-share.md @@ -276,7 +276,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th ### State Machine Diagram -The *Car Share State Machine Diagram* shows how the `vehicle_state` and `event_type` relate to each other and how taxi vehicles can transition between states. See this [text-editable EPS](TBD) for the source file. +This *State Machine Diagram* shows how `vehicle_state` and `event_type` relate to each other and how vehicles can transition between states. See [Google Slides](https://docs.google.com/presentation/d/1fHdq1efbN5GSFDLF4en-oA_BYPXQKbbIbHff6iROJKA/edit#slide=id.g2072486e468_1_300) for the source file. ![Car Share State Machine Diagram](car-share-state-machine-diagram.svg) diff --git a/modes/delivery-robots.md b/modes/delivery-robots.md index 40c0dbf3..ddfa4e26 100644 --- a/modes/delivery-robots.md +++ b/modes/delivery-robots.md @@ -215,7 +215,7 @@ See vehicle [Event Types][vehicle-events] for descriptions. [Top][toc] -## Vehicle States Events +### Vehicle States Events This is the list of `vehicle_state` and `event_type` pairings that constitute the valid transitions of the vehicle state machine. @@ -277,7 +277,9 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th ### State Machine Diagram -The *Delivery Diagram* shows how the `vehicle_state` and `event_type` relate to each other and how delivery vehicles can transition between states. +This *State Machine Diagram* shows how `vehicle_state` and `event_type` relate to each other and how vehicles can transition between states. See [Google Slides](https://docs.google.com/presentation/d/1fHdq1efbN5GSFDLF4en-oA_BYPXQKbbIbHff6iROJKA/edit#slide=id.g2072486e468_1_402) for the source file. + +![Delivery Robots State Machine Diagram](delivery-robots-state-machine-diagram.svg) TBD From 7319e24869d0662f65a235be9e2941be1d2973a7 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Fri, 10 Feb 2023 14:07:33 -0500 Subject: [PATCH 21/29] Add car share SMD --- modes/car-share-state-machine-diagram.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 modes/car-share-state-machine-diagram.svg diff --git a/modes/car-share-state-machine-diagram.svg b/modes/car-share-state-machine-diagram.svg new file mode 100644 index 00000000..e5daff9f --- /dev/null +++ b/modes/car-share-state-machine-diagram.svg @@ -0,0 +1 @@ + \ No newline at end of file From 8f1c327462c6330fa4bba8eb6b9243083fe45248 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Tue, 14 Feb 2023 10:22:40 -0500 Subject: [PATCH 22/29] Added clarifying line for geography retire_date --- geography/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geography/README.md b/geography/README.md index af4f60b0..c38dce5e 100644 --- a/geography/README.md +++ b/geography/README.md @@ -95,7 +95,7 @@ See the [Endpoints](#endpoints) below for links to their specific JSON Schema do | `geography_json` | JSON | Required | The GeoJSON that defines the geographical coordinates. | | `effective_date` | [timestamp][ts] | Optional | The date at which a Geography is considered "live". Must be at or after `published_date`. | | `published_date` | [timestamp][ts] | Required | Time that the geography was published, i.e. made immutable | -| `retire_date` | [timestamp][ts] | Optional | Time that the geography is slated to retire. Once the retire date is passed, new policies can no longer reference it and old policies referencing it should be updated. Retired geographies should continue to be returned in the geographies list. Must be after `effective_date`. | +| `retire_date` | [timestamp][ts] | Optional | Time that the geography is slated to retire. Once the retire date is passed, new policies can no longer reference it and old policies referencing it should be updated. Retired geographies should continue to be returned in the geographies list. Must be after `effective_date`. Geographies referencing others with `prev_geographies` immediately replace the previous ones. | | `prev_geographies` | UUID[] | Optional | Unique IDs of prior geographies replaced by this one | [Top][toc] From c158546eb4059063cfe1a34fbffb709d9ac388d9 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Tue, 14 Feb 2023 11:31:44 -0500 Subject: [PATCH 23/29] Fixes to trip_*_jurisdiction names --- modes/car-share.md | 20 ++++++++++---------- modes/delivery-robots.md | 20 ++++++++++---------- modes/passenger-services.md | 20 ++++++++++---------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/modes/car-share.md b/modes/car-share.md index c0c747ff..44dcc9f6 100644 --- a/modes/car-share.md +++ b/modes/car-share.md @@ -72,9 +72,9 @@ The `journey_attributes` array **may** have the following key value pairs: ### Trip ID Requirements -Events require a valid `trip_id` in events where `event_types` contains `reservation_start`, `reservation_stop`, `trip_start`, `trip_stop`, `trip_end`, `passenger_cancellation`, `provider_cancellation`. +Events require a valid `trip_id` in events where `event_types` contains `reservation_start`, `reservation_stop`, `trip_start`, `trip_pause`, `trip_resume`, `trip_end`,`trip_cancel`, `customer_cancellation`, `provider_cancellation`, or `driver_cancellation`. -Additionally, `trip_id` is required if `event_types` contains a `enter_jurisdiction` or `leave_jurisdiction` event pertaining to a trip. +Additionally, `trip_id` is required if `event_types` contains a `trip_enter_jurisdiction` or `trip_leave_jurisdiction` event pertaining to a trip. [Top][toc] @@ -224,15 +224,15 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | **From** `vehicle_state` | **To** `vehicle_state` | `trip_state` | `event_type` | Description | | ------------------------ | ---------------------- | ------------ | ------------------------ | --------------------------------------------------------------------------------------------------------------- | -| `available` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | +| `available` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | | `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while available for-use | | `available` | `non_operational` | N/A | `service_end` | The vehicle has went out of service (is unavailable for-hire) | | `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a passenger | -| `elsewhere` | `available` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | +| `elsewhere` | `available` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | | `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while outside of jurisdictional boundaries | -| `elsewhere` | `non_operational` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | -| `elsewhere` | `on_trip` | `on_trip` | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | -| `elsewhere` | `reserved` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | +| `elsewhere` | `non_operational` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | +| `elsewhere` | `on_trip` | `on_trip` | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | +| `elsewhere` | `reserved` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | | `non_contactable` | `available` | N/A | `comms_restored` | The vehicle has come back into comms while available for-hire | | `non_contactable` | `elsewhere` | N/A | `comms_restored` | The vehicle has come back into comms while outside of jurisdictional boundaries | | `non_contactable` | `non_operational` | N/A | `comms_restored` | The vehicle has come back into comms while not operating commercially | @@ -241,12 +241,12 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a passenger | | `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | | `non_operational` | `available` | N/A | `service_start` | The vehicle has went into service (is available for-hire) | -| `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | +| `non_operational` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | | `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while not operating commercially | | `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | | `non_operational` | `removed` | N/A | `maintenance_pick_up` | The vehicle has entered the depot for maintenance | | `non_operational` | `removed` | N/A | `maintenance` | The vehicle is undergoing maintenance on site | -| `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | +| `on_trip` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | | `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip | | `on_trip` | `stopped` | `stopped` | `trip_stop` | The vehicle has stopped while on a trip | | `removed` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while removed | @@ -255,7 +255,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | | `reserved` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the reservation | | `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | -| `reserved` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | +| `reserved` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | | `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle went out of comms while being reserved by a passenger | | `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pick up the passenger | | `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while either waiting for the passenger, or dropping them off | diff --git a/modes/delivery-robots.md b/modes/delivery-robots.md index ddfa4e26..08f63b35 100644 --- a/modes/delivery-robots.md +++ b/modes/delivery-robots.md @@ -72,11 +72,11 @@ The `journey_attributes` array is not used in this mode. ### Trip ID Requirements -Events require a valid `trip_id` in events where `event_types` contains `reservation_start`, `reservation_stop`, `trip_start`, `trip_pause`, `trip_end`, `customer_cancellation`, `provider_cancellation`, or `driver_cancellation`. +Events require a valid `trip_id` in events where `event_types` contains `reservation_start`, `reservation_stop`, `trip_start`, `trip_pause`, `trip_resume`, `trip_end`,`trip_cancel`, `customer_cancellation`, `provider_cancellation`, or `driver_cancellation`. For the robots, the notion of driver does not exist, even when remotely operated. -Additionally, `trip_id` is required if `event_types` contains a `enter_jurisdiction` or `leave_jurisdiction` event pertaining to a delivery trip. +Additionally, `trip_id` is required if `event_types` contains a `trip_enter_jurisdiction` or `trip_leave_jurisdiction` event pertaining to a trip. ### Trip Type @@ -221,15 +221,15 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | **From** `vehicle_state` | **To** `vehicle_state` | `trip_state` | `event_type` | Description | | ------------------------ | ---------------------- | ------------ | ----------------------- | --------------------------------------------------------------------------------------------- | -| `available` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | +| `available` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | | `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while available for-use | | `available` | `non_operational` | N/A | `service_end` | The vehicle has gone out of service (is unavailable for-hire) | | `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a customer | -| `elsewhere` | `available` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | +| `elsewhere` | `available` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | | `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while outside of jurisdictional boundaries | -| `elsewhere` | `non_operational` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | -| `elsewhere` | `on_trip` | `on_trip` | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | -| `elsewhere` | `reserved` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | +| `elsewhere` | `non_operational` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | +| `elsewhere` | `on_trip` | `on_trip` | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | +| `elsewhere` | `reserved` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | | `missing` | `available` | N/A | `located` | The vehicle has been located while available for-hire | | `missing` | `elsewhere` | N/A | `located` | The vehicle has been located while outside of jurisdictional boundaries | | `missing` | `non_operational` | N/A | `located` | The vehicle has been located while not operating commercially | @@ -246,12 +246,12 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a customer | | `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | | `non_operational` | `available` | N/A | `service_start` | The vehicle has gone into service (is available for-hire) | -| `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | +| `non_operational` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | | `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while not operating commercially | | `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | | `non_operational` | `removed` | N/A | `maintenance_start` | The vehicle has entered the depot for maintenance | | `on_trip` | `available` | N/A | `order_drop_off` | The vehicle is at the customer's place and is waiting for them | -| `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | +| `on_trip` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | | `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip to pick up the order | | `on_trip` | `stopped` | N/A | `order_drop_off` | The vehicle is at the customer's place and is waiting for them | | `on_trip` | `stopped` | `stopped` | `order_pick_up` | The vehicle has come to pick up the order at the restaurant | @@ -262,7 +262,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `reserved` | `available` | N/A | `customer_cancellation` | The customer has canceled the reservation | | `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | | `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | -| `reserved` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | +| `reserved` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | | `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone of comms while being reserved by a customer | | `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pickup reservation | | `stopped` | `available` | N/A | `customer_cancellation` | The customer has canceled the trip while the vehicle is waiting | diff --git a/modes/passenger-services.md b/modes/passenger-services.md index dbab4cf2..92777dd6 100644 --- a/modes/passenger-services.md +++ b/modes/passenger-services.md @@ -72,9 +72,9 @@ The `journey_attributes` array **may** have the following key value pairs: ### Trip ID Requirements -Events require a valid `trip_id` in events where `event_types` contains `reservation_start`, `reservation_stop`, `trip_start`, `trip_stop`, `trip_end`, `passenger_cancellation`, `provider_cancellation`, or `driver_cancellation`. +Events require a valid `trip_id` in events where `event_types` contains `reservation_start`, `reservation_stop`, `trip_start`, `trip_pause`, `trip_resume`, `trip_end`,`trip_cancel`, `customer_cancellation`, `provider_cancellation`, or `driver_cancellation`. -Additionally, `trip_id` is required if `event_types` contains a `enter_jurisdiction` or `leave_jurisdiction` event pertaining to a passenger trip. +Additionally, `trip_id` is required if `event_types` contains a `trip_enter_jurisdiction` or `trip_leave_jurisdiction` event pertaining to a trip. [Top][toc] @@ -218,15 +218,15 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | **From** `vehicle_state` | **To** `vehicle_state` | `trip_state` | `event_type` | Description | | ------------------------ | ---------------------- | ------------ | ------------------------ | --------------------------------------------------------------------------------------------------------------- | -| `available` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | +| `available` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | | `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while available for-use | | `available` | `non_operational` | N/A | `service_end` | The vehicle has went out of service (is unavailable for-hire) | | `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a passenger | -| `elsewhere` | `available` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | +| `elsewhere` | `available` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | | `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while outside of jurisdictional boundaries | -| `elsewhere` | `non_operational` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | -| `elsewhere` | `on_trip` | `on_trip` | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | -| `elsewhere` | `reserved` | N/A | `enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | +| `elsewhere` | `non_operational` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | +| `elsewhere` | `on_trip` | `on_trip` | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | +| `elsewhere` | `reserved` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | | `non_contactable` | `available` | N/A | `comms_restored` | The vehicle has come back into comms while available for-hire | | `non_contactable` | `elsewhere` | N/A | `comms_restored` | The vehicle has come back into comms while outside of jurisdictional boundaries | | `non_contactable` | `non_operational` | N/A | `comms_restored` | The vehicle has come back into comms while not operating commercially | @@ -235,11 +235,11 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a passenger | | `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | | `non_operational` | `available` | N/A | `service_start` | The vehicle has went into service (is available for-hire) | -| `non_operational` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | +| `non_operational` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | | `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while not operating commercially | | `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | | `non_operational` | `removed` | N/A | `maintenance_start` | The vehicle has entered the depot for maintenance | -| `on_trip` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | +| `on_trip` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | | `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip | | `on_trip` | `stopped` | `stopped` | `trip_stop` | The vehicle has stopped while on a trip | | `removed` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while removed | @@ -248,7 +248,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | | `reserved` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the reservation | | `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | -| `reserved` | `elsewhere` | N/A | `leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | +| `reserved` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | | `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle went out of comms while being reserved by a passenger | | `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pick up the passenger | | `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while either waiting for the passenger, or dropping them off | From 800d1c9ea9ffd418e46f8be83ceb23de214a9dd6 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Tue, 14 Feb 2023 13:52:37 -0500 Subject: [PATCH 24/29] Unified maintenance across modes --- modes/delivery-robots.md | 10 +++++----- modes/passenger-services.md | 7 +++++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/modes/delivery-robots.md b/modes/delivery-robots.md index 08f63b35..6d27ad75 100644 --- a/modes/delivery-robots.md +++ b/modes/delivery-robots.md @@ -186,6 +186,7 @@ Valid delivery vehicle event types are - `located` - `maintenance` - `maintenance_pick_up` +- `maintenance_end` - `missing` - `off_hours` - `on_hours` @@ -193,8 +194,6 @@ Valid delivery vehicle event types are - `order_drop_off` - `order_pick_up` - `decommission` -- `maintenance_end` -- `maintenance_start` - `customer_cancellation` - `provider_cancellation` - `recommission` @@ -248,9 +247,10 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `non_operational` | `available` | N/A | `service_start` | The vehicle has gone into service (is available for-hire) | | `non_operational` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | | `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while not operating commercially | +| `non_operational` | `non_operational` | N/A | `maintenance` | The vehicle has maintenance performed on site | +| `non_operational` | `non_operational` | N/A | `maintenance_end` | Maintenance is complete | +| `non_operational` | `removed` | N/A | `maintenance_pick_up` | The vehicle has entered the depot for maintenance | | `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | -| `non_operational` | `removed` | N/A | `maintenance_start` | The vehicle has entered the depot for maintenance | -| `on_trip` | `available` | N/A | `order_drop_off` | The vehicle is at the customer's place and is waiting for them | | `on_trip` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | | `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip to pick up the order | | `on_trip` | `stopped` | N/A | `order_drop_off` | The vehicle is at the customer's place and is waiting for them | @@ -277,7 +277,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th ### State Machine Diagram -This *State Machine Diagram* shows how `vehicle_state` and `event_type` relate to each other and how vehicles can transition between states. See [Google Slides](https://docs.google.com/presentation/d/1fHdq1efbN5GSFDLF4en-oA_BYPXQKbbIbHff6iROJKA/edit#slide=id.g2072486e468_1_402) for the source file. +This *State Machine Diagram* shows how `vehicle_state` and `event_type` relate to each other and how vehicles can transition between states. See [Google Slides](https://docs.google.com/presentation/d/1fHdq1efbN5GSFDLF4en-oA_BYPXQKbbIbHff6iROJKA/edit#slide=id.g207ec9d0152_0_0) for the source file. ![Delivery Robots State Machine Diagram](delivery-robots-state-machine-diagram.svg) diff --git a/modes/passenger-services.md b/modes/passenger-services.md index 92777dd6..84873051 100644 --- a/modes/passenger-services.md +++ b/modes/passenger-services.md @@ -188,8 +188,9 @@ Valid passenger services vehicle event types are - `comms_restored` - `driver_cancellation` - `decommission` +- `maintenance` +- `maintenance_pick_up` - `maintenance_end` -- `maintenance_start` - `passenger_cancellation` - `provider_cancellation` - `recommission` @@ -237,8 +238,10 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `non_operational` | `available` | N/A | `service_start` | The vehicle has went into service (is available for-hire) | | `non_operational` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | | `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while not operating commercially | +| `non_operational` | `non_operational` | N/A | `maintenance` | The vehicle has maintenance performed on site | +| `non_operational` | `non_operational` | N/A | `maintenance_end` | Maintenance is complete | +| `non_operational` | `removed` | N/A | `maintenance_pick_up` | The vehicle has entered the depot for maintenance | | `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | -| `non_operational` | `removed` | N/A | `maintenance_start` | The vehicle has entered the depot for maintenance | | `on_trip` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | | `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip | | `on_trip` | `stopped` | `stopped` | `trip_stop` | The vehicle has stopped while on a trip | From baaeb7940bdc18a0c32fafc961cc44f6c254ca88 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Tue, 14 Feb 2023 13:57:32 -0500 Subject: [PATCH 25/29] New draft of 4 state machine diagrams --- modes/car-share-state-machine-diagram.svg | 2 +- modes/delivery-robots-state-machine-diagram.svg | 1 + modes/micromobility-state-machine-diagram.svg | 2 +- modes/passenger-services-state-machine-diagram.svg | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 modes/delivery-robots-state-machine-diagram.svg diff --git a/modes/car-share-state-machine-diagram.svg b/modes/car-share-state-machine-diagram.svg index e5daff9f..90bf791b 100644 --- a/modes/car-share-state-machine-diagram.svg +++ b/modes/car-share-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modes/delivery-robots-state-machine-diagram.svg b/modes/delivery-robots-state-machine-diagram.svg new file mode 100644 index 00000000..f520c955 --- /dev/null +++ b/modes/delivery-robots-state-machine-diagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modes/micromobility-state-machine-diagram.svg b/modes/micromobility-state-machine-diagram.svg index 986e19f3..855e896b 100644 --- a/modes/micromobility-state-machine-diagram.svg +++ b/modes/micromobility-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modes/passenger-services-state-machine-diagram.svg b/modes/passenger-services-state-machine-diagram.svg index 890b55c8..81319756 100644 --- a/modes/passenger-services-state-machine-diagram.svg +++ b/modes/passenger-services-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 0764034159bdadf768088e8fd9cf215f1fc33336 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Tue, 14 Feb 2023 13:59:04 -0500 Subject: [PATCH 26/29] Remove TBD for robot SMD --- modes/delivery-robots.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/modes/delivery-robots.md b/modes/delivery-robots.md index 6d27ad75..4f29beb5 100644 --- a/modes/delivery-robots.md +++ b/modes/delivery-robots.md @@ -281,8 +281,6 @@ This *State Machine Diagram* shows how `vehicle_state` and `event_type` relate t ![Delivery Robots State Machine Diagram](delivery-robots-state-machine-diagram.svg) -TBD - #### Delivery Robots State Notes When there is only one trip ongoing, `trip_state == vehicle_state` From 7302c3b49e149119295881796c33bdee3ac56750 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Tue, 14 Feb 2023 16:10:55 -0500 Subject: [PATCH 27/29] Add journey images --- modes/car-share.md | 22 +++++----------------- modes/delivery-robots.md | 16 +++------------- modes/passenger-services.md | 15 +++------------ 3 files changed, 11 insertions(+), 42 deletions(-) diff --git a/modes/car-share.md b/modes/car-share.md index 44dcc9f6..2ee27ae4 100644 --- a/modes/car-share.md +++ b/modes/car-share.md @@ -42,23 +42,11 @@ _See more available trip and fare attributes for any mode used in the [trips obj The `journey_id` field shall have a consistent value in overlapping trips for a single reservation period, e.g. trips taken by a customer between ignition states over the duration of their reservation. A reservation is the duration the customer has continuous exclusive access to the vehicle whether parked or in motion. Journeys may be point-to-point or multi-segment. -Example 1: customer makes a reservation and company delivers vehicle to customer, then one trip point-to-point by customer, ending reservation at destination -``` -<- Journey -> -<- Trip: reservation -><- Trip: private -> -``` - -Example 2: Customer reservation for multiple days with trips for errands, gas, entertainment, etc -``` -<- Journey -> -<- Trip: private -><- Trip: private -><- Trip: private -><- Trip: private -><- Trip: private -> -``` - -Example 3: one trip point-to-point with an employee moving the vehicle to a new location for maintenance -``` -<- Journey -> -<- Trip: empty -> -``` +- **Example 1**: customer makes a reservation and company delivers vehicle to customer, then one trip point-to-point by customer, ending reservation at destination +- **Example 2**: Customer reservation for multiple days with trips for errands, gas, entertainment, etc +- **Example 3**: one trip point-to-point with an employee moving the vehicle to a new location for maintenance + +![Journey Diagram](https://i.imgur.com/FHxQLps.png) [Top][toc] diff --git a/modes/delivery-robots.md b/modes/delivery-robots.md index 4f29beb5..9b4c26ee 100644 --- a/modes/delivery-robots.md +++ b/modes/delivery-robots.md @@ -46,19 +46,10 @@ _See more available trip and fare attributes for any mode used in the [trips obj The `journey_id` field shall have a consistent value in overlapping trips. Journeys may be point-to-point, multi-segment, or multi-segment overlapping. -Example 1: delivery to a single location, then return -``` -<- Journey -> -<- Trip: delivery -><- Trip: return -> -``` +- **Example 1**: delivery to a single location, then return +- **Example 2**: three overlapping delivery trips in the same journey -Example 2: three overlapping delivery trips in the same journey -``` -<- Journey -> -<- Trip: delivery -> - <- Trip: delivery -> - <- Trip: delivery -><- Trip: return -> -``` +![Journey Diagram](https://i.imgur.com/Mx8jVQq.png) [Top][toc] @@ -66,7 +57,6 @@ Example 2: three overlapping delivery trips in the same journey The `journey_attributes` array is not used in this mode. -- ... [Top][toc] diff --git a/modes/passenger-services.md b/modes/passenger-services.md index 84873051..226d5ce2 100644 --- a/modes/passenger-services.md +++ b/modes/passenger-services.md @@ -46,19 +46,10 @@ _See more available trip and fare attributes for any mode used in the [trips obj The `journey_id` field shall have a consistent value in overlapping trips, e.g. "pooled" or "shared" rides with different start and/or end locations. Journeys may be point-to-point, multi-segment, or multi-segment overlapping. -Example 1: one private trip with reservation, then return to depot -``` -<- Journey -> -<- Trip: reservation -><- Trip: private -><- Trip: empty -> -``` +- **Example 1**: one private trip with reservation, then return to depot +- **Example 2**: three shared trips, some overlapping -Example 2: three shared trips, some overlapping -``` -<- Journey -> -<- Trip: reservation -><- Trip: shared -> - <- Trip: reservation -><- Trip: shared -> - <- Trip: reservation -><- Trip: shared -> -``` +![Journey Diagram](https://i.imgur.com/ciNnDKC.png) [Top][toc] From 73f7bbc1bd28455a3fdfbaef2bd5eefd4e7ad8e3 Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Tue, 14 Feb 2023 16:42:13 -0500 Subject: [PATCH 28/29] Fixed event types --- modes/car-share.md | 12 ++++-------- modes/delivery-robots.md | 38 ++++++++++++++----------------------- modes/event_types.md | 12 +++++++----- modes/micromobility.md | 1 + modes/passenger-services.md | 10 +++------- 5 files changed, 29 insertions(+), 44 deletions(-) diff --git a/modes/car-share.md b/modes/car-share.md index 2ee27ae4..84f4289a 100644 --- a/modes/car-share.md +++ b/modes/car-share.md @@ -43,7 +43,7 @@ _See more available trip and fare attributes for any mode used in the [trips obj The `journey_id` field shall have a consistent value in overlapping trips for a single reservation period, e.g. trips taken by a customer between ignition states over the duration of their reservation. A reservation is the duration the customer has continuous exclusive access to the vehicle whether parked or in motion. Journeys may be point-to-point or multi-segment. - **Example 1**: customer makes a reservation and company delivers vehicle to customer, then one trip point-to-point by customer, ending reservation at destination -- **Example 2**: Customer reservation for multiple days with trips for errands, gas, entertainment, etc +- **Example 2**: customer reservation for multiple days with trips for errands, gas, entertainment, etc - **Example 3**: one trip point-to-point with an employee moving the vehicle to a new location for maintenance ![Journey Diagram](https://i.imgur.com/FHxQLps.png) @@ -178,7 +178,6 @@ Valid car share vehicle event types are - `comms_lost` - `comms_restored` - `driver_cancellation` -- `decommission` - `fueling_start` - `fueling_end` - `maintenance` @@ -186,21 +185,18 @@ Valid car share vehicle event types are - `maintenance_end` - `passenger_cancellation` - `provider_cancellation` -- `recommission` - `remote_start` - `remote_end` -- `reservation_cancel` +- `reservation_stop` - `reservation_start` - `service_end` - `service_start` -- `trip_cancel` - `trip_end` - `trip_enter_jurisdiction` - `trip_leave_jurisdiction` - `trip_resume` - `trip_start` - `trip_stop` -- `unspecified` See vehicle [Event Types][vehicle-events] for descriptions. @@ -215,7 +211,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `available` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | | `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while available for-use | | `available` | `non_operational` | N/A | `service_end` | The vehicle has went out of service (is unavailable for-hire) | -| `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a passenger | +| `available` | `reserved` | `reserved` | `reservation_start` | The vehicle was reserved by a passenger | | `elsewhere` | `available` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | | `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while outside of jurisdictional boundaries | | `elsewhere` | `non_operational` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | @@ -245,7 +241,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | | `reserved` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | | `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle went out of comms while being reserved by a passenger | -| `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pick up the passenger | +| `reserved` | `stopped` | `stopped` | `reservation_stop` | The vehicle has stopped to pick up the passenger | | `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while either waiting for the passenger, or dropping them off | | `stopped` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the trip while the vehicle is waiting to pick them up, or they are being dropped off | | `stopped` | `available` | N/A | `provider_cancellation` | The provider has canceled the trip while the vehicle is waiting for a passenger, or dropping them off | diff --git a/modes/delivery-robots.md b/modes/delivery-robots.md index 9b4c26ee..bc0f91a0 100644 --- a/modes/delivery-robots.md +++ b/modes/delivery-robots.md @@ -164,10 +164,6 @@ See [Vehicle States][vehicle-states] for descriptions. Valid delivery vehicle event types are -- `agency_drop_off` -- `agency_pick_up` -- `battery_charged` -- `battery_low` - `comms_lost` - `comms_restored` - `compliance_pick_up` @@ -177,28 +173,22 @@ Valid delivery vehicle event types are - `maintenance` - `maintenance_pick_up` - `maintenance_end` -- `missing` -- `off_hours` -- `on_hours` - `driver_cancellation` - `order_drop_off` - `order_pick_up` -- `decommission` - `customer_cancellation` - `provider_cancellation` - `recommission` -- `reservation_cancel` - `reservation_start` +- `reservation_stop` - `service_end` - `service_start` -- `trip_cancel` - `trip_end` - `trip_enter_jurisdiction` - `trip_leave_jurisdiction` - `trip_resume` - `trip_start` - `trip_pause` -- `unspecified` See vehicle [Event Types][vehicle-events] for descriptions. @@ -210,15 +200,15 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | **From** `vehicle_state` | **To** `vehicle_state` | `trip_state` | `event_type` | Description | | ------------------------ | ---------------------- | ------------ | ----------------------- | --------------------------------------------------------------------------------------------- | -| `available` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | +| `available` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | | `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while available for-use | | `available` | `non_operational` | N/A | `service_end` | The vehicle has gone out of service (is unavailable for-hire) | -| `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a customer | -| `elsewhere` | `available` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | +| `available` | `reserved` | `reserved` | `reservation_start` | The vehicle was reserved by a customer | +| `elsewhere` | `available` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | | `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while outside of jurisdictional boundaries | -| `elsewhere` | `non_operational` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | -| `elsewhere` | `on_trip` | `on_trip` | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | -| `elsewhere` | `reserved` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | +| `elsewhere` | `non_operational` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | +| `elsewhere` | `on_trip` | `on_trip` | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while on a trip | +| `elsewhere` | `reserved` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while reserved by a customer | | `missing` | `available` | N/A | `located` | The vehicle has been located while available for-hire | | `missing` | `elsewhere` | N/A | `located` | The vehicle has been located while outside of jurisdictional boundaries | | `missing` | `non_operational` | N/A | `located` | The vehicle has been located while not operating commercially | @@ -235,13 +225,13 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `non_contactable` | `reserved` | `reserved` | `comms_restored` | The vehicle has come back into comms while reserved by a customer | | `non_contactable` | `stopped` | `stopped` | `comms_restored` | The vehicle has come back into comms while stopped | | `non_operational` | `available` | N/A | `service_start` | The vehicle has gone into service (is available for-hire) | -| `non_operational` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | +| `non_operational` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while not operating commercially | | `non_operational` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while not operating commercially | -| `non_operational` | `non_operational` | N/A | `maintenance` | The vehicle has maintenance performed on site | -| `non_operational` | `non_operational` | N/A | `maintenance_end` | Maintenance is complete | -| `non_operational` | `removed` | N/A | `maintenance_pick_up` | The vehicle has entered the depot for maintenance | +| `non_operational` | `non_operational` | N/A | `maintenance` | The vehicle has maintenance performed on site | +| `non_operational` | `non_operational` | N/A | `maintenance_end` | Maintenance is complete | +| `non_operational` | `removed` | N/A | `maintenance_pick_up` | The vehicle has entered the depot for maintenance | | `non_operational` | `removed` | N/A | `decommissioned` | The vehicle has been removed from the Provider's fleet | -| `on_trip` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | +| `on_trip` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while on a trip | | `on_trip` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone out of comms while on a trip to pick up the order | | `on_trip` | `stopped` | N/A | `order_drop_off` | The vehicle is at the customer's place and is waiting for them | | `on_trip` | `stopped` | `stopped` | `order_pick_up` | The vehicle has come to pick up the order at the restaurant | @@ -252,9 +242,9 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `reserved` | `available` | N/A | `customer_cancellation` | The customer has canceled the reservation | | `reserved` | `available` | N/A | `driver_cancellation` | The driver has canceled the reservation | | `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | -| `reserved` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | +| `reserved` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | | `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle has gone of comms while being reserved by a customer | -| `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pickup reservation | +| `reserved` | `stopped` | `stopped` | `reservation_stop` | The vehicle has stopped to pickup reservation | | `stopped` | `available` | N/A | `customer_cancellation` | The customer has canceled the trip while the vehicle is waiting | | `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while waiting | | `stopped` | `available` | N/A | `provider_cancellation` | The provider has canceled the trip while the vehicle is waiting | diff --git a/modes/event_types.md b/modes/event_types.md index 81b4e476..819404b2 100644 --- a/modes/event_types.md +++ b/modes/event_types.md @@ -10,32 +10,34 @@ As with all MDS definitions, they should be described in a way that maximizes th | `agency_pick_up` | Pick up by the agency, e.g. impound | | `battery_charged` | Battery charged (entering service) | | `battery_low` | Battery low (exiting service) | +| `changed_geographies` | Geography change per [Geography Driven Events](/general-information.md#geography-driven-events) | | `charging_start` | Battery start charging | | `charging_end` | Battery end charging | | `comms_lost` | Communications lost | | `comms_restored` | Communications restored | | `compliance_pick_up` | Pick up for compliance (rule violation) | -| `order_drop_off` | Pick up of the order at the restaurant or shop or warehouse | -| `order_pick_up` | Delivery of the order at the customer's location | +| `customer_cancellation` | Customer cancelled a trip | | `decommissioned` | Decommissioned | | `driver_cancellation` | Driver cancelled a trip | | `fueling_start` | Fueling starts | | `fueling_end` | Fueling ends | -| `not_located` | Location unknown | | `located` | Location found (opposite of Missing) | | `maintenance` | Start general maintenance in right of way | | `maintenance_pick_up` | Start pick up for maintenance outside of right of way | | `maintenance_end` | End of maintenance | +| `not_located` | Location unknown | | `off_hours` | Off hours - end of service | | `on_hours` | On hours - start of service | -| `customer_cancellation` | Customer cancelled a trip | +| `order_drop_off` | Pick up of the order at business | +| `order_pick_up` | Delivery of the order at the customer location | | `provider_cancellation` | Provider cancelled a trip | | `provider_drop_off` | Drop off by the provider | | `rebalance_pick_up` | Pick up for rebalancing | | `remote_start` | Remotely start the engine | | `remote_end` | Remotely stop the engine | -| `reservation_cancel` | Reservation cancelled | +| `reservation_cancel` | Reservation cancelled before trip | | `reservation_start` | Reservation started | +| `reservation_stop` | Reservation stopped temporarily | | `system_resume` | Resume system operations, e.g. start of day | | `system_suspend` | Suspend system operations, e.g. end of day | | `trip_cancel` | Cancel trip | diff --git a/modes/micromobility.md b/modes/micromobility.md index 4ac97731..052bab54 100644 --- a/modes/micromobility.md +++ b/modes/micromobility.md @@ -129,6 +129,7 @@ Valid micromobility vehicle event types are - `agency_pick_up` - `battery_charged` - `battery_low` +- `changed_geographies` - `comms_lost` - `comms_restored` - `compliance_pick_up` diff --git a/modes/passenger-services.md b/modes/passenger-services.md index 226d5ce2..f4f85c93 100644 --- a/modes/passenger-services.md +++ b/modes/passenger-services.md @@ -178,25 +178,21 @@ Valid passenger services vehicle event types are - `comms_lost` - `comms_restored` - `driver_cancellation` -- `decommission` - `maintenance` - `maintenance_pick_up` - `maintenance_end` - `passenger_cancellation` - `provider_cancellation` -- `recommission` -- `reservation_cancel` +- `reservation_stop` - `reservation_start` - `service_end` - `service_start` -- `trip_cancel` - `trip_end` - `trip_enter_jurisdiction` - `trip_leave_jurisdiction` - `trip_resume` - `trip_start` - `trip_stop` -- `unspecified` This list is somewhat shorter than the micromobility event list, as passenger service vehicles are controlled by a driver or potentially an AI. They are not picked up or dropped off for rebalancing or compliance, for example, and they do not go out of service because of a low battery. @@ -213,7 +209,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `available` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left jurisdictional boundaries while available for-hire | | `available` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while available for-use | | `available` | `non_operational` | N/A | `service_end` | The vehicle has went out of service (is unavailable for-hire) | -| `available` | `reserved` | `reserved` | `reserve` | The vehicle was reserved by a passenger | +| `available` | `reserved` | `reserved` | `reservation_start` | The vehicle was reserved by a passenger | | `elsewhere` | `available` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while available for-hire | | `elsewhere` | `non_contactable` | N/A | `comms_lost` | The vehicle has went out of comms while outside of jurisdictional boundaries | | `elsewhere` | `non_operational` | N/A | `trip_enter_jurisdiction` | The vehicle has entered jurisdictional boundaries while not operating commercially | @@ -244,7 +240,7 @@ This is the list of `vehicle_state` and `event_type` pairings that constitute th | `reserved` | `available` | N/A | `provider_cancellation` | The provider has canceled the reservation | | `reserved` | `elsewhere` | N/A | `trip_leave_jurisdiction` | The vehicle has left the jurisdiction while in a reservation | | `reserved` | `non_contactable` | N/A | `comms_lost` | The vehicle went out of comms while being reserved by a passenger | -| `reserved` | `stopped` | `stopped` | `reserve_stop` | The vehicle has stopped to pick up the passenger | +| `reserved` | `stopped` | `stopped` | `reservation_stop` | The vehicle has stopped to pick up the passenger | | `stopped` | `available` | N/A | `driver_cancellation` | The driver has canceled the trip while either waiting for the passenger, or dropping them off | | `stopped` | `available` | N/A | `passenger_cancellation` | The passenger has canceled the trip while the vehicle is waiting to pick them up, or they are being dropped off | | `stopped` | `available` | N/A | `provider_cancellation` | The provider has canceled the trip while the vehicle is waiting for a passenger, or dropping them off | From 0b5b5a54211187dea2010c637ae8c1f5422577ea Mon Sep 17 00:00:00 2001 From: Michael Schnuerle <1285077+schnuerle@users.noreply.github.com> Date: Tue, 14 Feb 2023 16:51:02 -0500 Subject: [PATCH 29/29] "Final" state machine diagrams --- modes/car-share-state-machine-diagram.svg | 2 +- modes/delivery-robots-state-machine-diagram.svg | 2 +- modes/micromobility-state-machine-diagram.svg | 2 +- modes/passenger-services-state-machine-diagram.svg | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modes/car-share-state-machine-diagram.svg b/modes/car-share-state-machine-diagram.svg index 90bf791b..323c0109 100644 --- a/modes/car-share-state-machine-diagram.svg +++ b/modes/car-share-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modes/delivery-robots-state-machine-diagram.svg b/modes/delivery-robots-state-machine-diagram.svg index f520c955..9e2dfa7c 100644 --- a/modes/delivery-robots-state-machine-diagram.svg +++ b/modes/delivery-robots-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modes/micromobility-state-machine-diagram.svg b/modes/micromobility-state-machine-diagram.svg index 855e896b..e870daab 100644 --- a/modes/micromobility-state-machine-diagram.svg +++ b/modes/micromobility-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modes/passenger-services-state-machine-diagram.svg b/modes/passenger-services-state-machine-diagram.svg index 81319756..b5c27f1e 100644 --- a/modes/passenger-services-state-machine-diagram.svg +++ b/modes/passenger-services-state-machine-diagram.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file