Vehicles
Taxi & Private Hire › Products › Fleet › 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
| Method | Path | |
|---|---|---|
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.
config risk: low
Register a new vehicle and attach its documents (insurance, road-worthiness).
POST/client/{clientId}/vehiclePOST/client/{clientId}/vehicle/{vehicleId}/vehicledocument
Related
Fields
| Field | Type | Description |
|---|---|---|
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. |