Skip to content

Tables

Tables are the core data structure in oikapi. Each table belongs to an application and automatically gets REST API endpoints for CRUD operations.

POST /api/apps/{app}/tables
{
"name": "projects",
"display_name": "Projects"
}

The table is immediately available at /api/apps/pm/tables/projects/records.

Name rules: lowercase, letters/numbers/underscores, must start with a letter, unique within an application (the same name can exist in different applications).

ModeCreateReadUpdateDelete
read_writeYesYesYesYes
append_onlyYesYesNoNo
read_onlyNoYesNoNo

Set the mode at creation time:

POST /api/apps/{app}/tables
{
"name": "event_log",
"display_name": "Event Log",
"table_mode": "append_only"
}
TypeStorageUse case
standardRegular table with storageEvery table

standard is currently the only table type — every table is physically stored. To read several tables as one list, see Union Views, which are a separate kind of object and are never registered as tables.

GET /api/tables

Returns all tables the authenticated user has access to across all applications. To list tables within a specific application use GET /api/apps/{app}/tables.

PUT /api/apps/{app}/tables/{name}
{
"display_name": "Active Projects"
}
DELETE /api/apps/{app}/tables/{name}

Deleting a table is a soft delete – it is deactivated and excluded from the API, but the underlying data and audit trail are preserved at the database level.

Tables and individual fields can be flagged as searchable or non-searchable, controlling whether they appear in global search results.