Get started

Tables API

Tables API

Manage database tables and their schemas.

GET/organizations/:orgId/databases/:dbId/tables

List all tables in a database with their column definitions.

Response
{
  "tables": [
    {
      "name": "users",
      "comment": "User profiles",
      "columns": [
        { "name": "id", "type": "integer", "nullable": false, "unique": true, "default": null, "comment": null },
        { "name": "email", "type": "string", "nullable": false, "unique": true, "default": null, "comment": "User email" },
        { "name": "name", "type": "string", "nullable": true, "unique": false, "default": null, "comment": null },
        { "name": "created_at", "type": "date", "nullable": false, "unique": false, "default": "CURRENT_TIMESTAMP", "comment": null },
        { "name": "updated_at", "type": "date", "nullable": false, "unique": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", "comment": null }
      ]
    }
  ]
}
id, created_at, and updated_at are automatically managed. They appear in responses but cannot be set in create or update requests.
POST/organizations/:orgId/databases/:dbId/tables

Create a new table. Columns id, created_at, and updated_at are added automatically.

Request body
{
  "name": "users",
  "comment": "User profiles",
  "columns": [
    { "name": "email", "type": "string", "nullable": false, "unique": true, "comment": "User email" },
    { "name": "name", "type": "string", "comment": "Display name" },
    { "name": "age", "type": "integer", "nullable": true },
    { "name": "active", "type": "boolean", "default": true, "comment": "Account status" }
  ]
}
Response
{
  "table": {
    "name": "users",
    "comment": "User profiles",
    "columns": [
      { "name": "id", "type": "integer", "nullable": false, "unique": true, "default": null, "comment": null },
      { "name": "email", "type": "string", "nullable": false, "unique": true, "default": null, "comment": "User email" },
      { "name": "name", "type": "string", "nullable": true, "unique": false, "default": null, "comment": "Display name" },
      { "name": "age", "type": "integer", "nullable": true, "unique": false, "default": null, "comment": null },
      { "name": "active", "type": "boolean", "nullable": true, "unique": false, "default": true, "comment": "Account status" },
      { "name": "created_at", "type": "date", "nullable": false, "unique": false, "default": "CURRENT_TIMESTAMP", "comment": null },
      { "name": "updated_at", "type": "date", "nullable": false, "unique": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", "comment": null }
    ]
  }
}

Column types: string, text, integer, float, boolean, date, json

Options: nullable (default: true), unique (default: false), default (default value), comment (column description). Note: text and json types do not support unique or default. The date type supports CURRENT_TIMESTAMP or CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP as default.

PUT/organizations/:orgId/databases/:dbId/tables/:tableName

Modify an existing table. Supports adding, renaming, modifying, dropping, and reordering columns.

Request body
{
  "add": [
    { "name": "phone", "type": "string", "nullable": true, "comment": "Phone number" }
  ],
  "rename": [
    { "from": "name", "to": "full_name" }
  ],
  "drop": ["age"],
  "comment": "Updated user profiles"
}
Response
{
  "table": {
    "name": "users",
    "comment": "Updated user profiles",
    "columns": [
      { "name": "id", "type": "integer", "nullable": false, "unique": true, "default": null, "comment": null },
      { "name": "email", "type": "string", "nullable": false, "unique": true, "default": null, "comment": "User email" },
      { "name": "full_name", "type": "string", "nullable": true, "unique": false, "default": null, "comment": null },
      { "name": "active", "type": "boolean", "nullable": true, "unique": false, "default": true, "comment": null },
      { "name": "phone", "type": "string", "nullable": true, "unique": false, "default": null, "comment": "Phone number" },
      { "name": "created_at", "type": "date", "nullable": false, "unique": false, "default": "CURRENT_TIMESTAMP", "comment": null },
      { "name": "updated_at", "type": "date", "nullable": false, "unique": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", "comment": null }
    ]
  }
}
DELETE/organizations/:orgId/databases/:dbId/tables/:tableName

Drop a table and all its data. This action is irreversible.

Response
{
  "table": "users"
}
Dropping a table permanently deletes all data in it. This cannot be undone.