Processed Trip Dataset — Structure & JSON Schema

This document describes the structure of a processed trip dataset as returned by the trip retrieval API. All example values use fake/redacted data to protect sensitive information.

1. Overview

The processed trip dataset is a JSON response containing a single vehicle trip that has been through the server-side scoring and analysis pipeline. Unlike the raw trip dataset — which carries full IMU sensor readings and per-second quantiles — the processed dataset focuses on driving behavior scores, speed compliance, eco-scoring, and annotated route points with alerts and events already classified.

A processed trip typically contains fewer waypoints than the raw equivalent (interpolated points are thinned, zero-speed stretches are collapsed), and each point carries contextual annotations such as speed limits, alert classifications, and phone-usage/cornering flags.


2. Top-Level Response Envelope

FieldTypeDescription
ResultobjectContains the trip payload and status code (see §3).

Note: Unlike the raw dataset envelope (success, status_code, message, error), the processed dataset wraps everything under a single Result object with an embedded Code field.

Example (top-level)

{
  "Result": {
    "Track": { "..." },
    "Code": 200
  }
}

3. Result Object

FieldTypeDescription
TrackobjectFull processed trip payload (see §4).
CodeintegerHTTP-style status code (e.g. 200).

4. Track Object

The Track object is the main container, split into logical groups below.

4.1 Trip Metadata

FieldTypeUnitDescription
StartDatestring (ISO 8601)Trip start timestamp (device local timezone).
EndDatestring (ISO 8601)Trip end timestamp (device local timezone).
StatusstringTrip lifecycle status. Known values: "Active".
DistancenumberkmTotal trip distance.
DurationnumberminutesTotal trip duration.
OriginChangedbooleanWhether the trip origin was reassigned to a different user/device.
TrackOriginCodestringOrigin classification. Known values: "OriginalDriver".
ShareTypestringSharing status. Known values: "NotShared".
DrivingTipsstringServer-generated driving advice (may be empty).
Tagsarray | nullUser-defined tags for the trip.
BeaconIdintegerBluetooth beacon identifier (0 = none).
VehicleTokenstring | nullLinked vehicle token, if assigned.

4.2 Event Counts

FieldTypeDescription
AccelerationCountintegerNumber of harsh acceleration events detected.
DecelerationCountintegerNumber of harsh braking events detected.

4.3 Addresses & Cities

FieldTypeDescription
AddressStartstringFull formatted address at trip origin.
AddressEndstringFull formatted address at trip destination.
CityStartstringCity name at trip origin.
CityFinishstringCity name at trip destination.
AddressStartPartsobjectStructured address components for trip origin (see §4.3.1).
AddressFinishPartsobjectStructured address components for trip destination (see §4.3.1).

4.3.1 Address Parts Object

FieldTypeDescription
CountryCodestringISO 3166-1 alpha-3 country code (e.g. "DEU").
CountrystringCountry name.
CountystringCounty / administrative region.
PostalCodestringPostal / ZIP code.
StatestringState or province (may be empty).
CitystringCity name.
DistrictstringDistrict or neighborhood.
StreetstringStreet name.
HousestringHouse/building number.

Example

{
  "CountryCode": "DEU",
  "Country": "Germany",
  "County": "Berlin",
  "PostalCode": "10115",
  "State": "Berlin",
  "City": "Berlin",
  "District": "Mitte",
  "Street": "Friedrichstraße",
  "House": "42"
}

4.4 Driving Scores (1–5 Scale)

Legacy scoring on a 1-to-5 star scale (5 = best).

FieldTypeRangeDescription
Ratinginteger1–5Overall driving score.
RatingCorneringinteger1–5Cornering behavior score.
RatingAccelerationinteger1–5Acceleration behavior score.
RatingBrakinginteger1–5Braking behavior score.
RatingSpeedinginteger1–5Speed compliance score.
RatingPhoneUsageinteger1–5Phone distraction score.
RatingTimeOfDayinteger0–5Time-of-day risk score (0 = not scored).

4.5 Driving Scores (0–100 Scale)

Granular scoring on a 0-to-100 scale (100 = best).

FieldTypeRangeDescription
Rating100integer0–100Overall driving score.
RatingCornering100integer0–100Cornering behavior score.
RatingAcceleration100integer0–100Acceleration behavior score.
RatingBraking100integer0–100Braking behavior score.
RatingSpeeding100integer0–100Speed compliance score.
RatingPhoneDistraction100integer0–100Phone distraction score.
RatingTimeOfDay100integer | null0–100Time-of-day risk score. null if not evaluated.

4.6 Eco-Scores

FieldTypeRangeDescription
EcoScoreinteger0–100Overall eco-driving score.
EcoScoreFuelinteger0–100Fuel efficiency sub-score.
EcoScoreTyresinteger0–100Tyre wear sub-score.
EcoScoreBrakesinteger0–100Brake wear sub-score.
EcoScoreDepreciationinteger0–100Vehicle depreciation sub-score.

4.7 Speed & Phone Statistics

FieldTypeUnitDescription
AverageSpeednumberkm/hAverage speed during the trip.
MaxSpeednumberkm/hMaximum speed recorded.
OverSpeedMileagenumberkmTotal distance driven over the speed limit.
MidOverSpeedMileagenumberkmDistance driven at moderate overspeed (e.g. 10–20 km/h above limit).
HighOverSpeedMileagenumberkmDistance driven at high overspeed (e.g. >20 km/h above limit).
PhoneUsagenumberminutesTotal phone usage duration during the trip.
PhoneUsageKmnumberkmDistance driven while using phone.
PhoneUsageOverSpeednumberminutesPhone usage time while over speed limit.
PhoneUsageOverSpeedKmnumberkmDistance driven while using phone and over speed limit.

4.8 Time-of-Day Breakdown

FieldTypeUnitDescription
RushHoursnumberminutesDuration spent driving in rush-hour windows.
NightHoursnumberminutesDuration spent driving at night.
DayHoursnumberminutesDuration spent driving during daytime.

4.9 Points Array

See §5 below.


5. Point Object (Processed Waypoint)

Each point is an annotated route sample. The processed dataset reduces sensor-level detail in favor of contextual annotations (speed limits, alerts, phone usage, cornering flags).

Compared to the raw dataset waypoint (35 fields + quantiles), a processed point has 18 fields — no IMU accelerometer/gyroscope readings and no quantiles.

FieldTypeUnitDescription
IdintegerUnique server-assigned point identifier (globally sequential).
NumberintegerSequential index within this trip (0-based).
TotalMetersnumbermetersCumulative distance from trip start.
Speednumberkm/hInstantaneous GPS speed.
MidSpeednumberkm/hSmoothed/median speed. 0 indicates an interpolated point without a direct GPS fix.
PointDatestringISO 8601Timestamp of this sample (device local timezone).
LatitudenumberdegreesWGS-84 latitude.
LongitudenumberdegreesWGS-84 longitude.
HeightnumbercentimetersAltitude. 0 indicates an interpolated point.
CoursenumberdegreesHeading (0–360, clockwise from true north). 0 on interpolated points.
Yawnumberdeg/sYaw rate (rotation around vertical axis).
LateralnumberLateral (cornering) force magnitude.
AlertTypestringDriving event alert classification (see §5.1).
AlertValuenumberMagnitude of the detected alert event. 0 if no alert.
SpeedTypestringSpeed compliance classification (see §5.2).
SpeedLimitintegerkm/hPosted speed limit at this location (map-matched).
PhoneUsagebooleanWhether the driver was using the phone at this point.
CorneringbooleanWhether a cornering event was flagged at this point.

5.1 AlertType Values

ValueDescription
"" (empty)No alert at this point.
"acc"Harsh acceleration event detected.
"decel"Harsh braking event detected.

When AlertType is non-empty, AlertValue contains the event magnitude (higher = more severe).

5.2 SpeedType Values

ValueDescription
"norm"Speed is within or below the posted speed limit.
"mid"Moderate overspeed — driving above the speed limit but within a tolerance band.
"high"High overspeed — significantly exceeding the posted limit.

5.3 Interpolated Points

Some points have MidSpeed = 0, Height = 0, and Course = 0. These are interpolated between actual GPS fixes: the SDK or server filled in position estimates for seconds where no direct GPS reading was available. They still carry Speed (propagated from the nearest real fix) and SpeedLimit (map-matched).

Example Point (fake coordinates)

{
  "Id": 10000000001,
  "Number": 42,
  "TotalMeters": 1250.75,
  "Speed": 45.30,
  "MidSpeed": 45.30,
  "PointDate": "2026-01-15T14:30:42+01:00",
  "Latitude": 52.52000,
  "Longitude": 13.40500,
  "Height": 3520.0,
  "Course": 128.50,
  "Yaw": -2.15,
  "Lateral": 0,
  "AlertType": "",
  "AlertValue": 0,
  "SpeedType": "norm",
  "SpeedLimit": 50,
  "PhoneUsage": false,
  "Cornering": false
}

Example Alert Point (fake coordinates)

{
  "Id": 10000000225,
  "Number": 224,
  "TotalMeters": 2513.58,
  "Speed": 43.70,
  "MidSpeed": 43.70,
  "PointDate": "2026-01-15T14:35:17+01:00",
  "Latitude": 52.51200,
  "Longitude": 13.41200,
  "Height": 8935.17,
  "Course": 203.04,
  "Yaw": -2.53,
  "Lateral": 0,
  "AlertType": "acc",
  "AlertValue": 5.057,
  "SpeedType": "norm",
  "SpeedLimit": 30,
  "PhoneUsage": false,
  "Cornering": false
}

6. Raw vs. Processed Dataset Comparison

AspectRaw DatasetProcessed Dataset
Envelopesuccess, status_code, message, result, errorResult.Track, Result.Code
Storage referenceS3Location presentNot included
User/Device infoUserInfo + DeviceInfoNot included
Waypoint count~839 (1 Hz, every second)~728 (thinned, interpolated gaps filled)
Fields per waypoint35 + Quantiles (~77 values)18
IMU sensorsFull accel + gyro (processed & original, 3 axes each)Only Yaw and Lateral retained
Quantiles6 categories x 7 stats per waypointNot included
Speed limitsNot includedMap-matched SpeedLimit per point
AlertsNot includedAlertType + AlertValue per point
Driving scoresNot included1–5 and 0–100 scales, 7 categories
Eco-scoresNot included5 eco-score categories
AddressesNot includedGeocoded start/end with structured parts
Speed analysisNot includedOver-speed mileage breakdown
Phone usageNot includedPer-point flags + trip-level statistics
CorneringNot includedPer-point boolean flag

7. Data Flow Diagram

┌────────────────────────────────────────────────────────────────────────┐
│                        API Response                                    │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  Result                                                          │  │
│  │  ├── Code (200)                                                  │  │
│  │  └── Track                                                       │  │
│  │      ├── Metadata                                                │  │
│  │      │   ├── StartDate, EndDate, Status, Duration, Distance      │  │
│  │      │   ├── TrackOriginCode, OriginChanged, ShareType           │  │
│  │      │   ├── BeaconId, VehicleToken, Tags                        │  │
│  │      │   └── DrivingTips                                         │  │
│  │      ├── Event Counts                                            │  │
│  │      │   └── AccelerationCount, DecelerationCount                │  │
│  │      ├── Addresses                                               │  │
│  │      │   ├── AddressStart / AddressEnd (formatted)               │  │
│  │      │   ├── CityStart / CityFinish                              │  │
│  │      │   └── AddressStartParts / AddressFinishParts              │  │
│  │      │       └── CountryCode, Country, County, PostalCode,       │  │
│  │      │           State, City, District, Street, House            │  │
│  │      ├── Driving Scores                                          │  │
│  │      │   ├── 1–5 scale: Rating, Cornering, Acceleration,        │  │
│  │      │   │   Braking, Speeding, PhoneUsage, TimeOfDay            │  │
│  │      │   └── 0–100 scale: same categories + PhoneDistraction     │  │
│  │      ├── Eco-Scores                                              │  │
│  │      │   └── EcoScore, Fuel, Tyres, Brakes, Depreciation        │  │
│  │      ├── Speed & Phone Stats                                     │  │
│  │      │   ├── AverageSpeed, MaxSpeed                              │  │
│  │      │   ├── OverSpeedMileage, MidOverSpeed, HighOverSpeed       │  │
│  │      │   └── PhoneUsage, PhoneUsageKm, ...OverSpeed variants     │  │
│  │      ├── Time-of-Day Breakdown                                   │  │
│  │      │   └── RushHours, NightHours, DayHours                     │  │
│  │      └── Points [0..N]                                           │  │
│  │          ├── Identity: Id, Number                                │  │
│  │          ├── Position: Lat, Lon, Height, TotalMeters             │  │
│  │          ├── Motion: Speed, MidSpeed, Course, Yaw, Lateral       │  │
│  │          ├── Alerts: AlertType, AlertValue                       │  │
│  │          ├── Speed: SpeedType, SpeedLimit                        │  │
│  │          └── Flags: PhoneUsage, Cornering                        │  │
│  └──────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────┘

8. JSON Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://damoov.com/schemas/processed-trip-dataset.json",
  "title": "Processed Trip Dataset",
  "description": "API response containing a single processed vehicle trip with driving scores, eco-scores, and annotated route points.",
  "type": "object",
  "required": ["Result"],
  "properties": {
    "Result": {
      "type": "object",
      "required": ["Track", "Code"],
      "properties": {
        "Code": {
          "type": "integer",
          "description": "HTTP-style status code."
        },
        "Track": {
          "$ref": "#/$defs/Track"
        }
      }
    }
  },

  "$defs": {
    "Track": {
      "type": "object",
      "required": [
        "StartDate", "EndDate", "Status", "Distance", "Duration",
        "AccelerationCount", "DecelerationCount",
        "AddressStart", "AddressEnd",
        "Rating", "RatingCornering", "RatingAcceleration",
        "RatingBraking", "RatingSpeeding", "RatingPhoneUsage", "RatingTimeOfDay",
        "PhoneUsage", "MidOverSpeedMileage", "HighOverSpeedMileage",
        "OriginChanged", "TrackOriginCode", "DrivingTips",
        "Points", "ShareType", "CityStart", "CityFinish",
        "BeaconId", "VehicleToken",
        "RushHours", "NightHours", "DayHours",
        "AverageSpeed", "MaxSpeed", "OverSpeedMileage",
        "PhoneUsageOverSpeed", "PhoneUsageKm", "PhoneUsageOverSpeedKm",
        "Rating100", "RatingCornering100", "RatingAcceleration100",
        "RatingBraking100", "RatingSpeeding100", "RatingPhoneDistraction100",
        "RatingTimeOfDay100",
        "EcoScoreFuel", "EcoScoreTyres", "EcoScoreBrakes",
        "EcoScoreDepreciation", "EcoScore",
        "AddressStartParts", "AddressFinishParts", "Tags"
      ],
      "properties": {
        "StartDate": {
          "type": "string",
          "format": "date-time",
          "description": "Trip start timestamp (device local timezone)."
        },
        "EndDate": {
          "type": "string",
          "format": "date-time",
          "description": "Trip end timestamp (device local timezone)."
        },
        "Status": {
          "type": "string",
          "description": "Trip lifecycle status.",
          "enum": ["Active"]
        },
        "Distance": {
          "type": "number",
          "minimum": 0,
          "description": "Total trip distance (km)."
        },
        "Duration": {
          "type": "number",
          "minimum": 0,
          "description": "Total trip duration (minutes)."
        },
        "AccelerationCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of harsh acceleration events."
        },
        "DecelerationCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of harsh braking events."
        },
        "AddressStart": {
          "type": "string",
          "description": "Full formatted address at trip origin."
        },
        "AddressEnd": {
          "type": "string",
          "description": "Full formatted address at trip destination."
        },
        "Rating": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5,
          "description": "Overall driving score (1-5 scale)."
        },
        "RatingCornering": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5,
          "description": "Cornering score (1-5 scale)."
        },
        "RatingAcceleration": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5,
          "description": "Acceleration score (1-5 scale)."
        },
        "RatingBraking": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5,
          "description": "Braking score (1-5 scale)."
        },
        "RatingSpeeding": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5,
          "description": "Speed compliance score (1-5 scale)."
        },
        "RatingPhoneUsage": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5,
          "description": "Phone distraction score (1-5 scale)."
        },
        "RatingTimeOfDay": {
          "type": "integer",
          "minimum": 0,
          "maximum": 5,
          "description": "Time-of-day risk score (0 = not scored)."
        },
        "PhoneUsage": {
          "type": "number",
          "minimum": 0,
          "description": "Total phone usage duration (minutes)."
        },
        "MidOverSpeedMileage": {
          "type": "number",
          "minimum": 0,
          "description": "Distance at moderate overspeed (km)."
        },
        "HighOverSpeedMileage": {
          "type": "number",
          "minimum": 0,
          "description": "Distance at high overspeed (km)."
        },
        "OriginChanged": {
          "type": "boolean",
          "description": "Whether trip origin was reassigned."
        },
        "TrackOriginCode": {
          "type": "string",
          "description": "Origin classification (e.g. 'OriginalDriver')."
        },
        "DrivingTips": {
          "type": "string",
          "description": "Server-generated driving advice."
        },
        "Points": {
          "type": "array",
          "items": { "$ref": "#/$defs/Point" },
          "description": "Ordered array of annotated route points."
        },
        "ShareType": {
          "type": "string",
          "description": "Sharing status (e.g. 'NotShared')."
        },
        "CityStart": {
          "type": "string",
          "description": "City name at trip origin."
        },
        "CityFinish": {
          "type": "string",
          "description": "City name at trip destination."
        },
        "BeaconId": {
          "type": "integer",
          "description": "Bluetooth beacon identifier (0 = none)."
        },
        "VehicleToken": {
          "type": ["string", "null"],
          "description": "Linked vehicle token, if assigned."
        },
        "RushHours": {
          "type": "number",
          "minimum": 0,
          "description": "Driving time in rush-hour windows (minutes)."
        },
        "NightHours": {
          "type": "number",
          "minimum": 0,
          "description": "Driving time at night (minutes)."
        },
        "DayHours": {
          "type": "number",
          "minimum": 0,
          "description": "Driving time during daytime (minutes)."
        },
        "AverageSpeed": {
          "type": "number",
          "minimum": 0,
          "description": "Average speed (km/h)."
        },
        "MaxSpeed": {
          "type": "number",
          "minimum": 0,
          "description": "Maximum speed recorded (km/h)."
        },
        "OverSpeedMileage": {
          "type": "number",
          "minimum": 0,
          "description": "Total distance over speed limit (km)."
        },
        "PhoneUsageOverSpeed": {
          "type": "number",
          "minimum": 0,
          "description": "Phone usage time while over speed limit (minutes)."
        },
        "PhoneUsageKm": {
          "type": "number",
          "minimum": 0,
          "description": "Distance driven while using phone (km)."
        },
        "PhoneUsageOverSpeedKm": {
          "type": "number",
          "minimum": 0,
          "description": "Distance driven while using phone and over speed limit (km)."
        },
        "Rating100": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Overall driving score (0-100 scale)."
        },
        "RatingCornering100": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Cornering score (0-100 scale)."
        },
        "RatingAcceleration100": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Acceleration score (0-100 scale)."
        },
        "RatingBraking100": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Braking score (0-100 scale)."
        },
        "RatingSpeeding100": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Speed compliance score (0-100 scale)."
        },
        "RatingPhoneDistraction100": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Phone distraction score (0-100 scale)."
        },
        "RatingTimeOfDay100": {
          "type": ["integer", "null"],
          "minimum": 0,
          "maximum": 100,
          "description": "Time-of-day risk score (0-100). Null if not evaluated."
        },
        "EcoScoreFuel": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Fuel efficiency eco-score."
        },
        "EcoScoreTyres": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Tyre wear eco-score."
        },
        "EcoScoreBrakes": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Brake wear eco-score."
        },
        "EcoScoreDepreciation": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Vehicle depreciation eco-score."
        },
        "EcoScore": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Overall eco-driving score."
        },
        "AddressStartParts": {
          "$ref": "#/$defs/AddressParts"
        },
        "AddressFinishParts": {
          "$ref": "#/$defs/AddressParts"
        },
        "Tags": {
          "type": ["array", "null"],
          "items": { "type": "string" },
          "description": "User-defined tags."
        }
      }
    },

    "AddressParts": {
      "type": "object",
      "required": [
        "CountryCode", "Country", "County", "PostalCode",
        "State", "City", "District", "Street", "House"
      ],
      "properties": {
        "CountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-3 country code."
        },
        "Country": {
          "type": "string"
        },
        "County": {
          "type": "string"
        },
        "PostalCode": {
          "type": "string"
        },
        "State": {
          "type": "string"
        },
        "City": {
          "type": "string"
        },
        "District": {
          "type": "string"
        },
        "Street": {
          "type": "string"
        },
        "House": {
          "type": "string"
        }
      }
    },

    "Point": {
      "type": "object",
      "required": [
        "Id", "Number", "TotalMeters", "Speed", "MidSpeed",
        "PointDate", "Latitude", "Longitude", "Height", "Course",
        "Yaw", "Lateral", "AlertType", "AlertValue",
        "SpeedType", "SpeedLimit", "PhoneUsage", "Cornering"
      ],
      "properties": {
        "Id": {
          "type": "integer",
          "description": "Unique server-assigned point identifier."
        },
        "Number": {
          "type": "integer",
          "minimum": 0,
          "description": "Sequential index within the trip (0-based)."
        },
        "TotalMeters": {
          "type": "number",
          "minimum": 0,
          "description": "Cumulative distance from trip start (meters)."
        },
        "Speed": {
          "type": "number",
          "minimum": 0,
          "description": "Instantaneous GPS speed (km/h)."
        },
        "MidSpeed": {
          "type": "number",
          "minimum": 0,
          "description": "Smoothed speed (km/h). 0 = interpolated point."
        },
        "PointDate": {
          "type": "string",
          "format": "date-time",
          "description": "Sample timestamp (device local timezone)."
        },
        "Latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90,
          "description": "WGS-84 latitude (degrees)."
        },
        "Longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180,
          "description": "WGS-84 longitude (degrees)."
        },
        "Height": {
          "type": "number",
          "description": "Altitude (centimeters). 0 = interpolated point."
        },
        "Course": {
          "type": "number",
          "minimum": 0,
          "maximum": 360,
          "description": "Heading (degrees, clockwise from north). 0 on interpolated points."
        },
        "Yaw": {
          "type": "number",
          "description": "Yaw rate (deg/s)."
        },
        "Lateral": {
          "type": "number",
          "description": "Lateral (cornering) force magnitude."
        },
        "AlertType": {
          "type": "string",
          "enum": ["", "acc", "decel"],
          "description": "Driving event classification. Empty = no alert."
        },
        "AlertValue": {
          "type": "number",
          "minimum": 0,
          "description": "Alert event magnitude. 0 if no alert."
        },
        "SpeedType": {
          "type": "string",
          "enum": ["norm", "mid", "high"],
          "description": "Speed compliance: norm (within limit), mid (moderate overspeed), high (severe overspeed)."
        },
        "SpeedLimit": {
          "type": "integer",
          "minimum": 0,
          "description": "Posted speed limit at this location (km/h)."
        },
        "PhoneUsage": {
          "type": "boolean",
          "description": "Whether the driver was using the phone."
        },
        "Cornering": {
          "type": "boolean",
          "description": "Whether a cornering event was flagged."
        }
      }
    }
  }
}