Skip to content

Account Employees

Taxi & Private HireProductsAccount › Account Employees

Generally available

Links a Customer to a corporate Account (with optional department membership). Each employee carries their own auth type override, merge preference, and driver/management notes. Bookings made by the underlying Customer charge to the account when the employee link is active; reporting attributes the trips to the right department.

Example request

POST /client/{clientId}/accountemployee

{
  "customer": {
    "id": "<id>"
  },
  "accountDepartments": [
    {
      "id": "<id>"
    }
  ],
  "authType": "PIN",
  "mergePreference": "INHERIT",
  "driverNote": "<string>",
  "managementNote": "<string>"
}

Example shape, derived from the AccountEmployee fields — indicative, not the authoritative schema (that arrives with the API reference).

Endpoints

MethodPath
POST /client/{clientId}/accountemployee · primary
POST /client/{clientId}/account/{accountId}/accountemployee
POST /client/{clientId}/accountdepartment/{accountDepartmentId}/accountemployee
GET /client/{clientId}/accountemployee/{accountEmployeeId}
GET /client/{clientId}/account/{accountId}/accountemployee/{accountEmployeeId}
GET /client/{clientId}/accountdepartment/{accountDepartmentId}/accountemployee/{accountEmployeeId}
GET /client/{clientId}/accountemployee
GET /client/{clientId}/account/{accountId}/accountemployee
GET /client/{clientId}/accountdepartment/{accountDepartmentId}/accountemployee
GET /client/{clientId}/account/{accountId}/accountdepartment/{accountDepartmentId}/accountemployee
POST /client/{clientId}/accountemployee/{accountEmployeeId}
POST /client/{clientId}/account/{accountId}/accountemployee/{accountEmployeeId}
POST /client/{clientId}/accountdepartment/{accountDepartmentId}/accountemployee/{accountEmployeeId}
PUT /client/{clientId}/accountdepartment/{accountDepartmentId}/accountemployee/{accountEmployeeId}
PUT /client/{clientId}/accountemployee/{accountEmployeeId}/accountdepartment/{accountDepartmentId}
DELETE /client/{clientId}/accountdepartment/{accountDepartmentId}/accountemployee/{accountEmployeeId}
DELETE /client/{clientId}/accountemployee/{accountEmployeeId}/accountdepartment/{accountDepartmentId}

Full request/response schemas and an interactive explorer will live in the API reference (coming soon).

Use cases

Operator flows that exercise this feature.

Create a corporate account

config risk: low

Set up a corporate account with a department and an employee.

  1. POST /client/{clientId}/account
  2. POST /client/{clientId}/accountdepartment
  3. POST /client/{clientId}/accountemployee
Add an account employee

config risk: low

Add an employee / booker to a corporate account.

  1. POST /client/{clientId}/accountemployee

Fields

FieldTypeDescription
customer Customer The underlying person — Customer record carrying name, phone (E.164), email. One Customer can be employed by multiple accounts via separate AccountEmployee rows. Required.
account Account The corporate account that employs this customer. Bookings by this customer charge to the account when the employee link is active.
accountDepartments Collection Departments this employee belongs to. Zero or many — drives department-level merge scoping and reporting attribution.
authType AccountAuthType · PIN | SMS | NONE | MFA | INHERIT Per-employee auth-method override (badge / PIN / SSO). INHERIT defers to the parent department (and on through to the account).
mergePreference MergePreference · INHERIT | NEVER | NONE | ACCOUNT | ACCOUNT_DEPARTMENT | ALL Per-employee merge-preference override. INHERIT defers to the department / account chain.
driverNote string Notes shared with the Driver and Operator, to be treated as publicly visible and not to include personal information
managementNote string Internal notes for management use only.
deletedAt integer
deletedBy bigint
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.