Operational Regions
Taxi & Private Hire › Products › Region › Operational Regions
Generally available
Tenant-managed geographic areas (Dublin, Cork, and so on) used to scope a session. Each region has a short reference, a display name and a centre point; operators pick their current region at login and downstream data is filtered to it. Multi-city operators use regions to keep dispatch, queues and reporting cleanly separated.
Example request
POST /client/{clientId}/region
{
"name": "<string>",
"ref": "<string>",
"countryCode": "<string>",
"latitude": 0,
"longitude": 0
}
Example shape, derived from the Region fields — indicative,
not the authoritative schema (that arrives with the API reference).
Endpoints
| Method | Path | |
|---|---|---|
POST | /client/{clientId}/region · primary | |
DELETE | /client/{clientId}/region/{regionId} | |
GET | /client/{clientId}/region/{regionId} | |
POST | /client/{clientId}/region/{regionId} |
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
Define an operational region (city) for session scoping and reporting.
POST/client/{clientId}/region
Related
Fields
| Field | Type | Description |
|---|---|---|
name | string | Display name for the region ("Dublin", "Cork", "Galway"). Shown in the region picker and on operator console headers. |
ref | string | Short reference key embedded in the JWT region claim and used by RegionFilter for scoping. Keep short (e.g. "DUB", "COR") — propagates into JWTs. |
countryCode | string | ISO 3166-1 alpha-2 country code (e.g. "IE", "GB"). Biases address search toward this region — Google Places regionCode + location bias. Falls back to the GOOGLE_PLACES_DEFAULT_REGION env var when unset. |
latitude | decimal | Centroid latitude. Default map centre when the region is selected. Also used as a fallback anchor in distance / heatmap queries. |
longitude | decimal | Centroid longitude. Paired with `latitude`. |
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. |