"Micromobility" refers to single-occupancy modes of docked or dockless transportation such as e-scooters, e-bikes, and human-powered bikes.
See the modes overview for how the mode specific information below applies across MDS.
The short name identifier for Micromobility used across MDS is micromobility
.
See more available trip and fare attributes for any mode used in the trips object.
The journey_id
field is not used in this mode. Trips are point-to-point.
The journey_attributes
object is not used in this mode.
Required in events if event_types
contains trip_start
, trip_end
, trip_cancel
, trip_enter_jurisdiction
, or trip_leave_jurisdiction
.
The trip_type
field may have one of the following values:
rider
: a single rider is taking a triprebalance
: vehicle ridden by operator to rebalancemaintenance
: vehicles ridden by operator to perform maintenance or check operation
The trip_attributes
object is not used in this mode.
The fare_attributes
object is not used in this mode.
See more available vehicle attributes and accessibility attributes for any mode used in the vehicles object.
The vehicle_attributes
object may have the following key value pairs:
year
(integer, optional)make
(string, optional)model
(string, optional)
This accessibility_attributes
enum represents the accessibility attributes available on a given vehicle, or the accessibility attributes utilized for a given trip.
accessibility_attributes |
Description |
---|---|
adaptive |
This vehicle is accessible to people with various physical disabilities, and may include three wheels or be self balancing, a seat, or a basket or storage area |
Valid micromobility vehicle states are
removed
available
non_operational
reserved
on_trip
non_contactable
missing
elsewhere
See Vehicle States for descriptions.
Valid micromobility vehicle event types are
agency_drop_off
agency_pick_up
battery_charged
battery_low
changed_geographies
comms_lost
comms_restored
compliance_pick_up
decommissioned
not_located
located
maintenance
maintenance_pick_up
off_hours
on_hours
provider_drop_off
rebalance_pick_up
reservation_cancel
reservation_start
system_resume
system_suspend
trip_cancel
trip_end
trip_enter_jurisdiction
trip_leave_jurisdiction
trip_start
unspecified
Note that providers should make best-effort to map their business logic onto these states, which are meant to provide a view of the fleet to an agency. But if an agency does not perform agency_drop_off
or agency_pick_up
, for example, they need not be included in the provider's implementation.
See vehicle Event Types for descriptions.
This is the list of vehicle_state
and event_type
pairings that constitute the valid transitions of the vehicle state machine.
The state-transition table below describes how the vehicle_state
changes in response to each event_type
. Most events will have a single event_type
. However, if a single event has more than one ordered event_type
entry, the intermediate vehicle_state
value(s) are discarded. For example, if an event contains [trip_end
, battery_low
] then the vehicle transitions from on_trip
through available
to non_operational
per the state machine, but the vehicle is never "in" the available
state.
Note that to handle out-of-order events, the validity of the prior-state shall not be enforced at the time of ingest via Provider or Agency. Events received out-of-order may result in transient incorrect vehicle states.
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 |
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: Yes (as of 1.1.0). The vehicle has entered or left one or more Geographies managed by a Policy. See 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 |
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 for the source file.