{
  "latest_version": "1.26.0930.1",
  "releases": [
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0930.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0930.1.json"
    },
    {
      "version": "1.26.0924.1",
      "date": "2026-09-24",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0924.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0924.1.json"
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0923.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0923.1.json"
    },
    {
      "version": "1.26.0911.1",
      "date": "2026-09-11",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0911.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0911.1.json"
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0908.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0908.1.json"
    },
    {
      "version": "1.26.0824.1",
      "date": "2026-08-24",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0824.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0824.1.json"
    },
    {
      "version": "1.26.0818.1",
      "date": "2026-08-18",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0818.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0818.1.json"
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0805.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0805.1.json"
    },
    {
      "version": "1.26.0729.1",
      "date": "2026-07-29",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0729.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0729.1.json"
    },
    {
      "version": "1.26.0728.1",
      "date": "2026-07-28",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0728.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0728.1.json"
    },
    {
      "version": "1.26.0724.1",
      "date": "2026-07-24",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0724.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0724.1.json"
    },
    {
      "version": "1.26.0722.1",
      "date": "2026-07-22",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0722.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0722.1.json"
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0716.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0716.1.json"
    },
    {
      "version": "1.26.0622.1",
      "date": "2026-06-22",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0622.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0622.1.json"
    },
    {
      "version": "1.26.0618.1",
      "date": "2026-06-18",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0618.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0618.1.json"
    },
    {
      "version": "1.26.0616.1",
      "date": "2026-06-16",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0616.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0616.1.json"
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0612.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0612.1.json"
    },
    {
      "version": "1.26.0508.2",
      "date": "2026-05-08",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0508.2",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0508.2.json"
    },
    {
      "version": "1.26.0507.1",
      "date": "2026-05-07",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0507.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0507.1.json"
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "url": "https://developer.cartrack.com/docs/fleet-api-general/changelog/v1.26.0428.1",
      "json": "https://developer.cartrack.com/changelog/versions/1.26.0428.1.json"
    }
  ],
  "older_releases": "https://developer.cartrack.com/changelog/versions/index.json",
  "feeds": {
    "rss": "https://developer.cartrack.com/changelog/rss.xml",
    "atom": "https://developer.cartrack.com/changelog/atom.xml",
    "json": "https://developer.cartrack.com/changelog/feed.json",
    "areas": {
      "Vehicle Commands": "https://developer.cartrack.com/changelog/vehicle-commands.xml",
      "Geofences": "https://developer.cartrack.com/changelog/geofences.xml",
      "Delivery": "https://developer.cartrack.com/changelog/delivery.xml",
      "General": "https://developer.cartrack.com/changelog/general.xml",
      "Health": "https://developer.cartrack.com/changelog/health.xml",
      "Trips": "https://developer.cartrack.com/changelog/trips.xml",
      "Vehicles": "https://developer.cartrack.com/changelog/vehicles.xml",
      "Drivers": "https://developer.cartrack.com/changelog/drivers.xml",
      "Groups": "https://developer.cartrack.com/changelog/groups.xml",
      "Settings": "https://developer.cartrack.com/changelog/settings.xml",
      "Countries": "https://developer.cartrack.com/changelog/countries.xml",
      "Tachograph": "https://developer.cartrack.com/changelog/tachograph.xml",
      "Carpool": "https://developer.cartrack.com/changelog/carpool.xml",
      "Vision": "https://developer.cartrack.com/changelog/vision.xml",
      "Legacy API": "https://developer.cartrack.com/changelog/legacy-api.xml",
      "POIs": "https://developer.cartrack.com/changelog/pois.xml",
      "AEMP": "https://developer.cartrack.com/changelog/aemp.xml",
      "Tachographs": "https://developer.cartrack.com/changelog/tachographs.xml",
      "Leads": "https://developer.cartrack.com/changelog/leads.xml",
      "Events": "https://developer.cartrack.com/changelog/events.xml",
      "Sensors": "https://developer.cartrack.com/changelog/sensors.xml",
      "Alerts": "https://developer.cartrack.com/changelog/alerts.xml",
      "Generators": "https://developer.cartrack.com/changelog/generators.xml",
      "Geofence Visits": "https://developer.cartrack.com/changelog/geofence-visits.xml",
      "Vehicle Events": "https://developer.cartrack.com/changelog/vehicle-events.xml",
      "Helpdesk": "https://developer.cartrack.com/changelog/helpdesk.xml",
      "Topics": "https://developer.cartrack.com/changelog/topics.xml",
      "Vehicle (Electric)": "https://developer.cartrack.com/changelog/vehicle-electric.xml",
      "Generator": "https://developer.cartrack.com/changelog/generator.xml",
      "Delivery Jobs": "https://developer.cartrack.com/changelog/delivery-jobs.xml",
      "Driver Groups": "https://developer.cartrack.com/changelog/driver-groups.xml",
      "Vehicle Driver Linkage": "https://developer.cartrack.com/changelog/vehicle-driver-linkage.xml",
      "Performance": "https://developer.cartrack.com/changelog/performance.xml",
      "Delivery Drivers": "https://developer.cartrack.com/changelog/delivery-drivers.xml",
      "Base URL": "https://developer.cartrack.com/changelog/base-url.xml",
      "Delivery Documentation": "https://developer.cartrack.com/changelog/delivery-documentation.xml",
      "Status API": "https://developer.cartrack.com/changelog/status-api.xml",
      "Validation": "https://developer.cartrack.com/changelog/validation.xml",
      "Vehicle Status": "https://developer.cartrack.com/changelog/vehicle-status.xml",
      "Vehicle Audit": "https://developer.cartrack.com/changelog/vehicle-audit.xml",
      "Delivery Bulk Uploads": "https://developer.cartrack.com/changelog/delivery-bulk-uploads.xml",
      "Delivery Driver Status Processing": "https://developer.cartrack.com/changelog/delivery-driver-status-processing.xml",
      "Delivery Notifications": "https://developer.cartrack.com/changelog/delivery-notifications.xml",
      "Error Handling": "https://developer.cartrack.com/changelog/error-handling.xml",
      "Alerts API Sorting": "https://developer.cartrack.com/changelog/alerts-api-sorting.xml",
      "Alerts Access": "https://developer.cartrack.com/changelog/alerts-access.xml",
      "Delivery Driver Management": "https://developer.cartrack.com/changelog/delivery-driver-management.xml",
      "AEMP Documentation": "https://developer.cartrack.com/changelog/aemp-documentation.xml",
      "Date Validation": "https://developer.cartrack.com/changelog/date-validation.xml",
      "Delivery Equipment": "https://developer.cartrack.com/changelog/delivery-equipment.xml",
      "GET /vehicles": "https://developer.cartrack.com/changelog/get-vehicles.xml",
      "Delivery Driver": "https://developer.cartrack.com/changelog/delivery-driver.xml",
      "Authentication": "https://developer.cartrack.com/changelog/authentication.xml"
    }
  },
  "entries": [
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "feature",
      "section": "New Features",
      "area": "Vehicle Commands",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /vehicles/{registration}/start-inhibit",
        "GET /vehicles/start-inhibit/status"
      ],
      "breaking": false,
      "text": "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."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "feature",
      "section": "New Features",
      "area": "Geofences",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /geofences/bulk",
        "DELETE /geofences",
        "POST /geofences"
      ],
      "breaking": false,
      "text": "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."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "deprecation",
      "section": "Improvements",
      "area": "Vehicle Commands",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /vehicles/{registration}/immobilise",
        "GET /vehicles/immobilise/status"
      ],
      "breaking": false,
      "text": "`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."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /delivery/jobs/bulk-upload"
      ],
      "breaking": false,
      "text": "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."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "improvement",
      "section": "Improvements",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "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."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Health",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /health"
      ],
      "breaking": false,
      "text": "`GET /health` now accepts 2 requests every 20 seconds, up from 1 request every 5 minutes, so it can be polled by uptime monitors."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Trips",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /trips/{registration}",
        "GET /trips",
        "GET /trips/elapsed"
      ],
      "breaking": false,
      "text": "`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."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /fuel/level",
        "POST /fuel/consumed",
        "GET /vehicles/{registration}/events",
        "POST /vehicles/soc",
        "GET /vehicles/{registration}/soc",
        "POST /vehicles/range",
        "GET /vehicles/{registration}/range",
        "POST /vehicles/ev-consumption"
      ],
      "breaking": false,
      "text": "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."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /drivers",
        "PUT /drivers/{driver_id}",
        "POST /delivery/drivers",
        "PUT /delivery/drivers/{driver_id}"
      ],
      "breaking": false,
      "text": "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`."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "improvement",
      "section": "Improvements",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/{registration}/odometer"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /vehicles/{registration}/odometer` returned an HTTP 5xx error."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/{registration}/status",
        "GET /vehicles/{registration}/events",
        "GET /vehicles/{registration}/sensors/timeline"
      ],
      "breaking": false,
      "text": "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`."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Geofences",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /geofences",
        "PUT /geofences/{geofence_id}"
      ],
      "breaking": false,
      "text": "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`."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Groups",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /vehicles/groups/{group_id}",
        "DELETE /vehicles/groups/{group_id}",
        "PUT /vehicles/{registration}/groups/{group_id}",
        "DELETE /vehicles/{registration}/groups/{group_id}",
        "PUT /geofences/groups/{group_id}",
        "DELETE /geofences/groups/{group_id}",
        "PUT /geofences/{geofence_id}/groups/{group_id}",
        "DELETE /geofences/{geofence_id}/groups/{group_id}"
      ],
      "breaking": false,
      "text": "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`."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Settings",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /settings/vehicles/custom-fields/{customFieldId}",
        "DELETE /settings/vehicles/custom-fields/{customFieldId}",
        "PUT /settings/drivers/custom-fields/{customFieldId}",
        "DELETE /settings/drivers/custom-fields/{customFieldId}"
      ],
      "breaking": false,
      "text": "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`."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /drivers",
        "PUT /drivers/{driver_id}",
        "POST /delivery/drivers"
      ],
      "breaking": false,
      "text": "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."
    },
    {
      "version": "1.26.0930.1",
      "date": "2026-09-30",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /trips",
        "GET /trips/{registration}"
      ],
      "breaking": false,
      "text": "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`."
    },
    {
      "version": "1.26.0924.1",
      "date": "2026-09-24",
      "kind": "improvement",
      "section": "Improvements",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Repeated failed authentication attempts are now throttled. Once an account has failed authentication too many times from the same address, further requests from that address for that account receive HTTP `429 Too Many Requests` until the block expires, including requests that carry valid credentials. The response includes the `X-RateLimit-Retry-At` and `X-RateLimit-Retry-After-Seconds` headers, and `error.message` starts with `Too many failed authentication attempts`. Integrations must stop retrying on HTTP `401 Unauthorized` and correct the credentials instead: retrying a rejected password in a loop is what triggers the block. See the Rate Limiting guide for details."
    },
    {
      "version": "1.26.0924.1",
      "date": "2026-09-24",
      "kind": "improvement",
      "section": "Improvements",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Reduced per-request overhead on every endpoint by no longer creating server-side session state for stateless API calls."
    },
    {
      "version": "1.26.0924.1",
      "date": "2026-09-24",
      "kind": "improvement",
      "section": "Improvements",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0924.1",
      "date": "2026-09-24",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /delivery/jobs"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /delivery/jobs` intermittently returned an HTTP 5xx error."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "feature",
      "section": "New Features",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /settings/drivers/custom-fields",
        "POST /settings/drivers/custom-fields",
        "PUT /settings/drivers/custom-fields/{customFieldId}",
        "DELETE /settings/drivers/custom-fields/{customFieldId}",
        "PUT /drivers/{driver_id}/custom-fields"
      ],
      "breaking": false,
      "text": "Added typed driver custom field definitions and values: `GET`/`POST /settings/drivers/custom-fields` and `PUT`/`DELETE /settings/drivers/custom-fields/{customFieldId}` to manage field definitions, and `PUT /drivers/{driver_id}/custom-fields` to write values. Supports text, long description, number, date, time, date-time, single-select, and multi-select field types."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "feature",
      "section": "New Features",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /drivers",
        "GET /drivers/{driver_id}",
        "POST /drivers",
        "PUT /drivers/{driver_id}"
      ],
      "breaking": false,
      "text": "Added `custom_field_values` to `GET /drivers`, `GET /drivers/{driver_id}`, `POST /drivers` and `PUT /drivers/{driver_id}`. It returns every active driver custom field configured for your account together with this driver's value, and accepts values by definition id on create and update."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "deprecation",
      "section": "Improvements",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Deprecated the legacy positional `custom_fields` (`custom_1`..`custom_8`) on the driver endpoints. It is now translated from `custom_field_values`, and values sent in a request are still accepted for backward compatibility but no longer written. Use `custom_field_values` instead."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /drivers/{driver_id}",
        "PUT /drivers/{driver_id}",
        "POST /drivers"
      ],
      "breaking": false,
      "text": "Corrected the documented response shape of `GET`/`PUT /drivers/{driver_id}` and `POST /drivers`: the driver is returned inside a `data` object."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "improvement",
      "section": "Improvements",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Reduced the occasional very slow responses that could affect any endpoint regardless of the request made."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Trips",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /trips/{registration}"
      ],
      "breaking": false,
      "text": "`ev_battery` is now always present on `GET /trips/{registration}`, returned as `null` on trips that carry no battery data, so the response shape no longer varies from trip to trip."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Countries",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Corrected the Eswatini server URL in the API reference to `https://fleetapi-sz.cartrack.com/rest`, and removed the Zanzibar server entry."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "improvement",
      "section": "Improvements",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Tachograph",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /tachographs/driving-times"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /tachographs/driving-times` returned an empty result for a subuser with a valid driver permission grant."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/status"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /vehicles/status` omitted vehicles that had no position description. Those vehicles are now returned, with `position_description` as an empty string."
    },
    {
      "version": "1.26.0923.1",
      "date": "2026-09-23",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Trips",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /trips",
        "GET /trips/{registration}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /trips` and `GET /trips/{registration}` omitted trips that had no recorded start or end position."
    },
    {
      "version": "1.26.0911.1",
      "date": "2026-09-11",
      "kind": "improvement",
      "section": "Improvements",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "feature",
      "section": "New Features",
      "area": "Carpool",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /carpool/bookings",
        "GET /carpool/bookings/{booking_id}",
        "GET /carpool/vehicles",
        "GET /carpool/vehicles/categories",
        "GET /carpool/drivers"
      ],
      "breaking": false,
      "text": "Added read-only Carpool endpoints: `GET /carpool/bookings`, `GET /carpool/bookings/{booking_id}`, `GET /carpool/vehicles`, `GET /carpool/vehicles/categories`, `GET /carpool/drivers`."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "feature",
      "section": "New Features",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/{registration}/power-takeoff"
      ],
      "breaking": false,
      "text": "`GET /vehicles/{registration}/power-takeoff` now supports `filter[status]` and `sort_order`, with reliable ordering for latest-record retrieval."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "feature",
      "section": "New Features",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /settings/vehicles/custom-fields",
        "POST /settings/vehicles/custom-fields",
        "PUT /settings/vehicles/custom-fields/{customFieldId}",
        "DELETE /settings/vehicles/custom-fields/{customFieldId}",
        "GET /vehicles/{registration}/custom-fields",
        "PUT /vehicles/{registration}/custom-fields"
      ],
      "breaking": false,
      "text": "Added typed custom field definitions and values: `GET`/`POST /settings/vehicles/custom-fields` and `PUT`/`DELETE /settings/vehicles/custom-fields/{customFieldId}` to manage field definitions, and `GET`/`PUT /vehicles/{registration}/custom-fields` to read and write values. Supports text, long description, number, date, time, date-time, single-select, and multi-select field types."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "feature",
      "section": "New Features",
      "area": "Vision",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vision/status"
      ],
      "breaking": false,
      "text": "Added `GET /vision/status` to check a camera's online, standby, or offline status for camera-equipped vehicles on your account."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "feature",
      "section": "New Features",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /delivery/reports/drivers"
      ],
      "breaking": false,
      "text": "Added `planned_duration_time_minutes` to `GET /delivery/reports/drivers`, the dwell time planned for a driver's stops, to compare against the actual `duration_time_minutes`."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/{registration}/power-takeoff"
      ],
      "breaking": false,
      "text": "`GET /vehicles/{registration}/power-takeoff` request params renamed to `start_timestamp`/`end_timestamp` (legacy `start_date`/`end_date` still accepted)."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "deprecation",
      "section": "Improvements",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles",
        "PUT /vehicles/{registration}"
      ],
      "breaking": false,
      "text": "Deprecated the legacy positional `custom_fields` (`custom_1`..`custom_7`) on `GET /vehicles` and `PUT /vehicles/{registration}`. `PUT /vehicles/{registration}` no longer writes it (still accepted for backward compatibility, but ignored); use `custom_field_values` instead."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Documented `length`, `width`, `height` item attributes (centimeters) on Create/Update Delivery Job."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "deprecation",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Deprecated `weight_measure_id` and documented the `weight` unit (kilograms) on Delivery Job items."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "deprecation",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Deprecated unmaintained driver fields `login_type`, `remember_token`, and `is_online`."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "deprecation",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /delivery/jobs"
      ],
      "breaking": false,
      "text": "Deprecated `driver.token`; added the missing `driver` object to the `POST /delivery/jobs` response documentation."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Documented that `stops[].todos[].is_required` is always `true` and cannot be set by the client."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Documented job status `7` (Cancelled) on job list and filter responses."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "improvement",
      "section": "Improvements",
      "area": "General",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Fixed an issue where some endpoints could return another account's vehicle data due to missing account scoping."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Legacy API",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Fixed an issue where a legacy vehicle-lookup endpoint could return an HTTP 500 error for certain requests."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Legacy API",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Fixed an issue where certain legacy endpoints could return a malformed response instead of a standard error, or the wrong error code, for requests with invalid arguments."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "POIs",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /pois/{poi_id}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /pois/{poi_id}` returned an HTTP 500 error for certain requests."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /delivery/jobs/{jobId}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `PUT /delivery/jobs/{jobId}` returned an HTTP 500 error when a job item update only changed its `todos`."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /delivery/drivers/{driver_id}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `PUT /delivery/drivers/{driver_id}` allowed changing or removing an already-linked fleet driver, which could let an active driver stop counting toward seat usage."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Fixed an issue where fleet seat counts could include drivers not linked to fleet."
    },
    {
      "version": "1.26.0908.1",
      "date": "2026-09-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /delivery/reports/drivers"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /delivery/reports/drivers` could report an incorrect planned distance and travel time, and a `duration_time_minutes` of `0` for a full day of stops."
    },
    {
      "version": "1.26.0824.1",
      "date": "2026-08-24",
      "kind": "feature",
      "section": "New Features",
      "area": "Geofences",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /geofences",
        "GET /geofences/{geofence_id}",
        "GET /geofences/visits"
      ],
      "breaking": false,
      "text": "`GET /geofences`, `GET /geofences/{geofence_id}` and `GET /geofences/visits` now expose `is_toll`. `GET /geofences` and `GET /geofences/visits` also accept `filter[is_toll]` to restrict results to toll (or non-toll) geofences."
    },
    {
      "version": "1.26.0824.1",
      "date": "2026-08-24",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /delivery/jobs"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /delivery/jobs` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0824.1",
      "date": "2026-08-24",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Trips",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /rest/trips"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /rest/trips` returned incorrect pagination metadata on page 2 and later."
    },
    {
      "version": "1.26.0818.1",
      "date": "2026-08-18",
      "kind": "feature",
      "section": "New Features",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /delivery/drivers",
        "PUT /delivery/drivers/{driver_id}"
      ],
      "breaking": false,
      "text": "`POST /delivery/drivers` and `PUT /delivery/drivers/{driver_id}` now accept `fleet_driver_id`, allowing a delivery driver to be linked to an existing fleet driver instead of always creating a new one."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "feature",
      "section": "New Features",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/events",
        "GET /vehicles/events/types"
      ],
      "breaking": false,
      "text": "`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."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "feature",
      "section": "New Features",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/{registration}/events"
      ],
      "breaking": false,
      "text": "`GET /vehicles/{registration}/events` now accepts `filter[terminal_event_type_id]` and `filter[event_id]`."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "improvement",
      "section": "Improvements",
      "area": "AEMP",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "`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."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "improvement",
      "section": "Improvements",
      "area": "AEMP",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "`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."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /delivery/jobs",
        "PUT /delivery/jobs/{job_id}",
        "POST /delivery/jobs/bulk-upload"
      ],
      "breaking": false,
      "text": "`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."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /delivery/jobs",
        "PUT /delivery/jobs/{job_id}",
        "POST /delivery/jobs/bulk-upload"
      ],
      "breaking": false,
      "text": "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."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Tachographs",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /tachographs"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /tachographs` returned an empty list for some accounts."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Tachographs",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /tachographs/download"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /tachographs/download` could return a truncated or malformed attachment filename."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /delivery/jobs",
        "PUT /delivery/jobs/{job_id}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /delivery/jobs` and `PUT /delivery/jobs/{job_id}` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0805.1",
      "date": "2026-08-05",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "AEMP",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /aemp/iso15143-3/beta/equipment/{id}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /aemp/iso15143-3/beta/equipment/{id}` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0729.1",
      "date": "2026-07-29",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Leads",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /leads"
      ],
      "breaking": false,
      "text": "The lead policy created by `POST /leads` is now linked to the lead that owns the vehicles' `lead_product_id` values. Requests mixing lead products from different leads are rejected with a validation error."
    },
    {
      "version": "1.26.0729.1",
      "date": "2026-07-29",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Leads",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /leads"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /leads` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0728.1",
      "date": "2026-07-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vision",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /vision/videos/requests"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /vision/videos/requests` could return an incorrect property name for the video end timestamp."
    },
    {
      "version": "1.26.0724.1",
      "date": "2026-07-24",
      "kind": "feature",
      "section": "New Features",
      "area": "Vision",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /vision/livestream/{registration}"
      ],
      "breaking": false,
      "text": "`POST /vision/livestream/{registration}` now returns an `expires_at` timestamp for each camera, so you know when to request a fresh livestream URL."
    },
    {
      "version": "1.26.0724.1",
      "date": "2026-07-24",
      "kind": "feature",
      "section": "New Features",
      "area": "Events",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /events"
      ],
      "breaking": false,
      "text": "`GET /events` now reports additional event types, including camera detections (`BLIND_SPOT_LEFT`, `BLIND_SPOT_RIGHT`, `SUNGLASSES_DETECTED`, `NO_DRIVER_DETECTED`) and telematics events (`CRASH`, `POWER_EVENT`, `DISARM`, `GPS_JAMMING_START`/`_END`, `GSM_JAMMING_START`/`_END`, `HORN_ON`/`_OFF`, `EXCESS_IDLE`, `DRIVER_ID_TAG`). See the Vehicle Events Services page for the full list."
    },
    {
      "version": "1.26.0724.1",
      "date": "2026-07-24",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Vision",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vision/videos/requests"
      ],
      "breaking": false,
      "text": "Download URLs returned by `GET /vision/videos/requests` are now durable links you can fetch and store. Treat all Vision video URLs as opaque and do not depend on their host or path."
    },
    {
      "version": "1.26.0724.1",
      "date": "2026-07-24",
      "kind": "improvement",
      "section": "Improvements",
      "area": null,
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0722.1",
      "date": "2026-07-22",
      "kind": "improvement",
      "section": "Improvements",
      "area": null,
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "feature",
      "section": "New Features",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /drivers",
        "GET /drivers/{driver_id}"
      ],
      "breaking": false,
      "text": "`GET /drivers` and `GET /drivers/{driver_id}` now return the driver's tachograph `card_id`."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /delivery/customers"
      ],
      "breaking": false,
      "text": "`POST /delivery/customers` now populates the customer address from the supplied coordinates when the address fields are omitted."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "deprecation",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /delivery/jobs/{job_id}"
      ],
      "breaking": false,
      "text": "Deprecated legacy device fields in the `GET /delivery/jobs/{job_id}` response."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Vision",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vision/livestream/{registration}"
      ],
      "breaking": false,
      "text": "`GET /vision/livestream/{registration}` is now rate limited to 10 requests per minute per vehicle."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Documented the `409 Conflict` response returned by the vehicle command endpoints."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "improvement",
      "section": "Improvements",
      "area": null,
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /vehicles` could return duplicate vehicles and an inflated vehicle count."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/{registration}/events/idling"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /vehicles/{registration}/events/idling` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vision",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vision/livestream/{registration}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /vision/livestream/{registration}` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0716.1",
      "date": "2026-07-16",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Trips",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /trips"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /trips` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0622.1",
      "date": "2026-06-22",
      "kind": "improvement",
      "section": "Improvements",
      "area": null,
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0622.1",
      "date": "2026-06-22",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/immobilise/status"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /vehicles/immobilise/status` returned an incorrect `immobilise_status` value."
    },
    {
      "version": "1.26.0618.1",
      "date": "2026-06-18",
      "kind": "improvement",
      "section": "Improvements",
      "area": null,
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0616.1",
      "date": "2026-06-16",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /drivers",
        "PUT /drivers/{driver_id}"
      ],
      "breaking": false,
      "text": "Empty string `last_name` is now accepted on `POST /drivers` and `PUT /drivers/{driver_id}` and treated as if the field had been omitted."
    },
    {
      "version": "1.26.0616.1",
      "date": "2026-06-16",
      "kind": "improvement",
      "section": "Improvements",
      "area": null,
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Delivery job stop output now includes a `driver_ack_at` field with the timestamp at which the driver acknowledged the stop."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /drivers"
      ],
      "breaking": false,
      "text": "`last_name` is now optional in `POST /drivers`."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Vision",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /vision/livestream/{registration}"
      ],
      "breaking": false,
      "text": "The `POST /vision/livestream/{registration}` response now includes an `is_hls` field indicating whether the livestream URL is in HLS format."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "improvement",
      "section": "Improvements",
      "area": null,
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /delivery/jobs",
        "PUT /delivery/jobs/{jobId}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /delivery/jobs` and `PUT /delivery/jobs/{jobId}` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /drivers",
        "PUT /drivers/{driver_id}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /drivers` and `PUT /drivers/{driver_id}` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Geofences",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /geofences"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /geofences` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "POIs",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /pois"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /pois` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/soc",
        "GET /vehicles/{registration}/soc"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /vehicles/soc` and `GET /vehicles/{registration}/soc` returned an incorrect state of charge value for some vehicles."
    },
    {
      "version": "1.26.0612.1",
      "date": "2026-06-12",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vision",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /vision/livestream/{registration}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /vision/livestream/{registration}` returned an HTTP 503 error while the camera was online."
    },
    {
      "version": "1.26.0508.2",
      "date": "2026-05-08",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Sensors",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /alerts/sensors"
      ],
      "breaking": false,
      "text": "Improved `POST /alerts/sensors` documentation and validation: `contact_type` is now listed as required, `registrations` is capped at 50 items, and descriptions for `sensor_type`, `geofence_id`, and `geofence_group_id` have been enhanced."
    },
    {
      "version": "1.26.0508.2",
      "date": "2026-05-08",
      "kind": "improvement",
      "section": "Improvements",
      "area": null,
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0508.2",
      "date": "2026-05-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /delivery/jobs",
        "PUT /delivery/jobs/{jobId}",
        "PUT /delivery/jobs/assign/{driverId}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /delivery/jobs`, `PUT /delivery/jobs/{jobId}`, and `PUT /delivery/jobs/assign/{driverId}` accepted deactivated drivers instead of returning an HTTP 422 error."
    },
    {
      "version": "1.26.0508.2",
      "date": "2026-05-08",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/{registration}/events"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /vehicles/{registration}/events` returned an HTTP 500 error when `start_timestamp` and `end_timestamp` were equal."
    },
    {
      "version": "1.26.0507.1",
      "date": "2026-05-07",
      "kind": "feature",
      "section": "New Features",
      "area": "Countries",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Added support for Saudi Arabia (KSA)."
    },
    {
      "version": "1.26.0507.1",
      "date": "2026-05-07",
      "kind": "improvement",
      "section": "Improvements",
      "area": null,
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Various internal improvements and under-the-hood tweaks."
    },
    {
      "version": "1.26.0507.1",
      "date": "2026-05-07",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /delivery/jobs/assign/{driverId}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `PUT /delivery/jobs/assign/{driverId}` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0507.1",
      "date": "2026-05-07",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "DELETE /delivery/jobs/{jobId}",
        "PUT /delivery/jobs/{jobId}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `DELETE /delivery/jobs/{jobId}` and `PUT /delivery/jobs/{jobId}` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "feature",
      "section": "New Features",
      "area": "Alerts",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /alerts/sensors"
      ],
      "breaking": false,
      "text": "Introduced new endpoint `POST /alerts/sensors` to create sensor-based alerts for vehicle sensor events, supporting PTO (Power Take-Off) and PANIC sensor types with configurable trigger conditions."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Generators",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /generators/activity"
      ],
      "breaking": false,
      "text": "Extended `GET /generators/activity` response to include `registration` and `chassis_number` fields for easier vehicle identification."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Customer information updates now automatically propagate to all related delivery jobs, ensuring data consistency across the delivery workflow."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "improvement",
      "section": "Improvements",
      "area": "Geofence Visits",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /geofences/visits"
      ],
      "breaking": false,
      "text": "Added sorting support to `GET /geofences/visits` for an improved user experience when browsing visit records."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Geofences",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /geofences/{id}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `PUT /geofences/{id}` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Geofences",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /geofences"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /geofences` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Trips",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /trips/{registration}"
      ],
      "breaking": false,
      "text": "Fixed an issue where `PUT /trips/{registration}` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicle Events",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /vehicles/events"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /vehicles/events` could return blank responses under certain conditions."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Drivers",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Fixed an issue where creating drivers for subusers could fail silently due to conflicting permission records."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Delivery",
      "contract": [
        "v1"
      ],
      "endpoints": [],
      "breaking": false,
      "text": "Fixed an issue where push notifications were not delivered to drivers upon job creation."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Leads",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /leads"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /leads` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Helpdesk",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "POST /helpdesk/note"
      ],
      "breaking": false,
      "text": "Fixed an issue where `POST /helpdesk/note` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Topics",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "GET /topics/vehicles/temperature"
      ],
      "breaking": false,
      "text": "Fixed an issue where `GET /topics/vehicles/temperature` returned an HTTP 500 error."
    },
    {
      "version": "1.26.0428.1",
      "date": "2026-04-28",
      "kind": "fix",
      "section": "Bug Fixes",
      "area": "Vehicles",
      "contract": [
        "v1"
      ],
      "endpoints": [
        "PUT /vehicles/risk"
      ],
      "breaking": false,
      "text": "Fixed an issue where `PUT /vehicles/risk` returned an HTTP 500 error."
    }
  ]
}