Update display-name overrides
ADMIN+. Body fields `customName` and `traitKey` are independently optional; omitted fields stay unchanged, `null` clears the field (falls back through resolver chain), `string` sets the override (trimmed + validated). Implements steps 1–2 of the 4-step resolver chain.
/api/tracked-users/{userId}/display-nameADMIN+. Body fields customName and traitKey are independently optional; omitted fields stay unchanged, null clears the field (falls back through resolver chain), string sets the override (trimmed + validated). Implements steps 1–2 of the 4-step resolver chain.
Path Parameters
TrackedUser id (cuid)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X PATCH "https://loading/api/tracked-users/string/display-name" \ -H "Content-Type: application/json" \ -d '{ "customName": "Alex (acme rep)" }'Full tracked-user detail GET
VIEWER+. Same shape `loadTrackedUserDetail` produces for the user-detail page Server Component prefetch — `HydrationBoundary` skips the on-mount refetch because the wire format is byte-identical.
Activity dashboard data bundle GET
VIEWER+. Three SQL queries in parallel — histogram, page distribution, KPI aggregates — in a rolling window picked from `?range=` (default `24h`). `Cache-Control: no-store` because the histogram advances with each ingest batch.