Skip to content

Vehicle Types

Taxi & Private HireProductsFleet › Vehicle Types

Generally available

Operator-defined vehicle classifications (Standard, Executive, MPV, Wheelchair-Accessible, etc.) — they define the passenger-capacity range, baseline capability set, and priority ordering for dispatch resolution. Each Vehicle binds to a VehicleType; trips can require a specific VehicleType (or any with required capabilities) and dispatch matches accordingly.

Example request

POST /client/{clientId}/vehicletype

{
  "ref": "<string>",
  "name": "<string>",
  "clientCapabilities": [
    {
      "id": "<id>"
    }
  ],
  "uniqueSystemRef": "<string>",
  "minPassengerCapacity": 0,
  "maxPassengerCapacity": 0,
  "priority": 0
}

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

Endpoints

MethodPath
DELETE /client/{clientId}/vehicletype/{vehicleTypeId}/clientcapability/{clientCapabilityId}
POST /client/{clientId}/vehicletype/{vehicleTypeId}/clientcapability/{clientCapabilityId}
POST /client/{clientId}/vehicletype · primary
GET /client/{clientId}/vehicletype/{vehicleTypeId}
POST /client/{clientId}/vehicletype/{vehicleTypeId}

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

Use cases

Operator flows that exercise this feature.

Create a vehicle type

config risk: low

Define a vehicle class (capacity range + required capabilities) used for pricing and matching.

  1. POST /client/{clientId}/vehicletype
  2. POST /client/{clientId}/vehicletype/{vehicleTypeId}/clientcapability/{clientCapabilityId}

Fields

FieldTypeDescription
ref string Display reference for the vehicle type ("Saloon", "Estate", "MPV", "Wheelchair"). Surfaced everywhere the operator picks a vehicle category.
name string Longer human-readable label for the type. Optional — falls back to `ref` when unset.
clientCapabilities Collection Baseline capabilities granted by this type to every Vehicle bound to it (e.g. "Wheelchair Lift", "Booster Seat"). Capability resolution unions these with per-Vehicle capabilities.
uniqueSystemRef string Stable system identifier for cross-tenant equivalences ("uk.saloon", "ie.mpv"). Lets price-import flows match against a fixed key rather than the operator-chosen `ref`.
minPassengerCapacity smallint Minimum passenger capacity that vehicles of this type can carry. Used during capability resolution + dispatch matching.
maxPassengerCapacity smallint Maximum passenger capacity. Trips with > this passenger count cannot be dispatched to vehicles of this type.
priority smallint Tie-breaker priority among matching types — lower numbers preferred. Lets the operator force ordering when several types satisfy a trip's capability requirements.
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.