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.

    • specification string

      Database specification. Defaults to serverless, which creates the database on the shared pool. Any other value provisions a dedicated database on that specification.

    • replicas integer

      Number of high availability replicas (0-5) for the dedicated database backing this database. Requires a dedicated specification; must be 0 for a serverless database. High availability is enabled when greater than 0.

    • syncMode string

      Replication sync mode for the dedicated database backing this database. Requires a dedicated specification; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.

  • Response
Endpoint
POST /tablesdb
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Database result = await tablesDB.create(
    databaseId: '<DATABASE_ID>',
    name: '<NAME>',
    enabled: false, // (optional)
    specification: 'serverless', // (optional)
    replicas: 0, // (optional)
    syncMode: 'async', // (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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Database result = await tablesDB.get(
    databaseId: '<DATABASE_ID>',
);

Get status

Get real-time health and status information for a dedicated database. Returns health status, readiness, uptime, connection info, replica status, and volume information.

  • Request
    • databaseId string
      required

      Database ID.

  • Response
Endpoint
GET /tablesdb/{databaseId}/status
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DatabaseStatus result = await tablesDB.getStatus(
    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.

    • total boolean

      When set to false, the total count returned will be 0 and will not be calculated.

  • Response
Endpoint
GET /tablesdb
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DatabaseList result = await tablesDB.list(
    queries: [], // (optional)
    search: '<SEARCH>', // (optional)
    total: false, // (optional)
);

List specifications

List the dedicated database specifications available on the current plan. Each specification reports its resource limits, pricing, and whether it is enabled for the organization.

Endpoint
GET /tablesdb/specifications
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DedicatedDatabaseSpecificationList result = await tablesDB.listSpecifications();

Update database

Update a database by its unique ID.

  • Request
    • databaseId string
      required

      Database ID.

    • name string

      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.

    • specification string

      Database specification. Resizing between dedicated specifications changes cpu, memory, storage and the connection ceiling via a rolling cutover with zero downtime. Moving a serverless database onto a dedicated specification is a data migration, not a resize.

    • replicas integer

      Number of high availability replicas (0-5) for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification. High availability is enabled when greater than 0.

    • syncMode string

      Replication sync mode for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.

  • Response
Endpoint
PUT /tablesdb/{databaseId}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Database result = await tablesDB.update(
    databaseId: '<DATABASE_ID>',
    name: '<NAME>', // (optional)
    enabled: false, // (optional)
    specification: 'serverless', // (optional)
    replicas: 0, // (optional)
    syncMode: 'async', // (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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

await tablesDB.delete(
    databaseId: '<DATABASE_ID>',
);

Create operations

Create multiple operations in a single transaction.

  • Request
    • transactionId string
      required

      Transaction ID.

    • operations array

      Array of staged operations.

  • Response
Endpoint
POST /tablesdb/transactions/{transactionId}/operations
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Transaction result = await tablesDB.createOperations(
    transactionId: '<TRANSACTION_ID>',
    operations: [
	    {
	        "action": "create",
	        "databaseId": "<DATABASE_ID>",
	        "tableId": "<TABLE_ID>",
	        "rowId": "<ROW_ID>",
	        "data": {
	            "name": "Walter O'Brien"
	        }
	    }
	], // (optional)
);

Create transaction

Create a new transaction.

  • Request
    • ttl integer

      Seconds before the transaction expires.

  • Response
Endpoint
POST /tablesdb/transactions
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Transaction result = await tablesDB.createTransaction(
    ttl: 60, // (optional)
);

Get transaction

Get a transaction by its unique ID.

  • Request
    • transactionId string
      required

      Transaction ID.

  • Response
Endpoint
GET /tablesdb/transactions/{transactionId}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Transaction result = await tablesDB.getTransaction(
    transactionId: '<TRANSACTION_ID>',
);

List transactions

List transactions across all databases.

Endpoint
GET /tablesdb/transactions
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

TransactionList result = await tablesDB.listTransactions(
    queries: [], // (optional)
);

Update transaction

Update a transaction, to either commit or roll back its operations.

  • Request
    • transactionId string
      required

      Transaction ID.

    • commit boolean

      Commit transaction?

    • rollback boolean

      Rollback transaction?

  • Response
Endpoint
PATCH /tablesdb/transactions/{transactionId}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Transaction result = await tablesDB.updateTransaction(
    transactionId: '<TRANSACTION_ID>',
    commit: false, // (optional)
    rollback: false, // (optional)
);

Delete transaction

Delete a transaction by its unique ID.

  • Request
    • transactionId string
      required

      Transaction ID.

  • Response
    • 204 no content
Endpoint
DELETE /tablesdb/transactions/{transactionId}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

await tablesDB.deleteTransaction(
    transactionId: '<TRANSACTION_ID>',
);

Create failover

Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation also accepts this call as a repair once nothing is driving the operation it is stuck in. Repairing a failover that did not finish, a failed database, a stranded upgrade or migrate, or a stranded compute resize additionally requires targetReplicaId to name the member to promote, because the default target may be the member that operation already promoted.

  • Request
    • databaseId string
      required

      Database ID.

    • targetReplicaId string

      Target replica ID to promote. If not specified, the healthiest replica is selected.

  • Response
Endpoint
POST /tablesdb/{databaseId}/failovers
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DedicatedDatabase result = await tablesDB.createFailover(
    databaseId: '<DATABASE_ID>',
    targetReplicaId: '<TARGET_REPLICA_ID>', // (optional)
);

Create migration

Start migrating a serverless TablesDB database onto a dedicated MySQL compute. Data is copied to the target while the source stays live, with a brief read-only window during cutover.

  • Request
    • databaseId string
      required

      Database ID.

    • specification string
      required

      Dedicated compute specification to provision as the migration target (e.g. s-2vcpu-4gb). The migration always targets a dedicated compute, so serverless is not accepted.

    • autoCutover boolean

      Whether to cut over automatically once the copy is verified. When disabled the migration parks at ready_to_cutover and holds there until the cutover is performed manually.

  • Response
Endpoint
POST /tablesdb/{databaseId}/migrations
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DatabaseMigration result = await tablesDB.createMigration(
    databaseId: '<DATABASE_ID>',
    specification: 's-1vcpu-1gb',
    autoCutover: false, // (optional)
);

Get migration

Get a single dedicated migration for a TablesDB database by its ID.

  • Request
    • databaseId string
      required

      Database ID.

    • migrationId string
      required

      Migration ID.

  • Response
Endpoint
GET /tablesdb/{databaseId}/migrations/{migrationId}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DatabaseMigration result = await tablesDB.getMigration(
    databaseId: '<DATABASE_ID>',
    migrationId: '<MIGRATION_ID>',
);

List migrations

List the dedicated migrations for a TablesDB database. A database has at most one in-flight migration.

Endpoint
GET /tablesdb/{databaseId}/migrations
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DatabaseMigrationList result = await tablesDB.listMigrations(
    databaseId: '<DATABASE_ID>',
);

Delete migration

Abort an in-flight TablesDB dedicated migration. Only allowed before cutover; once the migration has cut over it cannot be aborted.

  • Request
    • databaseId string
      required

      Database ID.

    • migrationId string
      required

      Migration ID.

  • Response
    • 204 no content
Endpoint
DELETE /tablesdb/{databaseId}/migrations/{migrationId}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

await tablesDB.deleteMigration(
    databaseId: '<DATABASE_ID>',
    migrationId: '<MIGRATION_ID>',
);

Cutover migration

Cut a verified TablesDB migration over to its dedicated compute. Only applies to a migration created with autoCutover disabled, which waits at ready_to_cutover until this is called. The routing flip happens shortly after this returns, with a brief read-only window. One call buys one attempt: a cutover that fails a check returns the migration to verifying and parks it again, so call this once more to retry.

  • Request
    • databaseId string
      required

      Database ID.

    • migrationId string
      required

      Migration ID.

  • Response
Endpoint
POST /tablesdb/{databaseId}/migrations/{migrationId}/cutover
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DatabaseMigration result = await tablesDB.cutoverMigration(
    databaseId: '<DATABASE_ID>',
    migrationId: '<MIGRATION_ID>',
);

List operations

List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.

  • Request
    • databaseId string
      required

      Database ID.

    • status string

      Filter by operation status.

    • limit integer

      Maximum number of operations to return.

    • offset integer

      Number of operations to skip.

  • Response
Endpoint
GET /tablesdb/{databaseId}/operations
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DedicatedDatabaseOperationList result = await tablesDB.listOperations(
    databaseId: '<DATABASE_ID>',
    status: 'running', // (optional)
    limit: 1, // (optional)
    offset: 0, // (optional)
);

Get replicas

Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.

  • Request
    • databaseId string
      required

      Database ID.

  • Response
Endpoint
GET /tablesdb/{databaseId}/replicas
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

DedicatedDatabaseReplicas result = await tablesDB.getReplicas(
    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.

    • columns array

      Array of column definitions to create. Each column should contain: key (string), type (string: string, varchar, text, mediumtext, longtext, integer, bigint, double, boolean, datetime, point, linestring, polygon, email, url, ip, enum), size (integer, required for string and varchar types), required (boolean, optional), default (mixed, optional), array (boolean, optional), and type-specific options.

    • indexes array

      Array of index definitions to create. Each index should contain: key (string), type (string: key, fulltext, unique, spatial), attributes (array of column keys), orders (array of ASC/DESC, optional), and lengths (array of integers, optional).

  • Response
    • 201 application/json
Endpoint
POST /tablesdb/{databaseId}/tables
Dart
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Table result = await tablesDB.createTable(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    name: '<NAME>',
    permissions: [Permission.read(Role.any())], // (optional)
    rowSecurity: false, // (optional)
    enabled: false, // (optional)
    columns: [], // (optional)
    indexes: [], // (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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Table result = 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.

    • total boolean

      When set to false, the total count returned will be 0 and will not be calculated.

  • Response
Endpoint
GET /tablesdb/{databaseId}/tables
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

TableList result = await tablesDB.listTables(
    databaseId: '<DATABASE_ID>',
    queries: [], // (optional)
    search: '<SEARCH>', // (optional)
    total: false, // (optional)
);

Update table

Update a table by its unique ID.

  • Request
    • databaseId string
      required

      Database ID.

    • tableId string
      required

      Table ID.

    • name string

      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.

    • purge boolean

      When true, purge all cached list responses for this table as part of the update. Use this to force readers to see fresh data immediately instead of waiting for the cache TTL to expire.

  • Response
    • 200 application/json
Endpoint
PUT /tablesdb/{databaseId}/tables/{tableId}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Table result = await tablesDB.updateTable(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    name: '<NAME>', // (optional)
    permissions: [Permission.read(Role.any())], // (optional)
    rowSecurity: false, // (optional)
    enabled: false, // (optional)
    purge: 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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

await tablesDB.deleteTable(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
);

Create bigint column

Create a bigint 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/bigint
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnBigint result = await tablesDB.createBigIntColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    min: 0, // (optional)
    max: 0, // (optional)
    xdefault: 0, // (optional)
    array: false, // (optional)
);

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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnBoolean result = await tablesDB.createBooleanColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnDatetime result = await tablesDB.createDatetimeColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '2020-10-15T06:38:00.000+00:00', // (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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnEmail result = await tablesDB.createEmailColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnEnum result = await tablesDB.createEnumColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    elements: [],
    xrequired: false,
    xdefault: '<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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnFloat result = await tablesDB.createFloatColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    min: 0, // (optional)
    max: 0, // (optional)
    xdefault: 0, // (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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnInteger result = await tablesDB.createIntegerColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    min: 0, // (optional)
    max: 0, // (optional)
    xdefault: 0, // (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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnIp result = await tablesDB.createIpColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '', // (optional)
    array: false, // (optional)
);

Create line column

Create a geometric line column.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnLine result = await tablesDB.createLineColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: [[1, 2], [3, 4], [5, 6]], // (optional)
);

Create longtext column

Create a longtext 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 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/longtext
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnLongtext result = await tablesDB.createLongtextColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '<DEFAULT>', // (optional)
    array: false, // (optional)
    encrypt: false, // (optional)
);

Create mediumtext column

Create a mediumtext 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 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/mediumtext
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnMediumtext result = await tablesDB.createMediumtextColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '<DEFAULT>', // (optional)
    array: false, // (optional)
    encrypt: false, // (optional)
);

Create point column

Create a geometric point column.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnPoint result = await tablesDB.createPointColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: [1, 2], // (optional)
);

Create polygon column

Create a geometric polygon column.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnPolygon result = await tablesDB.createPolygonColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: [[[1, 2], [3, 4], [5, 6], [1, 2]]], // (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

      Relationship type. Possible values are: oneToOne, oneToMany, manyToOne, manyToMany.

    • twoWay boolean

      Is Two Way?

    • key string

      Column Key.

    • twoWayKey string

      Two Way Column Key.

    • onDelete string

      Delete constraint. Possible values are: cascade, restrict, setNull.

  • Response
Endpoint
POST /tablesdb/{databaseId}/tables/{tableId}/columns/relationship
Dart
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/enums.dart' as enums;

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnRelationship result = await tablesDB.createRelationshipColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    relatedTableId: '<RELATED_TABLE_ID>',
    type: enums.RelationshipType.oneToOne,
    twoWay: false, // (optional)
    key: '', // (optional)
    twoWayKey: '', // (optional)
    onDelete: enums.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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnString result = await tablesDB.createStringColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    size: 1,
    xrequired: false,
    xdefault: '<DEFAULT>', // (optional)
    array: false, // (optional)
    encrypt: false, // (optional)
);

Create text column

Create a text 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 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/text
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnText result = await tablesDB.createTextColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '<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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnUrl result = await tablesDB.createUrlColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: 'https://example.com', // (optional)
    array: false, // (optional)
);

Create varchar column

Create a varchar 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 varchar columns, in number of characters. Maximum size is 16381.

    • 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/varchar
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnVarchar result = await tablesDB.createVarcharColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    size: 1,
    xrequired: false,
    xdefault: '<DEFAULT>', // (optional)
    array: false, // (optional)
    encrypt: false, // (optional)
);

Get column

Get column by ID.

Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/columns/{key}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

dynamic result = 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

    • total boolean

      When set to false, the total count returned will be 0 and will not be calculated.

  • Response
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/columns
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnList result = await tablesDB.listColumns(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    queries: [], // (optional)
    total: false, // (optional)
);

Update bigint column

Update a bigint 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/bigint/{key}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnBigint result = await tablesDB.updateBigIntColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: 0,
    min: 0, // (optional)
    max: 0, // (optional)
    newKey: '', // (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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnBoolean result = await tablesDB.updateBooleanColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: 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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnDatetime result = await tablesDB.updateDatetimeColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '2020-10-15T06:38:00.000+00:00',
    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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnEmail result = await tablesDB.updateEmailColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnEnum result = await tablesDB.updateEnumColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    elements: [],
    xrequired: false,
    xdefault: '<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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnFloat result = await tablesDB.updateFloatColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: 0,
    min: 0, // (optional)
    max: 0, // (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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnInteger result = await tablesDB.updateIntegerColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: 0,
    min: 0, // (optional)
    max: 0, // (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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnIp result = await tablesDB.updateIpColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '',
    newKey: '', // (optional)
);

Update line column

Update a line 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 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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnLine result = await tablesDB.updateLineColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: [[1, 2], [3, 4], [5, 6]], // (optional)
    newKey: '', // (optional)
);

Update longtext column

Update a longtext 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.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/longtext/{key}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnLongtext result = await tablesDB.updateLongtextColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '<DEFAULT>',
    newKey: '', // (optional)
);

Update mediumtext column

Update a mediumtext 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.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/mediumtext/{key}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnMediumtext result = await tablesDB.updateMediumtextColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '<DEFAULT>',
    newKey: '', // (optional)
);

Update point column

Update a point 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 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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnPoint result = await tablesDB.updatePointColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: [1, 2], // (optional)
    newKey: '', // (optional)
);

Update polygon column

Update a polygon 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 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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnPolygon result = await tablesDB.updatePolygonColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: [[[1, 2], [3, 4], [5, 6], [1, 2]]], // (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

      Delete constraint. Possible values are: cascade, restrict, setNull.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/{key}/relationship
Dart
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/enums.dart' as enums;

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnRelationship result = await tablesDB.updateRelationshipColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    onDelete: enums.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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnString result = await tablesDB.updateStringColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '<DEFAULT>',
    size: 1, // (optional)
    newKey: '', // (optional)
);

Update text column

Update a text 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.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/text/{key}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnText result = await tablesDB.updateTextColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '<DEFAULT>',
    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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnUrl result = await tablesDB.updateUrlColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: 'https://example.com',
    newKey: '', // (optional)
);

Update varchar column

Update a varchar 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 varchar column.

    • newKey string

      New Column Key.

  • Response
Endpoint
PATCH /tablesdb/{databaseId}/tables/{tableId}/columns/varchar/{key}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnVarchar result = await tablesDB.updateVarcharColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    xrequired: false,
    xdefault: '<DEFAULT>',
    size: 1, // (optional)
    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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/enums.dart' as enums;

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnIndex result = await tablesDB.createIndex(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    key: '',
    type: enums.TablesDBIndexType.key,
    columns: [],
    orders: [enums.OrderBy.asc], // (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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnIndex result = 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

    • total boolean

      When set to false, the total count returned will be 0 and will not be calculated.

  • Response
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/indexes
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

ColumnIndexList result = await tablesDB.listIndexes(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    queries: [], // (optional)
    total: false, // (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 TablesDB service server integration.

    • key string
      required

      Index Key.

  • Response
    • 204 no content
Endpoint
DELETE /tablesdb/{databaseId}/tables/{tableId}/indexes/{key}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

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
      required

      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
      required

      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.

    • transactionId string

      Transaction ID for staging the operation.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Row result = 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: [Permission.read(Role.any())], // (optional)
    transactionId: '<TRANSACTION_ID>', // (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 rows data as JSON objects.

    • transactionId string

      Transaction ID for staging the operation.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

RowList result = await tablesDB.createRows(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rows: [],
    transactionId: '<TRANSACTION_ID>', // (optional)
);

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.

    • transactionId string

      Transaction ID to read uncommitted changes within the transaction.

  • Response
    • 200 application/json
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Row result = await tablesDB.getRow(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    queries: [], // (optional)
    transactionId: '<TRANSACTION_ID>', // (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 TablesDB 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.

    • transactionId string

      Transaction ID to read uncommitted changes within the transaction.

    • total boolean

      When set to false, the total count returned will be 0 and will not be calculated.

    • ttl integer

      TTL (seconds) for caching list responses. Responses are stored in an in-memory key-value cache, keyed per project, table, schema version (columns and indexes), caller authorization roles, and the exact query — so users with different permissions never share cached entries. Schema changes invalidate cached entries automatically; row writes do not, so choose a TTL you are comfortable serving as stale data. Set to 0 to disable caching. Must be between 0 and 86400 (24 hours).

  • Response
Endpoint
GET /tablesdb/{databaseId}/tables/{tableId}/rows
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

RowList result = await tablesDB.listRows(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    queries: [], // (optional)
    transactionId: '<TRANSACTION_ID>', // (optional)
    total: false, // (optional)
    ttl: 0, // (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.

    • transactionId string

      Transaction ID for staging the operation.

  • 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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Row result = await tablesDB.updateRow(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    data: {
        "username": "walter.obrien",
        "email": "walter.obrien@example.com",
        "fullName": "Walter O'Brien",
        "age": 33,
        "isAdmin": false
    }, // (optional)
    permissions: [Permission.read(Role.any())], // (optional)
    transactionId: '<TRANSACTION_ID>', // (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.

    • transactionId string

      Transaction ID for staging the operation.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

RowList result = await tablesDB.updateRows(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    data: {
        "username": "walter.obrien",
        "email": "walter.obrien@example.com",
        "fullName": "Walter O'Brien",
        "age": 33,
        "isAdmin": false
    }, // (optional)
    queries: [], // (optional)
    transactionId: '<TRANSACTION_ID>', // (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.

    • transactionId string

      Transaction ID for staging the operation.

  • 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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Row result = await tablesDB.upsertRow(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    data: {
        "username": "walter.obrien",
        "email": "walter.obrien@example.com",
        "fullName": "Walter O'Brien",
        "age": 33,
        "isAdmin": false
    }, // (optional)
    permissions: [Permission.read(Role.any())], // (optional)
    transactionId: '<TRANSACTION_ID>', // (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.

    • transactionId string

      Transaction ID for staging the operation.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

RowList result = await tablesDB.upsertRows(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rows: [],
    transactionId: '<TRANSACTION_ID>', // (optional)
);

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.

    • transactionId string

      Transaction ID for staging the operation.

  • 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}
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

await tablesDB.deleteRow(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    transactionId: '<TRANSACTION_ID>', // (optional)
);

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.

    • transactionId string

      Transaction ID for staging the operation.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

await tablesDB.deleteRows(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    queries: [], // (optional)
    transactionId: '<TRANSACTION_ID>', // (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.

    • transactionId string

      Transaction ID for staging the operation.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Row result = await tablesDB.incrementRowColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    column: '',
    value: 0, // (optional)
    max: 0, // (optional)
    transactionId: '<TRANSACTION_ID>', // (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.

    • transactionId string

      Transaction ID for staging the operation.

  • 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
Dart
import 'package:dart_appwrite/dart_appwrite.dart';

Client client = 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

TablesDB tablesDB = TablesDB(client);

Row result = await tablesDB.decrementRowColumn(
    databaseId: '<DATABASE_ID>',
    tableId: '<TABLE_ID>',
    rowId: '<ROW_ID>',
    column: '',
    value: 0, // (optional)
    min: 0, // (optional)
    transactionId: '<TRANSACTION_ID>', // (optional)
);