Skip to content

TablesDB

SERVER

The TablesDB service allows you to create structured tables of rows, query and filter lists of rows, and manage an advanced set of read and write access permissions.

All data returned by the TablesDB service are represented as structured JSON rows.

The TablesDB service can contain multiple databases, each database can contain multiple tables. A table is a group of similarly structured rows. The accepted structure of rows is defined by table columns. The table columns help you ensure all your user-submitted data is validated and stored according to the table structure.

Using Appwrite permissions architecture, you can assign read or write access to each table or row in your project for either a specific user, team, user role, or even grant it with public access (any). You can learn more about how Appwrite handles permissions and access control.

Base URL
https://<REGION>.cloud.appwrite.io/v1

Create database

Create a new Database.

  • Request
    • databaseId string
      required

      Unique Id. Choose a custom ID or generate a random ID with ID.unique(). Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.

    • name string
      required

      Database name. Max length: 128 chars.

    • enabled boolean

      Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.

  • Response
Endpoint
POST /tablesdb
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.create({
    databaseId: '<DATABASE_ID>',
    name: '<NAME>',
    enabled: false // optional
});

Get database

Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.

  • Request
    • databaseId string
      required

      Database ID.

  • Response
Endpoint
GET /tablesdb/{databaseId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.get({
    databaseId: '<DATABASE_ID>'
});

List databases

Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.

  • Request
    • queries array

      Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following columns: name

    • search string

      Search term to filter your list results. Max length: 256 chars.

  • Response
Endpoint
GET /tablesdb
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.list({
    queries: [], // optional
    search: '<SEARCH>' // optional
});

Update database

Update a database by its unique ID.

  • Request
    • databaseId string
      required

      Database ID.

    • name string
      required

      Database name. Max length: 128 chars.

    • enabled boolean

      Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.

  • Response
Endpoint
PUT /tablesdb/{databaseId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.update({
    databaseId: '<DATABASE_ID>',
    name: '<NAME>',
    enabled: false // optional
});

Delete database

Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.

  • Request
    • databaseId string
      required

      Database ID.

  • Response
    • 204 no content
Endpoint
DELETE /tablesdb/{databaseId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.delete({
    databaseId: '<DATABASE_ID>'
});

Create table

Create a new Table. Before using this route, you should create a new database resource using either a server integration API or directly from your database console.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Unique Id. Choose a custom ID or generate a random ID with ID.unique(). Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.

    • name string
      required

      Table name. Max length: 128 chars.

    • rowSecurity boolean

      Enables configuring permissions for individual rows. A user needs one of row or table level permissions to access a row. Learn more about permissions.

    • enabled boolean

      Is table enabled? When set to 'disabled', users cannot access the table but Server SDKs with and API key can still read and write to the table. No data is lost when this is toggled.

  • Response
    • 201 application/json
Endpoint
POST /tablesdb/{databaseId}/tables
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createTable({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    name: '<NAME>',
    permissions: ["read("any")"], // optional
    rowSecurity: false, // optional
    enabled: false // optional
});

Get table

Get a table by its unique ID. This endpoint response returns a JSON object with the table metadata.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

  • Response
    • 200 application/json
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.getTable({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>'
});

List tables

Get a list of all tables that belong to the provided databaseId. You can use the search parameter to filter your results.

  • Request
    • databaseId string
      required

      Database ID.

    • queries array

      Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following columns: name, enabled, rowSecurity

    • search string

      Search term to filter your list results. Max length: 256 chars.

  • Response
Endpoint
GET /tablesdb/{databaseId}/tables
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.listTables({
    databaseId: '<DATABASE_ID>',
    queries: [], // optional
    search: '<SEARCH>' // optional
});

Update table

Update a table by its unique ID.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • name string
      required

      Table name. Max length: 128 chars.

    • rowSecurity boolean

      Enables configuring permissions for individual rows. A user needs one of row or table level permissions to access a document. Learn more about permissions.

    • enabled boolean

      Is table enabled? When set to 'disabled', users cannot access the table but Server SDKs with and API key can still read and write to the table. No data is lost when this is toggled.

  • Response
    • 200 application/json
Endpoint
PUT /tablesdb/{databaseId}/tables/{tableId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateTable({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    name: '<NAME>',
    permissions: ["read("any")"], // optional
    rowSecurity: false, // optional
    enabled: false // optional
});

Delete table

Delete a table by its unique ID. Only users with write permissions have access to delete this resource.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

  • Response
    • 204 no content
Endpoint
DELETE /tablesdb/{databaseId}/tables/{tableId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.deleteTable({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>'
});

Create boolean column

Create a boolean column.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default boolean

      Default value for column when not provided. Cannot be set when column is required.

    • array boolean

      Is column an array?

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/boolean
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createBooleanColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: false, // optional
    array: false // optional
});

Create datetime column

Create a date time column according to the ISO 8601 standard.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default string

      Default value for the column in ISO 8601 format. Cannot be set when column is required.

    • array boolean

      Is column an array?

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/datetime
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createDatetimeColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '', // optional
    array: false // optional
});

Create email column

Create an email column.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default string

      Default value for column when not provided. Cannot be set when column is required.

    • array boolean

      Is column an array?

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/email
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createEmailColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: 'email@example.com', // optional
    array: false // optional
});

Create enum column

Create an enumeration column. The elements param acts as a white-list of accepted values for this column.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • elements array
      required

      Array of enum values.

    • required boolean
      required

      Is column required?

    • default string

      Default value for column when not provided. Cannot be set when column is required.

    • array boolean

      Is column an array?

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/enum
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createEnumColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    elements: [],
    required: false,
    default: '<DEFAULT>', // optional
    array: false // optional
});

Create float column

Create a float column. Optionally, minimum and maximum values can be provided.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • min number

      Minimum value

    • max number

      Maximum value

    • default number

      Default value. Cannot be set when required.

    • array boolean

      Is column an array?

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/float
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createFloatColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    min: null, // optional
    max: null, // optional
    default: null, // optional
    array: false // optional
});

Create integer column

Create an integer column. Optionally, minimum and maximum values can be provided.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • min integer

      Minimum value

    • max integer

      Maximum value

    • default integer

      Default value. Cannot be set when column is required.

    • array boolean

      Is column an array?

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/integer
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createIntegerColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    min: null, // optional
    max: null, // optional
    default: null, // optional
    array: false // optional
});

Create IP address column

Create IP address column.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default string

      Default value. Cannot be set when column is required.

    • array boolean

      Is column an array?

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/ip
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createIpColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '', // optional
    array: false // optional
});

Create line column

Create a geometric line attribute.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the TablesDB service server integration.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default array

      Default value for column when not provided, two-dimensional array of coordinate pairs, [[longitude, latitude], [longitude, latitude], …], listing the vertices of the line in order. Cannot be set when column is required.

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/line
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createLineColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '' // optional
});

Create point column

Create a geometric point attribute.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the TablesDB service server integration.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default array

      Default value for column when not provided, array of two numbers [longitude, latitude], representing a single coordinate. Cannot be set when column is required.

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/point
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createPointColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '' // optional
});

Create polygon column

Create a geometric polygon attribute.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the TablesDB service server integration.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default array

      Default value for column when not provided, three-dimensional array where the outer array holds one or more linear rings, [[[longitude, latitude], …], …], the first ring is the exterior boundary, any additional rings are interior holes, and each ring must start and end with the same coordinate pair. Cannot be set when column is required.

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/polygon
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createPolygonColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '' // optional
});

Create relationship column

Create relationship column. Learn more about relationship columns.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • relatedTableId string
      required

      Related Table ID.

    • type string
      required

      Relation type

    • twoWay boolean

      Is Two Way?

    • key string

      Column Key.

    • twoWayKey string

      Two Way Column Key.

    • onDelete string

      Constraints option

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/relationship
Deno
import { Client, TablesDB, RelationshipType, RelationMutate } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createRelationshipColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    relatedTableId: '<RELATED_TABLE_ID>',
    type: RelationshipType.OneToOne,
    twoWay: false, // optional
    key: '', // optional
    twoWayKey: '', // optional
    onDelete: RelationMutate.Cascade // optional
});

Create string column

Create a string column.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • key string
      required

      Column Key.

    • size integer
      required

      Column size for text columns, in number of characters.

    • required boolean
      required

      Is column required?

    • default string

      Default value for column when not provided. Cannot be set when column is required.

    • array boolean

      Is column an array?

    • encrypt boolean

      Toggle encryption for the column. Encryption enhances security by not storing any plain text values in the database. However, encrypted columns cannot be queried.

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/string
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createStringColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    size: 1,
    required: false,
    default: '<DEFAULT>', // optional
    array: false, // optional
    encrypt: false // optional
});

Create URL column

Create a URL column.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default string

      Default value for column when not provided. Cannot be set when column is required.

    • array boolean

      Is column an array?

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/url
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createUrlColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: 'https://example.com', // optional
    array: false // optional
});

Get column

Get column by ID.

Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/columns/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.getColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: ''
});

List columns

List columns in the table.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • queries array

      Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following columns: key, type, size, required, array, status, error

  • Response
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/columns
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.listColumns({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    queries: [] // optional
});

Update boolean column

Update a boolean column. Changing the default value will not update already existing rows.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default boolean
      required

      Default value for column when not provided. Cannot be set when column is required.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/boolean/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateBooleanColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: false,
    newKey: '' // optional
});

Update dateTime column

Update a date time column. Changing the default value will not update already existing rows.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default string
      required

      Default value for column when not provided. Cannot be set when column is required.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/datetime/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateDatetimeColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '',
    newKey: '' // optional
});

Update email column

Update an email column. Changing the default value will not update already existing rows.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default string
      required

      Default value for column when not provided. Cannot be set when column is required.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/email/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateEmailColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: 'email@example.com',
    newKey: '' // optional
});

Update enum column

Update an enum column. Changing the default value will not update already existing rows.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • elements array
      required

      Updated list of enum values.

    • required boolean
      required

      Is column required?

    • default string
      required

      Default value for column when not provided. Cannot be set when column is required.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/enum/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateEnumColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    elements: [],
    required: false,
    default: '<DEFAULT>',
    newKey: '' // optional
});

Update float column

Update a float column. Changing the default value will not update already existing rows.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default number
      required

      Default value. Cannot be set when required.

    • min number

      Minimum value

    • max number

      Maximum value

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/float/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateFloatColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: null,
    min: null, // optional
    max: null, // optional
    newKey: '' // optional
});

Update integer column

Update an integer column. Changing the default value will not update already existing rows.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default integer
      required

      Default value. Cannot be set when column is required.

    • min integer

      Minimum value

    • max integer

      Maximum value

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/integer/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateIntegerColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: null,
    min: null, // optional
    max: null, // optional
    newKey: '' // optional
});

Update IP address column

Update an ip column. Changing the default value will not update already existing rows.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default string
      required

      Default value. Cannot be set when column is required.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/ip/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateIpColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '',
    newKey: '' // optional
});

Update line column

Update a line column. Changing the default value will not update already existing documents.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the TablesDB service server integration.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default array

      Default value for column when not provided, two-dimensional array of coordinate pairs, [[longitude, latitude], [longitude, latitude], …], listing the vertices of the line in order. Cannot be set when column is required.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/line/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateLineColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '', // optional
    newKey: '' // optional
});

Update point column

Update a point column. Changing the default value will not update already existing documents.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the TablesDB service server integration.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default array

      Default value for column when not provided, array of two numbers [longitude, latitude], representing a single coordinate. Cannot be set when column is required.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/point/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updatePointColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '', // optional
    newKey: '' // optional
});

Update polygon column

Update a polygon column. Changing the default value will not update already existing documents.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the TablesDB service server integration.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default array

      Default value for column when not provided, three-dimensional array where the outer array holds one or more linear rings, [[[longitude, latitude], …], …], the first ring is the exterior boundary, any additional rings are interior holes, and each ring must start and end with the same coordinate pair. Cannot be set when column is required.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/polygon/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updatePolygonColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '', // optional
    newKey: '' // optional
});

Update relationship column

Update relationship column. Learn more about relationship columns.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • onDelete string

      Constraints option

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/{key}/relationship
Deno
import { Client, TablesDB, RelationMutate } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateRelationshipColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    onDelete: RelationMutate.Cascade, // optional
    newKey: '' // optional
});

Update string column

Update a string column. Changing the default value will not update already existing rows.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default string
      required

      Default value for column when not provided. Cannot be set when column is required.

    • size integer

      Maximum size of the string column.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/string/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateStringColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: '<DEFAULT>',
    size: 1, // optional
    newKey: '' // optional
});

Update URL column

Update an url column. Changing the default value will not update already existing rows.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

    • required boolean
      required

      Is column required?

    • default string
      required

      Default value for column when not provided. Cannot be set when column is required.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/url/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateUrlColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    required: false,
    default: 'https://example.com',
    newKey: '' // optional
});

Delete column

Deletes a column.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • key string
      required

      Column Key.

  • Response
    • 204 no content
Endpoint
DELETE /tablesdb/{databaseId}/tables/{tableId}/columns/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.deleteColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: ''
});

Create index

Creates an index on the columns listed. Your index should include all the columns you will query in a single request. Type can be key, fulltext, or unique.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • key string
      required

      Index Key.

    • type string
      required

      Index type.

    • columns array
      required

      Array of columns to index. Maximum of 100 columns are allowed, each 32 characters long.

    • orders array

      Array of index orders. Maximum of 100 orders are allowed.

    • lengths array

      Length of index. Maximum of 100

  • Response
    • 202 application/json
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/indexes
Deno
import { Client, TablesDB, IndexType } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createIndex({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    type: IndexType.Key,
    columns: [],
    orders: [], // optional
    lengths: [] // optional
});

Get index

Get index by ID.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • key string
      required

      Index Key.

  • Response
    • 200 application/json
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/indexes/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.getIndex({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: ''
});

List indexes

List indexes on the table.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • queries array

      Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following columns: key, type, status, attributes, error

  • Response
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/indexes
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.listIndexes({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    queries: [] // optional
});

Delete index

Delete an index.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • key string
      required

      Index Key.

  • Response
    • 204 no content
Endpoint
DELETE /tablesdb/{databaseId}/tables/{tableId}/indexes/{key}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.deleteIndex({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: ''
});

Create row

Create a new Row. Before using this route, you should create a new table resource using either a server integration API or directly from your database console.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration. Make sure to define columns before creating rows.

    • rowId string

      Row ID. Choose a custom ID or generate a random ID with ID.unique(). Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.

    • data object

      Row data as JSON object.

    • permissions array

      An array of permissions strings. By default, only the current user is granted all permissions. Learn more about permissions.

  • Response
    • 201 application/json
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes120 requestsIP + METHOD + URL + USER ID
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/rows
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setSession(''); // The user session to authenticate with

const tablesDB = new TablesDB(client);

const response = await tablesDB.createRow({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    data: {
        "username": "walter.obrien",
        "email": "walter.obrien@example.com",
        "fullName": "Walter O'Brien",
        "age": 30,
        "isAdmin": false
    },
    permissions: ["read("any")"] // optional
});

Create rows

Create new Rows. Before using this route, you should create a new table resource using either a server integration API or directly from your database console.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration. Make sure to define columns before creating rows.

    • rows array

      Array of documents data as JSON objects.

  • Response
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes120 requestsIP + METHOD + URL + USER ID
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/rows
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.createRows({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rows: []
});

Get row

Get a row by its unique ID. This endpoint response returns a JSON object with the row data.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • rowId string
      required

      Row ID.

    • queries array

      Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Maximum of 100 queries are allowed, each 4096 characters long.

  • Response
    • 200 application/json
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setSession(''); // The user session to authenticate with

const tablesDB = new TablesDB(client);

const response = await tablesDB.getRow({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    queries: [] // optional
});

List rows

Get a list of all the user's rows in a given table. You can use the query params to filter your results.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the TableDB service server integration.

    • queries array

      Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Maximum of 100 queries are allowed, each 4096 characters long.

  • Response
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/rows
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setSession(''); // The user session to authenticate with

const tablesDB = new TablesDB(client);

const response = await tablesDB.listRows({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    queries: [] // optional
});

Update row

Update a row by its unique ID. Using the patch method you can pass only specific fields that will get updated.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • rowId string
      required

      Row ID.

    • data object

      Row data as JSON object. Include only columns and value pairs to be updated.

  • Response
    • 200 application/json
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes120 requestsIP + METHOD + URL + USER ID
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setSession(''); // The user session to authenticate with

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateRow({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    data: {}, // optional
    permissions: ["read("any")"] // optional
});

Update rows

Update all rows that match your queries, if no queries are submitted then all rows are updated. You can pass only specific fields to be updated.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • data object

      Row data as JSON object. Include only column and value pairs to be updated.

    • queries array

      Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Maximum of 100 queries are allowed, each 4096 characters long.

  • Response
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes120 requestsIP + METHOD + URL + USER ID
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/rows
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.updateRows({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    data: {}, // optional
    queries: [] // optional
});

Upsert a row

Create or update a Row. Before using this route, you should create a new table resource using either a server integration API or directly from your database console.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • rowId string
      required

      Row ID.

    • data object

      Row data as JSON object. Include all required columns of the row to be created or updated.

  • Response
    • 201 application/json
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes120 requestsIP + METHOD + URL + USER ID
Endpoint
PUT /tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setSession(''); // The user session to authenticate with

const tablesDB = new TablesDB(client);

const response = await tablesDB.upsertRow({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    data: {}, // optional
    permissions: ["read("any")"] // optional
});

Upsert rows

Create or update Rows. Before using this route, you should create a new table resource using either a server integration API or directly from your database console.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • rows array
      required

      Array of row data as JSON objects. May contain partial rows.

  • Response
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes120 requestsIP + METHOD + URL + USER ID
Endpoint
PUT /tablesdb/{databaseId}/tables/{tableId}/rows
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.upsertRows({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rows: []
});

Delete row

Delete a row by its unique ID.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • rowId string
      required

      Row ID.

  • Response
    • 204 no content
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes60 requestsIP + METHOD + URL + USER ID
Endpoint
DELETE /tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setSession(''); // The user session to authenticate with

const tablesDB = new TablesDB(client);

const response = await tablesDB.deleteRow({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>'
});

Delete rows

Bulk delete rows using queries, if no queries are passed then all rows are deleted.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID. You can create a new table using the Database service server integration.

    • queries array

      Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Maximum of 100 queries are allowed, each 4096 characters long.

  • Response
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes60 requestsIP + METHOD + URL + USER ID
Endpoint
DELETE /tablesdb/{databaseId}/tables/{tableId}/rows
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setKey('<YOUR_API_KEY>'); // Your secret API key

const tablesDB = new TablesDB(client);

const response = await tablesDB.deleteRows({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    queries: [] // optional
});

Increment row column

Increment a specific column of a row by a given value.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • rowId string
      required

      Row ID.

    • column string
      required

      Column key.

    • value number

      Value to increment the column by. The value must be a number.

    • max number

      Maximum value for the column. If the current value is greater than this value, an error will be thrown.

  • Response
    • 200 application/json
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes120 requestsIP + METHOD + URL + USER ID
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}/{column}/increment
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setSession(''); // The user session to authenticate with

const tablesDB = new TablesDB(client);

const response = await tablesDB.incrementRowColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    column: '',
    value: null, // optional
    max: null // optional
});

Decrement row column

Decrement a specific column of a row by a given value.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • rowId string
      required

      Row ID.

    • column string
      required

      Column key.

    • value number

      Value to increment the column by. The value must be a number.

    • min number

      Minimum value for the column. If the current value is lesser than this value, an exception will be thrown.

  • Response
    • 200 application/json
  • Rate limits

    This endpoint is not limited when using Server SDKs with API keys. If you are using SSR with setSession, these rate limits will still apply. Learn more about SSR rate limits.

    The limit is applied for each unique limit key.

    Time frame
    Attempts
    Key
    1 minutes120 requestsIP + METHOD + URL + USER ID
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}/{column}/decrement
Deno
import { Client, TablesDB } from "https://deno.land/x/appwrite/mod.ts";

const client = new Client()
    .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
    .setProject('<YOUR_PROJECT_ID>') // Your project ID
    .setSession(''); // The user session to authenticate with

const tablesDB = new TablesDB(client);

const response = await tablesDB.decrementRowColumn({
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    column: '',
    value: null, // optional
    min: null // optional
});