Skip to content

Vehicles

Taxi & Private HireProductsFleet › Vehicles

Generally available

A Vehicle is the physical asset operated by a Driver. Carries make/model/year, registration plate, engine type (PETROL / DIESEL / EV / HYBRID), vehicle type binding (which determines passenger and luggage capacity), capability set, document attachments (insurance, NCT/MOT, tax disc), and ownership reference. The active Vehicle on a Transporter session determines what trips can be served.

Example request

POST /client/{clientId}/vehicle

{
  "make": "<string>",
  "model": "<string>",
  "colour": "<string>",
  "personCapacity": 0,
  "luggageCapacity": 0,
  "engineType": "PETROL",
  "status": "AVAILABLE",
  "transporter": {
    "id": "<id>"
  },
  "vehicleOwner": {
    "id": "<id>"
  },
  "homeFleet": {
    "id": "<id>"
  },
  "permittedFleets": [
    {
      "id": "<id>"
    }
  ],
  "ownerDriver": {
    "id": "<id>"
  },
  "eligibleDrivers": [
    {
      "id": "<id>"
    }
  ],
  "eligibleAllDrivers": false,
  "clientCapabilities": [
    {
      "id": "<id>"
    }
  ],
  "primaryGroup": "<string>",
  "ref": "<string>",
  "vehicleRegistrationPlate": "<string>",
  "vehicleInsuranceNumber": "<string>",
  "vehicleInsuranceExpiryDate": 0,
  "vehicleRoadWorthinessNumber": "<string>",
  "vehicleRoadWorthinessExpiryDate": 0,
  "transportLicence": "<string>",
  "transportLicenceExpiryDate": 0,
  "photo": {
    "id": "<id>"
  },
  "vehicleDocuments": [
    {
      "id": "<id>"
    }
  ],
  "driverNote": "<string>",
  "managementNote": "<string>",
  "groups": [
    {
      "id": "<id>"
    }
  ]
}

Example shape, derived from the Vehicle fields — indicative, not the authoritative schema (that arrives with the API reference).

Endpoints

MethodPath
POST /client/{clientId}/vehicle/{vehicleId}/clientcapability/{clientCapabilityId}
POST /client/{clientId}/vehicle · primary
DELETE /client/{clientId}/vehicle/{vehicleId}/clientcapability/{clientCapabilityId}
GET /client/{clientId}/vehicle/{vehicleId}
POST /client/{clientId}/vehicle/{vehicleId}
POST /client/{clientId}/vehicle/{vehicleId}/driver/{driverId}
POST /client/{clientId}/vehicle/{vehicleId}/fleet/{fleetId}
DELETE /client/{clientId}/vehicle/{vehicleId}/driver/{driverId}
DELETE /client/{clientId}/vehicle/{vehicleId}/fleet/{fleetId}

Full request/response schemas and an interactive explorer will live in the API reference (coming soon).

Use cases

Operator flows that exercise this feature.

Register a vehicle

config risk: low

Register a new vehicle and attach its documents (insurance, road-worthiness).

  1. POST /client/{clientId}/vehicle
  2. POST /client/{clientId}/vehicle/{vehicleId}/vehicledocument

Fields

FieldTypeDescription
make string Vehicle manufacturer (Toyota, Mercedes, etc.). Combined with model + colour on the customer-receipt + driver-app vehicle card.
model string Model name (Prius, S-Class, etc.). See `make` for context.
colour string Body colour — surfaced on the customer-app vehicle card so passengers can identify the car at pickup.
personCapacity integer Maximum passenger seats. Feeds the capacity-constraint check at booking + the our optimisation engine capacity dimension during optimisation. Default 4.
luggageCapacity integer Maximum luggage items (typically suitcases / large bags). Separate constraint from personCapacity — airport trips often hit this first.
engineType VehicleEngineType · PETROL | DIESEL | ELECTRIC | HYBRID | HYDROGEN Engine class: PETROL / DIESEL / HYBRID / EV / PHEV. Drives carbon-offset reporting and any tariff modifiers tied to low-emission vehicles.
status VehicleStatus · AVAILABLE | OUT_OF_SERVICE Whether this vehicle is available to be put on shift, or temporarily off the road.
transporter Transporter Active Transporter session — the Driver + Vehicle + Fleet triple currently on-shift. Inverse-side relation: a Vehicle may have zero (off-shift) or one (on-shift) Transporter at a time.
vehicleOwner VehicleOwner Legal owner of the vehicle — relevant when vehicles are rented, leased, or owned by sub-contractors rather than the tenant itself. Used for payout splits and compliance reporting.
homeFleet Fleet The fleet this vehicle belongs to in the asset register.
permittedFleets Collection Cross-fleet loans — additional Fleets this Vehicle may be operated under. Disjoint from homeFleet.
ownerDriver Driver The driver who owns this vehicle (owner-operator fleets only).
eligibleDrivers Collection Mode A per-Vehicle Driver whitelist. Only consulted when eligibleAllDrivers=false. Used for WAV-trained-only / luxury-only restrictions.
eligibleAllDrivers boolean Mode A: TRUE = any fleet-member Driver may operate this Vehicle (default). FALSE = only Drivers in eligibleDrivers. Unused in Mode B.
clientCapabilities Collection Vehicle-borne capabilities — physical features the car offers (wheelchair lift, child seat, pet-friendly, etc.). Combined with the active Driver's capabilities to form the Transporter capability bitmask used at dispatch.
primaryGroup string Free-text ACL grouping label — scopes which operators can see this vehicle.
ref string Tenant-defined fleet number / call sign. The primary vehicle handle in operator radio + dispatch UI.
vehicleRegistrationPlate string Government registration plate — the legal vehicle identifier shown to passengers at pickup. Required.
vehicleInsuranceNumber string
vehicleInsuranceExpiryDate int
vehicleRoadWorthinessNumber string
vehicleRoadWorthinessExpiryDate int
transportLicence string
transportLicenceExpiryDate int
photo Document
vehicleDocuments Collection
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.
groups Collection
deletedAt integer
deletedBy bigint
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.