Skip to main content

Version 1.26.0930.1

New Features​

  • [Vehicle Commands]: Added PUT /vehicles/{registration}/start-inhibit and GET /vehicles/start-inhibit/status. Send start_inhibit: true to immobilise a vehicle so it cannot be powered on, and false to release it; the status endpoint reports the same field with the same meaning. start_inhibit: null means the state cannot be established and is not the same as false. A vehicle is listed only when it has an active contract and a terminal fitment that supports the command, a subuser sees only the vehicles granted to it, and limit is capped at 100 per page.
  • [Geofences]: Added POST /geofences/bulk and DELETE /geofences. POST /geofences/bulk creates up to 100 geofences in a single request; each item accepts the same parameters as POST /geofences and is validated and created independently, so one invalid item does not reject the rest, and the response returns the IDs of the geofences created. DELETE /geofences deletes up to 1000 geofences by ID in a single request and reports the outcome of each ID independently. Both endpoints accept up to 10 requests per minute.

Improvements​

  • [Vehicle Commands]: PUT /vehicles/{registration}/immobilise and GET /vehicles/immobilise/status are no longer listed in the API reference. Both keep serving their existing callers; new integrations should use the start-inhibit endpoints above.
  • [Delivery]: Documented how subuser credentials behave on the Delivery endpoints. Subuser credentials cannot write to Delivery: every POST, PUT and DELETE under /delivery/ returns HTTP 403 Forbidden. Most Delivery reads accept them and return the whole account's data with no filtering by subuser, while a few require the main account's api_key and also return 403 Forbidden. To act on behalf of a subuser, authenticate with the main account's api_key and set subuser_id, as a request body field on the delivery jobs and drivers create and update endpoints, and as a column in the uploaded file on POST /delivery/jobs/bulk-upload. The 403 Forbidden responses on the Delivery endpoints now explain the subuser case instead of carrying the generic message.
  • [General]: HTTP 500 Internal Server Error responses now include error.reason, a machine-readable value that identifies the class of failure: db_statement_timeout, db_unavailable, db_resource_exhausted, db_error, cache_unavailable, dependency_unavailable or internal_error. The status code remains 500 for every class.
  • [Health]: GET /health now accepts 2 requests every 20 seconds, up from 1 request every 5 minutes, so it can be polled by uptime monitors.
  • [Trips]: GET /trips/{registration} now accepts a page of 1 or more and a limit from 1 to 1000, the same range as GET /trips and GET /trips/elapsed. A limit above 1000, or a page or limit of 0, now returns HTTP 422 Unprocessable Entity. Use page to retrieve more than 1000 trips.
  • [Vehicles]: On POST /fuel/level, POST /fuel/consumed, GET /vehicles/{registration}/events, POST /vehicles/soc, GET /vehicles/{registration}/soc, POST /vehicles/range, GET /vehicles/{registration}/range and POST /vehicles/ev-consumption, a page or limit of 0 now returns HTTP 422 Unprocessable Entity, and POST /fuel/level now enforces its published maximum limit of 1000.
  • [Drivers]: The phone code and phone number of a driver may total at most 20 characters on POST /drivers, PUT /drivers/{driver_id}, POST /delivery/drivers and PUT /delivery/drivers/{driver_id}. A longer value returns HTTP 422 Unprocessable Entity.
  • [General]: Various internal improvements and under-the-hood tweaks.

Bug Fixes​

  • [Vehicles]: Fixed an issue where GET /vehicles/{registration}/odometer returned an HTTP 5xx error.
  • [Vehicles]: Fixed an issue where GET /vehicles/{registration}/status, GET /vehicles/{registration}/events and GET /vehicles/{registration}/sensors/timeline returned HTTP 200 instead of HTTP 404 Not Found for the registration 0.
  • [Geofences]: Fixed an issue where POST /geofences and PUT /geofences/{geofence_id} returned an HTTP 5xx error, or HTTP 200 without saving the geometry, for a malformed polygon. Both now return HTTP 422 Unprocessable Entity.
  • [Groups]: Fixed an issue where PUT and DELETE on /vehicles/groups/{group_id}, /vehicles/{registration}/groups/{group_id}, /geofences/groups/{group_id} and /geofences/{geofence_id}/groups/{group_id} returned an HTTP 5xx error when group_id was not a number. They now return HTTP 422 Unprocessable Entity.
  • [Settings]: Fixed an issue where PUT and DELETE on /settings/vehicles/custom-fields/{customFieldId} and /settings/drivers/custom-fields/{customFieldId} returned an HTTP 5xx error when the ID was not a number. They now return HTTP 422 Unprocessable Entity.
  • [Drivers]: Fixed an issue where POST /drivers, PUT /drivers/{driver_id} and POST /delivery/drivers returned an HTTP 5xx error when the phone code and phone number together exceeded 20 characters.
  • [General]: Fixed an issue where paginated endpoints, including GET /trips and GET /trips/{registration}, returned an HTTP 5xx error for a negative page or limit, or for a very large page.