Trip Rejections
Taxi & Private Hire › Products › Trip › Trip Rejections
Generally available
Records every booking that was rejected before becoming a Trip — explicit operator decline, no-supply (no driver available), capacity full, account suspended, or other rule-driven rejection. Each row carries the requested pickup time, H3 cell, rejection reason, and links to customer / account / fleet. Powers no-supply heatmaps, capacity gap analytics, and operator review of why bookings were turned away.
Related
Fields
| Field | Type | Description |
|---|---|---|
customer | Customer | Customer the rejected booking would have belonged to. Null for guest-flow rejections where no customer was matched. |
account | Account | Corporate Account context (if any) of the rejected booking. Set when the booking was made through an account flow. |
fleet | Fleet | Originating Fleet the booking targeted. Drives the `idx_rejected_h3_fleet` lookup that powers fleet-scoped no-supply heatmaps. |
pickupAddress | string | Free-form pickup address as supplied by the caller. Kept for operator review; never normalised here. |
pickupLatitude | decimal | Pickup latitude. Drives the H3 indexing and heatmap aggregation. |
pickupLongitude | decimal | Pickup longitude. Paired with `pickupLatitude` for H3 resolution. |
destinationAddress | string | Free-form destination address as supplied at booking time. Optional — many rejections happen before destination is captured. |
destinationLatitude | decimal | Destination latitude. Zero when the destination was not specified before the rejection fired. |
destinationLongitude | decimal | Destination longitude. Zero when unspecified. |
requestedPickupDate | integer | Unix timestamp the caller wanted to be picked up at. Drives time-bucketed reporting on rejection rates and the composite `idx_rejected_h3` index. |
rejectionReason | RejectionReason · CAPACITY_CONSTRAINT | NO_DRIVER_FOUND | ALLOCATION_TIMEOUT | ABANDONED | NO_SUPPLY_CANCEL | Why the booking was rejected — NO_SUPPLY / CAPACITY_FULL / ACCOUNT_SUSPENDED / OPERATOR_DECLINED / OUT_OF_AREA / etc. Drives no-supply analytics + onboarding reports. |
zoneName | string | Display name of the dispatch Zone the pickup fell into. Snapshot — survives later zone renames. |
h3Index | string | H3 cell index of the pickup (typically res 8 or 9). Powers the heatmap composite indexes. |
capacityUtilisation | smallint | Snapshot of the fleet capacity utilisation (0–100%) at the moment of rejection. Lets analytics correlate rejection spikes with capacity pressure. |
deduplicationHash | string | Unique hash over (caller, pickup point, requested pickup time, reason) — collapses repeat retries into a single row so the heatmap reflects distinct rejections. |
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. |