[Vehicles]:GET /vehicles/events now accepts filter[terminal_event_type_id], filter[event_id], filter[vehicle_id], filter[registration] and filter[chassis_number], so a result set can be narrowed to a single event type, a single event or a single vehicle. See GET /vehicles/events/types for the list of available event type IDs.
[Vehicles]:GET /vehicles/{registration}/events now accepts filter[terminal_event_type_id] and filter[event_id].
[AEMP]:CumulativeOperatingHours.Hour now reports the vehicle's own hour-meter reading when the vehicle sends one, and falls back to the Cartrack-accumulated operating hours since fitment when it does not. CumulativeOperatingHours.DateTime reflects the reading that is returned. Because an hour-meter reading covers the whole life of the vehicle, including time before it was fitted, the value can be noticeably higher than before for the same vehicle.
[AEMP]:CumulativeIdleHours is always Cartrack-accumulated since fitment. When CumulativeOperatingHours comes from the vehicle's hour meter, subtracting idle hours from operating hours no longer approximates productive hours.
[Delivery]:allowed_to_start_at and send_to_driver_at now reject an empty string with a validation error on POST /delivery/jobs, PUT /delivery/jobs/{job_id} and POST /delivery/jobs/bulk-upload. Omit the field or send null to leave it unset.
[Delivery]: A stop that cannot be resolved to a location is now rejected with a validation error on POST /delivery/jobs, PUT /delivery/jobs/{job_id} and POST /delivery/jobs/bulk-upload, instead of being resolved to an approximate one. Send valid coordinates, or an address complete enough to be geocoded.