Skip to content

Tables API

Every table belongs to an application. Table management endpoints are app-scoped under /api/apps/{app}/tables. A read-only cross-application listing is also available at /api/tables.

GET /api/apps/{app}/tables

Returns the tables in the application. To list every table the authenticated user can access across all applications, omit the app scope:

GET /api/tables

Both return {"tables": [...]}.

POST /api/apps/{app}/tables
Content-Type: application/json
{
"name": "projects",
"display_name": "Projects"
}

The application field is set automatically from the URL. If you include it in the body it must match the {app} segment. Returns {"table": {...}, "fields": [...]} (HTTP 201). The table is immediately available for field definitions and record operations.

Constraints:

  • name must be 24 characters or fewer
  • name must start with a lowercase letter or underscore, and contain only lowercase letters, digits, and underscores
  • name must be unique within the application
GET /api/apps/{app}/tables/{table}

Returns {"table": {...}, "fields": [...]} — table metadata plus its field definitions.

PUT /api/apps/{app}/tables/{table}
Content-Type: application/json
{
"display_name": "Active Projects"
}
DELETE /api/apps/{app}/tables/{table}

Deleting a table is soft-deleted: the table is deactivated and excluded from the API, and its name is freed for reuse. There is no API endpoint to recover a deleted table; recovery requires direct database access.