api/v1. This page is the map at controller level. It does not list every endpoint, because there are 88 of them and the code is the only listing that stays true. What it does list is who calls each area, what that area expects, and the endpoints that carry more weight than their neighbours.
For how a caller proves who it is, see Authentication and Authorisation.
The Public Controllers
The Admin Controllers
Everything underapi/v1/admin/ backs the Operator Dashboard, and with one exception every endpoint expects a signed in SUPER_ADMIN or an internal service.
The split is by audience, not by entity.
Drivers and AdminDrivers both exist, and the difference is that the public one only ever answers about the calling user’s own drivers while the admin one answers about anyone’s. The same pattern holds for tickets and users.Endpoints Worth Knowing Individually
The Money Path
The Four Webhooks
Vivenu calls four endpoints, all authenticated by signature rather than key, and all requiring ahubRegion query parameter:
The events webhook is the one that mirrors Vivenu’s event catalogue into our database, switching on the webhook type to create, update or remove the event document for that region. Every other event endpoint on this page reads what it wrote, so if it stops arriving the whole booking flow is working from a stale catalogue. An unrecognised webhook type throws rather than being ignored.
What Other Systems Depend On
Two endpoints exist mainly for Telemetry, and are the reason theTELEMETRY claim exists:
Both accept
TELEMETRY or INTERNAL_SERVICE as well as a signed in SUPER_ADMIN. They are a published contract with another system, so changing their shape breaks conversion at the tracks rather than anything visible here. See The STL Database for what the race day answer decides.Internal Only
Operator Actions With Consequences
Endpoints That Need No Credential
Eight endpoints are[AllowAnonymous]. This is the full list, and it is worth knowing because it is the API’s entire unauthenticated attack surface:
Two Things That Will Trip You Up
Drivers is versioned and the others are not. DriversController serves both api/v1/drivers and api/v2/drivers, with paired ...AsyncV1 and ...AsyncV2 methods on the same controller. Everything else in the API is v1 only, so the version number in a URL is not a reliable guide to anything.Many actions return
dynamic. Responses are shaped by DTO mapper extension methods rather than by declared response types, so the contract of an endpoint is whatever its mapper projects. That is also why the mappers are the place a field gets accidentally exposed or accidentally dropped.Key Files
All paths are underGklPlatformAPI/GklPlatform/GklPlatform.API.Core/ in the GKL Platform repository.
