Fleets
Taxi & Private Hire › Products › Fleet › Fleets
Generally available
A Fleet is an organisational grouping of Drivers + Vehicles run by a single sub-operator (commonly a franchise, a department, or a brand sub-operation). Each Fleet has its own queues, its own default operating-mode FleetGroup, and can be scoped to specific Brands. Tenants with multiple distinct operations (city, suburbs, airport-shuttle line) use Fleets to keep dispatch + reporting clean.
Example request
POST /client/{clientId}/fleet
{
"name": "<string>",
"ref": "<string>",
"operatingMode": "DRIVER_PICKS_VEHICLE",
"brands": [
{
"id": "<id>"
}
],
"queues": [
{
"id": "<id>"
}
],
"group": {
"id": "<id>"
},
"homeDrivers": [
{
"id": "<id>"
}
],
"homeVehicles": [
{
"id": "<id>"
}
],
"primaryGroup": "<string>",
"driverNote": "<string>",
"managementNote": "<string>"
}
Example shape, derived from the Fleet fields — indicative,
not the authoritative schema (that arrives with the API reference).
Endpoints
| Method | Path | |
|---|---|---|
POST | /client/{clientId}/fleet/{fleetId}/brand/{brandId} | |
POST | /client/{clientId}/fleet/{fleetId}/queue/{queueId} | |
DELETE | /client/{clientId}/fleet/{fleetId}/brand/{brandId} | |
POST | /client/{clientId}/fleet · primary | |
DELETE | /client/{clientId}/fleet/{fleetId}/queue/{queueId} | |
GET | /client/{clientId}/fleet/{fleetId} | |
POST | /client/{clientId}/fleet/{fleetId} | |
POST | /client/{clientId}/fleetgroup | |
GET | /client/{clientId}/fleetgroup/{fleetGroupId} | |
POST | /client/{clientId}/fleetgroup/{fleetGroupId} |
Full request/response schemas and an interactive explorer will live in the API reference (coming soon).
Related
Fields
| Field | Type | Description |
|---|---|---|
name | string | Display name for the fleet ("Airport Shuttle", "City Centre", "Suburban North"). Surfaced on dispatch board, driver app, and reporting filters. |
ref | string | Reference code for the fleet. Used by Staff and integrations to identify the fleet without needing the internal ID. |
operatingMode | OperatingMode · DRIVER_PICKS_VEHICLE | DRIVER_HAS_OWN_VEHICLE | How drivers and vehicles are paired in this fleet. Vehicle-centric fleets (US-style) have drivers sign into a chosen vehicle. Driver-centric fleets (owner-operator) have each driver pre-linked to their own vehicle. |
kind | FleetKind · NORMAL | BROKERED_POOL | NORMAL = operator-created. BROKERED_POOL = system-seeded per-client fallback fleet for brokered/agency drivers. Immutable post-creation; no operator UI for editing. |
brands | Collection | |
queues | Collection | Dispatch queues this fleet serves. Trips originating from this fleet are dispatched into these queues; drivers signed in under the fleet pull from them. |
group | FleetGroup | Operational pool. NULL = isolated (this fleet only sees its own data). Set a shared group across multiple fleets to pool busy-area metrics, capacity learning, and dispatch eligibility. |
homeDrivers | Collection | Drivers whose home fleet is this fleet (read-only roster). Owned on the Driver side. |
homeVehicles | Collection | Vehicles whose home fleet is this fleet (read-only asset register). Owned on the Vehicle side. |
primaryGroup | string | Primary Group name attached to this fleet — convenience field for the most-used bulk group when filtering / reporting. |
driverNote | string | Notes shared with the Driver and Operator, to be treated as publicly visible and not to include personal information |
managementNote | string | Internal notes for management use only. |
clientId | bigint | Tenant scope. Every tenant-aware entity carries this; `ClientFilter` enforces row-level isolation on read; the multi-tenancy routing layer (`/client/{clientId}`) sets it at create time. Surfaced only under `admin` / `tripLog` groups — never to end users. |
internalKey | string | Optional client-supplied external reference / idempotency key. When present, lets external systems correlate platform-side records back to their own source-of-truth ids. Not persisted to a column — populated by the request handler when the caller sets it. |
__objectType | string | Discriminator string (entity class short-name) emitted alongside the id in serialized output. Resolved at read time by `getObjectType()`; lets the FE dispatch entity-specific rendering without inspecting the URL. |
id | bigint | Snowflake-style primary key (unsigned BIGINT). Generated by `IdFactory` at create time; surfaced to the FE / API as a `G`-prefixed string and stripped back to plain bigint server-side before Doctrine lookup. |
createdDate | integer | Unix timestamp the row was first persisted. Set in the entity's PrePersist hook; never rewritten on subsequent updates. |
updatedDate | integer | Unix timestamp the row was last touched. Bumped on every commit that hits the Doctrine UoW for this entity; drives FE invalidation + the listing change cursor. |
passiveUpdatedDate | int | Read-through alias for `updatedDate` exposed under different serializer groups. Lets the FE distinguish "real edit" from "background touch" projections without changing the underlying column. |
listingUpdatedDate | int | Listing-projection timestamp surfaced only under the `listMode` group. Driven by `TripCache` and other listing-shape refreshers separately from `updatedDate` so a listing rebuild doesn't trigger detail-page invalidation. |