Manual · 9
Conventions
Base path
All endpoints live under /api/v1 (exceptions: /healthz and the public call for document templates).
List endpoints: filter, sorting, grouping, summary
GET /tables/{id}/records (and CSV export) understand the same query parameters:
| Parameter | Meaning |
|---|---|
limit |
page size, default 100, maximum 1000 |
offset |
offset |
sort |
comma-separated columns, - prefix = descending, e.g. sort=name,-created_at |
where |
JSON filter tree, e.g. {"and":[{"col":"status","op":"eq","val":"active"}]} |
fields |
return only these columns, comma-separated, e.g. fields=slug,changed – also for GET /tables/{id}/records/{pk}. Only plain columns requested: the database reads just those, computed fields aren’t evaluated. Unknown name → 400 invalid_fields. |
group_by |
comma-separated columns, outermost first |
summary |
JSON map {"column":"SUM"} (SUM/COUNT/AVG/MIN/MAX) |
view |
ID of a saved view – its filter/sorting/grouping/summary act as the default, unless explicitly overridden by the parameters above |
Response shape: { "records": [...], "pageInfo": { "limit", "offset", "totalRows", "hasMore" }, "summary": {...} }.
Response shape for errors
{ "error": { "code": "short_code", "message": "human-readable description" } }