Skip to main content

Generated API

Every generated application serves a JSON API and describes it at /openapi.json, with Redoc at /redoc and Scalar at /scalar. All data routes require a token, issued by /api/auth/login.

Records​

RouteDoes
GET /api/bus/{entity}List: page, limit, search, sort, order, and filter.<column>=<op>:<value>
POST /api/bus/{entity}Create
GET /api/bus/{entity}/{id}Read one, with its ETag
PUT /api/bus/{entity}/{id}Update, with If-Match (PATCH is accepted too)
DELETE /api/bus/{entity}/{id}Soft-delete, with If-Match
GET /api/bus/{entity}/lookup/{column}The records a reference may point to, narrowed by the values passed
GET /api/bus/{entity}/{id}/actionsThe lifecycle moves this caller may make
POST /api/bus/{entity}/{id}/transitionMake a move: { event | to, data? } with If-Match

A list answers { data, meta: { total, page, limit, totalPages } }. Filter operators are eq, gt, gte, lt, lte, contains, startsWith and endsWith. /{entity}/meta and /{entity}/fields/form and /fields/grid describe the entity for building screens.

One generic handler serves every entity in the dictionary, including entities added after deployment, so the API description documents {entity} generically.

The caller​

RouteDoes
GET /api/me/dashboardThe categories, entities and admin windows this caller may open
GET /api/me/healthReadiness; no token needed

Administration​

RouteDoes
/api/sys/*The Application Dictionary. Reads are open; writes need the administrator
/api/accounts, /api/accounts/rolesAccounts and roles, written as a pair, administrator only
/api/rules, /api/workflow-definitionsRules, automations and status machines
/api/reportsThe reports the model declares
/api/logging/levelsLog levels per channel, administrator only

Errors​

Every refusal has the same shape: statusCode, message and details.code (a catalogued code such as VERSION_CONFLICT), details.category, the request reference ref, timestamp and path. Only an unexpected server error hides its message.