System API Keys
Taxi & Private Hire › Products › ACL › System API Keys
Generally available
Cross-tenant API keys used by platform-level callers — the scheduler, optimisation and area services, and internal admin tooling — that operate across all tenants rather than within one. They authenticate with the system-level method and are not restricted to a single tenant's data.
Related
Fields
| Field | Type | Description |
|---|---|---|
apikey | string | Public identifier presented at `/client/system/login`. Globally unique (UNIQ_SUPER_APIKEY) — there is no tenant scope on super keys since they iterate tenants explicitly. |
roles | array | Symfony security roles granted to this key. `ROLE_USER` is appended at read time by `getRoles()`; the role list also drives the `AclSubscriber`'s decision-tree evaluation for SYSTEM-level callers. |
password | string | Hashed secret paired with `apikey`. Verified against the login payload by the password hasher; never serialised outbound (carries `#[Ignore]`). |
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. |