Skip to content

Commit b39194a

Browse files
committed
Reconcile trip data structure
Break out mode-specific info
1 parent 7d6f7ec commit b39194a

1 file changed

Lines changed: 33 additions & 37 deletions

File tree

general-information.md

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ Whenever a vehicle location coordinate measurement is presented, it must be repr
8585

8686
| Field | Type | Required/Optional | Field Description |
8787
| -------------- | --------------- | --------------------- | ------------------------------------------------------------ |
88-
| `timestamp` | [timestamp][ts] | Required | Date/time that event occurred. Based on GPS or GNSS clock |
88+
| `timestamp` | [Timestamp][ts] | Required | Date/time that event occurred. Based on GPS or GNSS clock |
8989
| `altitude` | Double | Required if Available | Altitude above mean sea level in meters |
9090
| `heading` | Double | Required if Available | Degrees - clockwise starting at 0 degrees at true North |
9191
| `speed` | Float | Required if Available | Estimated speed in meters / sec as reported by the GPS chipset |
@@ -113,6 +113,8 @@ Example of a vehicle location GeoJSON [`Feature`][geojson-feature] object:
113113
}
114114
```
115115

116+
(?) Remove this section?
117+
116118
### Stop-based Geographic Data
117119

118120
When an individual location coordinate measurement (Point) corresponds to a [Stop][general-stops], it must be presented with a `stop_id` property:
@@ -229,40 +231,36 @@ A Trip is defined by the following structure:
229231
| `trip_duration` | Integer | Required | Time, in Seconds |
230232
| `trip_distance` | Integer | Required | Trip Distance, in Meters |
231233
| `trip_attributes` | Array | Optional | **[Mode](/modes#list-of-supported-modes) Specific**. [Trip attributes](/modes#trip-attributes) given as unordered key-value pairs |
232-
| `start_time` | [timestamp][ts] | Required | Start of the passenger/driver trip |
233-
| `end_time` | [timestamp][ts] | Required | End of the passenger/driver trip |
234-
| `start_location` | GeoJSON [Point Feature][point-geo] | Required | Location of the start of the trip. See also [Stop-based Geographic Data][stop-based-geo]. |
235-
| `end_location` | GeoJSON [Point Feature][point-geo] | Required | Location of the end of the trip. See also [Stop-based Geographic Data][stop-based-geo]. |
236-
| `route` | GeoJSON `FeatureCollection` | Required | See [Routes](#routes) detail below. Note the `start_location` and `end_location` fields in this object are duplicated in the `route` data. |
237-
| `accuracy` | Integer | Required | The approximate level of accuracy, in meters, of `Points` within `route` |
238-
| `publication_time` | [timestamp][ts] | Optional | Date/time that trip became available through the trips endpoint |
239-
| `parking_verification_url` | String | Optional | A URL to a photo (or other evidence) of proper vehicle parking |
234+
| `start_time` | [Timestamp][ts] | Required | Start of the passenger/driver trip |
235+
| `end_time` | [Timestamp][ts] | Required | End of the passenger/driver trip |
236+
| `start_location` | `{ lat: number, lng: number }` | Required | Location of the start of the trip. See also [Stop-based Geographic Data][stop-based-geo]. |
237+
| `end_location` | `{ lat: number, lng: number }` | Required | Location of the end of the trip. See also [Stop-based Geographic Data][stop-based-geo]. |
238+
| `publication_time` | [Timestamp][ts] | Optional | Date/time that trip became available through the trips endpoint |
240239
| `fare` | [Fare](#fare) | Conditionally Required | Fare for the trip (required if trip was completed) |
240+
241+
(?) Document that the route is obtained by hitting the /telemetry endpoint with a `trip_id`?
242+
243+
(?) Should we keep mix of `trip_` prefix vs. no prefix? E.g. `start_time`.
244+
245+
(?) Does anyone use `publication_time`?
246+
247+
(?) Should `fare` move into `trip_attributes`? No fare for delivery modes?
248+
249+
Examples of mode-specific `trip_attributes`:
250+
251+
| Field | Type | Required/Optional | Comments |
252+
| ----- | -------- | ----------------- | ----- |
253+
| `dispatch_time` | [Timestamp][ts] | Conditionally Required | Time the vehicle was dispatched to the customer (required if trip was dispatched) |
254+
| `quoted_trip_start_time` | [Timestamp][ts] | Required | Time the trip was estimated or scheduled to start, that was provided to the passenger |
255+
| `requested_trip_start_location` | `{ lat: number, lng: number }` | Conditionally Required | Location where the customer requested the trip to start (required if this is within jurisdictional boundaries) |
241256
| `reservation_method` | Enum | Required | Way the customer created their reservation, see [reservation-method](#reservation-method) |
242-
| `reservation_time` | Timestamp | Required | Time the customer *requested* a reservation |
257+
| `reservation_time` | [Timestamp][ts] | Required | Time the customer *requested* a reservation |
243258
| `reservation_type` | Enum | Required | Type of reservation, see [reservation-type](#reservation-type) |
259+
| `cancellation_reason` | string | Conditionally Required | The reason why a *driver* cancelled a reservation. (required if a driver cancelled a trip, and a `driver_cancellation` event_type was part of the trip) |
260+
| `accessibility_options` | Enum[] | Optional | The **union** of any accessibility options requested, and used. E.g. if the passenger requests a vehicle with `wheelchair_accessible`, but doesn’t utilize the features during the trip, the trip payload will include `accessibility_options: ['wheelchair_accessible']`. See [accessibility-options][accessibility-options] |
261+
| `parking_verification_url` | String | Optional | A URL to a photo (or other evidence) of proper vehicle parking |
244262

245-
WORK IN PROGRESS - THIS WAS FROM THE AGENCY PROPOSAL
246-
247-
| Field | Type | Required/Optional | Field Description |
248-
|-------------------------------|--------------------------------|------------------------| ----------------- |
249-
| trip_id | UUID | Required | UUID for the trip this payload pertains to |
250-
| trip_type | Enum | Optional | The type of the trip |
251-
| trip_attributes | `{ [String]: String}` | Optional | Trip attributes, given as mode-specific key-value pairs |
252-
| provider_id | UUID | Required | Provider which managed this trip |
253-
| reservation_method | Enum | Required | Way the customer created their reservation, see [reservation-method](#reservation-method) |
254-
| reservation_time | Timestamp | Required | Time the customer *requested* a reservation |
255-
| reservation_type | Enum | Required | Type of reservation, see [reservation-type](#reservation-type) |
256-
| quoted_trip_start_time | Timestamp | Required | Time the trip was estimated or scheduled to start, that was provided to the passenger |
257-
| requested_trip_start_location | `{ lat: number, lng: number }` | Conditionally Required | Location where the customer requested the trip to start (required if this is within jurisdictional boundaries) |
258-
| dispatch_time | Timestamp | Conditionally Required | Time the vehicle was dispatched to the customer (required if trip was dispatched) |
259-
| trip_start_time | Timestamp | Conditionally Required | Time the trip started (required if trip started) |
260-
| trip_end_time | Timestamp | Conditionally Required | Time the trip ended (required if trip was completed) |
261-
| distance | Float | Conditionally Required | Total distance of the trip in meters (required if trip was completed) |
262-
| cancellation_reason | string | Conditionally Required | The reason why a *driver* cancelled a reservation. (required if a driver cancelled a trip, and a `driver_cancellation` event_type was part of the trip) |
263-
| fare | [Fare](#fare) | Conditionally Required | Fare for the trip (required if trip was completed) |
264-
| accessibility_options | Enum[] | Optional | The **union** of any accessibility options requested, and used. E.g. if the passenger requests a vehicle with `wheelchair_accessible`, but doesn’t utilize the features during the trip, the trip payload will include `accessibility_options: ['wheelchair_accessible']`. See [accessibility-options][accessibility-options] |
265-
263+
(?) Make sure that ALL mode-specific stuff goes into the Modes work!
266264

267265
[Top][toc]
268266

@@ -315,8 +313,8 @@ Events represent changes in vehicle status.
315313
| `vehicle_id` | String | Required | A unique vehicle identifier (visible code, licence plate, etc), visible on the vehicle itself |
316314
| `vehicle_state` | Enum | Required | See [vehicle state][vehicle-states] table |
317315
| `event_types` | Enum[] | Required | Vehicle [event types][vehicle-events] for state change, with allowable values determined by `vehicle_state` |
318-
| `event_time` | [timestamp][ts] | Required | Date/time that event occurred at. See [Event Times][event-times] |
319-
| `publication_time` | [timestamp][ts] | Optional | Date/time that event became available through the status changes endpoint |
316+
| `event_time` | [Timestamp][ts] | Required | Date/time that event occurred at. See [Event Times][event-times] |
317+
| `publication_time` | [Timestamp][ts] | Optional | Date/time that event became available through the status changes endpoint |
320318
| `event_location` | GeoJSON [Point Feature][point-geo] | Required | See also [Stop-based Geographic Data][stop-based-geo]. |
321319
| `event_geographies` | UUID[] | Optional | **[Beta feature](/general-information.md#beta-features):** *Yes (as of 2.0.0)*. Array of Geography UUIDs consisting of every Geography that contains the location of the status change. See [Geography Driven Events][geography-driven-events]. Required if `event_location` is not present. |
322320
| `trip_ids`[] | UUID[] | Required if Applicable | Trip UUIDs (foreign key to /trips endpoint), required if `event_types` contains `trip_start`, `trip_end`, `trip_cancel`, `trip_enter_jurisdiction`, or `trip_leave_jurisdiction` |
@@ -343,7 +341,7 @@ A standard point of vehicle telemetry. References to latitude and longitude impl
343341
| -------------- | -------------- | --------------------- | ------------------------------------------------------------ |
344342
| `telemetry_id` | UUID | Required | ID used for uniquely-identifying a Telemetry entry |
345343
| `device_id` | UUID | Required | ID used in [Register](#vehicle---register) |
346-
| `timestamp` | [timestamp][ts]| Required | Date/time that event occurred. Based on GPS or GNSS clock |
344+
| `timestamp` | [Timestamp][ts]| Required | Date/time that event occurred. Based on GPS or GNSS clock |
347345
| `trip_ids` | UUID[] | Required | If telemetry occurred during a trip, the ID of the trip(s). If not in a trip, `null`.
348346
| `journey_id` | UUID | Required | If telemetry occurred during a trip, the ID of the journey. If not in a trip, `null`.
349347
| `stop_id` | UUID | Required if Applicable | Stop that the vehicle is currently located at. Only applicable for _docked_ Micromobility. See [Stops][stops] |
@@ -359,8 +357,6 @@ A standard point of vehicle telemetry. References to latitude and longitude impl
359357
| `battery_percent` | Integer | Required if Applicable | Percent battery charge of vehicle, expressed between 0 and 100 |
360358
| `fuel_percent` | Integer | Required if Applicable | Percent fuel in vehicle, expressed between 0 and 100 |
361359

362-
(?) Add `journey_id`?
363-
364360
[Top][toc]
365361

366362
## Stops
@@ -475,7 +471,7 @@ A vehicle record is as follows:
475471
| `propulsion_types` | Enum[] | Required | Array of [propulsion types][propulsion-types]; allows multiple values |
476472
| `battery_capacity` | Integer | Required if Available | Capacity of battery expressed as milliamp hours (mAh) |
477473
| `fuel_capacity` | Integer | Required if Available | Capacity of fuel tank (liquid, solid, gaseous) expressed in liters |
478-
| `last_event_time` | [timestamp][ts] | Required | Date/time when last state change occurred. See [Event Times][event-times] |
474+
| `last_event_time` | [Timestamp][ts] | Required | Date/time when last state change occurred. See [Event Times][event-times] |
479475
| `last_state` | Enum | Required | [Vehicle state][vehicle-states] of most recent state change. |
480476
| `last_event_types` | Enum[] | Required | [Vehicle event(s)][vehicle-events] of most recent state change, allowable values determined by `last_vehicle_state`. |
481477
| `last_event_location` | GeoJSON [Point Feature][point-geo]| Required | Location of vehicle's last event. See also [Stop-based Geographic Data][stop-based-geo]. |

0 commit comments

Comments
 (0)