Object endpoints
All object operations live on a single controller, ObjectController, under:
/api/v1/genie/objectEvery endpoint is [Authorize]. An object is addressed by its name (the view name/slug). The
former separate /table and /form controllers, and the legacy GET /metadata/{name} and
POST /object/values routes, no longer exist — everything is unified here.
Schema & data
Section titled “Schema & data”| Method | Route | Returns | Purpose | Gate |
|---|---|---|---|---|
GET |
/{name}/metadata |
MetadataResult |
SQL-free schema (the ObjectView with SQL stripped). The UI decides table vs form vs view from this. Static & cacheable. |
auth only |
POST |
/{name}/table |
TableResult |
A page of grid rows + pagination + per-user permission facts. | View |
POST |
/{name}/form |
FormResult |
A record’s field values for an editable form (first row of the form SQL). | View / Update |
POST |
/{name}/view |
FormResult |
A record’s field values for a read-only view (view mode forced). | View |
POST /{name}/table accepts a TableRequest body (filters, search text, sort, page/pageSize).
POST /{name}/form and /{name}/view accept a FormRequest body (the record’s primary-key /
parent parameters). An omitted body is treated as an empty request.
Mutations
Section titled “Mutations”| Method | Route | Returns | Purpose | Gate |
|---|---|---|---|---|
POST |
/submit |
ObjectActionResult |
Create or update a record (SubmitRequest — requires FormName). |
Create / Update |
POST |
/delete-row |
ObjectActionResult |
Delete a row (DeleteRowRequest). |
Delete |
POST |
/execute-row-action |
ObjectActionResult |
Run a declared row action’s SQL (ExecuteRowActionRequest). |
per action |
Mutation results can carry dispatch envelopes (e.g. refreshTable, showAlert) that tell the
UI what to do next — see Actions & row actions.
Export & import
Section titled “Export & import”| Method | Route | Returns | Purpose | Gate |
|---|---|---|---|---|
POST |
/export-data |
ObjectActionResult |
Generate an export file under wwwroot/Exports (ExportTableRequest). |
View / Export |
GET |
/export-file/{fileName} |
file stream | Download a previously-generated export as an authenticated attachment. Bare file name only; traversal rejected. | auth |
POST |
/import-data |
ObjectActionResult |
Bulk import (ImportTableRequest, multipart form). Body cap from Genie:Uploads:MaxImportBytes (default 1 GiB). |
Import |
GET |
/{name}/import-template?format=xlsx|csv |
ObjectActionResult |
Generate a header-only import template; download via export-file. |
Import |
Import/export column mapping and custom handlers are authored in the view — see Bulk import & handlers.
Field datasets, sequences & uploads
Section titled “Field datasets, sequences & uploads”| Method | Route | Returns | Purpose |
|---|---|---|---|
POST |
/field-dataset |
List<Dictionary<string,string>> |
Options for a dependent Select field (FieldDataSetRequest — requires FormName + FieldName). |
POST |
/sequence-number |
string |
Preview/reserve a formatted sequence number (SequenceNumberRequest). See Sequences. |
POST |
/upload |
List<FileUploadResult> |
Upload temporary attachment files (multipart: objectName, fieldName, viewId). Size limit 100 MB. |
DELETE |
/upload/{uploadKey} |
message | Remove a temporary uploaded file before submit. |
GET |
/label/{objectName} |
string |
The view’s display label. |
Related object controllers
Section titled “Related object controllers”GET/POST /api/v1/genie/object-explorer/...— the object explorer surface./api/v1/genie/rpc/...— stored-procedure / RPC calls (ProcedureCallController).
See Other endpoints for the non-object controllers.