Skip to content

Fleets

Taxi & Private HireProductsFleet › 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

MethodPath
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).

Fields

FieldTypeDescription
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.