Tenants
Taxi & Private Hire › Products › Tenancy › Tenants
Generally available
A Client row represents a tenant organisation on the platform. One row per customer, carrying display name, timezone, locale, currency, region, distance metric (km/mile), default country code for phone normalisation, default pricing mode, default merge preference, and operational toggles such as no-show call guard and SCP driver preferences. All other tenant-scoped entities reference the Client by clientId.
Related
Fields
| Field | Type | Description |
|---|---|---|
name | string | Display name of the tenant organisation. Surfaced on the admin console and across audit logs. |
publicKey | string | Public-facing key for the tenant — used in URLs / integrations where the internal Snowflake ID shouldn't be exposed. |
timezone | string | IANA timezone ID ("Europe/Dublin", "Europe/Paris"). Drives schedule windows, ETA presentation, and reporting buckets. |
distanceMetric | DistanceMetric · KILOMETRE | MILE | KILOMETRE vs MILE — drives distance presentation across the FE and reports. |
locale | string | Default UI locale ("en", "fr", "ar", "ga", "en-US"). Used by Verte for i18n lookup and FE date/number formatting. |
currency | string | ISO 4217 currency code ("EUR", "GBP", "USD"). All price calculations, charges, and payouts use this currency. |
region | string | Geographic region key ("IE", "GB", "FR"). Used by RegionFilter to scope trip / transporter reads and to pick region-specific defaults. |
latitude | decimal | Tenant centre-point latitude. Drives default map centring on the operator console and provides a fallback location for analytics queries that need a city anchor. |
longitude | decimal | Tenant centre-point longitude. Paired with `latitude`. |
defaultCountryCode | string | Default international dial-code ("+353", "+44") used by phone-normalisation when a customer-entered number omits the country prefix. |
active | boolean | Master enable/disable for the tenant. Disabled tenants are blocked at the auth layer; existing data is preserved. |
defaultMergePreference | MergePreference · INHERIT | NEVER | NONE | ACCOUNT | ACCOUNT_DEPARTMENT | ALL | Default MergePreference (NONE / SOFT / HARD) inherited by new Customer / Account / AccountDepartment rows. Customers can override per-booking. |
defaultPricingMode | PricingMode · FIXED | METERED | Default PricingMode for new trips — METERED (priced from actual route) vs FIXED (priced at quote time). Per-trip overrides apply. |
planningSweepCapacities | json | Seat-capacity values the planning sweep considers when iterating trip candidates. Trips whose minSeatCapacity > max(set) are flagged OUT_OF_POLICY. Trim or widen at onboarding for unusual fleet profiles. |
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. |