Skip to content

Trip Rejections

Taxi & Private HireProductsTrip › 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.

Fields

FieldTypeDescription
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.