Skip to content

Platform Capabilities

Taxi & Private HireProductsCapability › Platform Capabilities

Generally available

The platform-wide catalogue of capabilities — wheelchair access, child seat, pet-friendly, premium/luxury, English-speaking driver, and so on. The catalogue is global and shared across tenants; each tenant opts into the capabilities it offers. Capabilities are matched efficiently against what each trip requires at dispatch time.

Example request

POST /client/{clientId}/capability

{
  "name": "<string>"
}

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

Endpoints

MethodPath
POST /client/{clientId}/capability · primary
GET /client/{clientId}/capability/{capabilityId}
POST /client/{clientId}/capability/{capabilityId}

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

Use cases

Operator flows that exercise this feature.

Define a capability

config risk: low

Add a capability to the platform catalogue (driver skill / vehicle feature).

  1. POST /client/{clientId}/capability

Fields

FieldTypeDescription
entityType TransporterEntity · DRIVER | VEHICLE Which entity this capability applies to: VEHICLE (declared on a Vehicle row) or DRIVER (declared on a Driver row). Drives where the capability appears in the editor UI.
name string Human-readable name (e.g. "Wheelchair Accessible", "Child Seat"). Used as the FE label fallback when a tenant ClientCapability doesn't override it.
value int Reserved column — previously used for per-capability capacity counts, now unused. Kept on the schema for backward compatibility with old tariff configs.
standard bool When true, new client/tenant onboarding auto-assigns this capability — gives every tenant the basic capability set without manual setup.
behaviour CapabilityBehaviourEnum · BASIC | ENGINE_TYPE | VEHICLE_CHARACTERISTIC | DRIVER_CAPABILITY Category grouping: BASIC (always available), PASSENGER (passenger-counted seating), LUGGAGE (luggage-counted), CHARGEABLE (priceable add-on), etc. Drives both editor grouping and pricing-pipeline behaviour.
requiresLicence bool When true, the driver / vehicle needs a recorded licence or training document on file before this capability can be enabled on their row. Default false.
uniqueSystemRef string Globally-unique key (e.g. "wheelchair_access") used by integrations to reference the capability without depending on display names. Stable across tenants.
bitPosition smallint Bit position (0–127) used to pack the capability set into a 128-bit bitmask. Lets dispatch match capability requirements with a single bitwise AND rather than a per-capability iteration.
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.