The Databases service allows you to create structured collections of documents, query and filter lists of documents, and manage an advanced set of read and write access permissions.
All data returned by the Databases service are represented as structured JSON documents.
The Databases service can contain multiple databases, each database can contain multiple collections. A collection is a group of similarly structured documents. The accepted structure of documents is defined by collection attributes. The collection attributes help you ensure all your user-submitted data is validated and stored according to the collection structure.
Using Appwrite permissions architecture, you can assign read or write access to each collection or document 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.
https://cloud.appwrite.io/v1
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 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 attributes: name
search Search term to filter your list results. Max length: 256 chars.
Response
200
GET /databases
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
DatabaseList result = await databases.List();
Create Database
Create a new Database.
Request
databaseId requiredUnique 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 requiredCollection name. Max length: 128 chars.
Response
201
POST /databases
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Database result = await databases.Create(
databaseId: "[DATABASE_ID]",
name: "[NAME]");
Get Database
Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.
Request
databaseId requiredDatabase ID.
Response
200
GET /databases/{databaseId}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Database result = await databases.Get(
databaseId: "[DATABASE_ID]");
Update Database
Update a database by its unique ID.
Request
databaseId requiredDatabase ID.
name requiredDatabase name. Max length: 128 chars.
Response
200
PUT /databases/{databaseId}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Database result = await databases.Update(
databaseId: "[DATABASE_ID]",
name: "[NAME]");
Delete Database
Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.
Request
databaseId requiredDatabase ID.
Response
204
DELETE /databases/{databaseId}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
await databases.Delete(
databaseId: "[DATABASE_ID]");
List Collections
Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.
Request
databaseId requiredDatabase ID.
queries 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 attributes: name, enabled, documentSecurity
search Search term to filter your list results. Max length: 256 chars.
Response
200
GET /databases/{databaseId}/collections
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
CollectionList result = await databases.ListCollections(
databaseId: "[DATABASE_ID]");
Create Collection
Create a new Collection. 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 requiredDatabase ID.
collectionId requiredUnique 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 requiredCollection name. Max length: 128 chars.
permissions An array of permissions strings. By default, no user is granted with any permissions. Learn more about permissions.
documentSecurity Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. Learn more about permissions.
Response
201
POST /databases/{databaseId}/collections
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Collection result = await databases.CreateCollection(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
name: "[NAME]");
Get Collection
Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID.
Response
200
GET /databases/{databaseId}/collections/{collectionId}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Collection result = await databases.GetCollection(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]");
Update Collection
Update a collection by its unique ID.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID.
name requiredCollection name. Max length: 128 chars.
permissions An array of permission strings. By default, the current permissions are inherited. Learn more about permissions.
documentSecurity Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. Learn more about permissions.
enabled Is collection enabled?
Response
200
PUT /databases/{databaseId}/collections/{collectionId}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Collection result = await databases.UpdateCollection(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
name: "[NAME]");
Delete Collection
Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID.
Response
204
DELETE /databases/{databaseId}/collections/{collectionId}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
await databases.DeleteCollection(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]");
List Attributes
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
Response
200
GET /databases/{databaseId}/collections/{collectionId}/attributes
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeList result = await databases.ListAttributes(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]");
Create Boolean Attribute
Create a boolean attribute.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default Default value for attribute when not provided. Cannot be set when attribute is required.
array Is attribute an array?
Response
202
POST /databases/{databaseId}/collections/{collectionId}/attributes/boolean
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeBoolean result = await databases.CreateBooleanAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false);
Update Boolean Attribute
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default requiredDefault value for attribute when not provided. Cannot be set when attribute is required.
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/boolean/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeBoolean result = await databases.UpdateBooleanAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false,
default: false);
Create DateTime Attribute
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.
array Is attribute an array?
Response
POST /databases/{databaseId}/collections/{collectionId}/attributes/datetime
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeDatetime result = await databases.CreateDatetimeAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false);
Update DateTime Attribute
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default requiredDefault value for attribute when not provided. Cannot be set when attribute is required.
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/datetime/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeDatetime result = await databases.UpdateDatetimeAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false,
default: "");
Create Email Attribute
Create an email attribute.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default Default value for attribute when not provided. Cannot be set when attribute is required.
array Is attribute an array?
Response
202
POST /databases/{databaseId}/collections/{collectionId}/attributes/email
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeEmail result = await databases.CreateEmailAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false);
Update Email Attribute
Update an email attribute. Changing the default
value will not update already existing documents.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default requiredDefault value for attribute when not provided. Cannot be set when attribute is required.
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/email/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeEmail result = await databases.UpdateEmailAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false,
default: "email@example.com");
Create Enum Attribute
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
elements requiredArray of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.
required requiredIs attribute required?
default Default value for attribute when not provided. Cannot be set when attribute is required.
array Is attribute an array?
Response
202
POST /databases/{databaseId}/collections/{collectionId}/attributes/enum
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeEnum result = await databases.CreateEnumAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
elements: new List<string> {},
required: false);
Update Enum Attribute
Update an enum attribute. Changing the default
value will not update already existing documents.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
elements requiredArray of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.
required requiredIs attribute required?
default requiredDefault value for attribute when not provided. Cannot be set when attribute is required.
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/enum/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeEnum result = await databases.UpdateEnumAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
elements: new List<string> {},
required: false,
default: "[DEFAULT]");
Create Float Attribute
Create a float attribute. Optionally, minimum and maximum values can be provided.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
min Minimum value to enforce on new documents
max Maximum value to enforce on new documents
default Default value for attribute when not provided. Cannot be set when attribute is required.
array Is attribute an array?
Response
202
POST /databases/{databaseId}/collections/{collectionId}/attributes/float
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeFloat result = await databases.CreateFloatAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false);
Update Float Attribute
Update a float attribute. Changing the default
value will not update already existing documents.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
min requiredMinimum value to enforce on new documents
max requiredMaximum value to enforce on new documents
default requiredDefault value for attribute when not provided. Cannot be set when attribute is required.
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/float/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeFloat result = await databases.UpdateFloatAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false,
min: 0,
max: 0,
default: 0);
Create Integer Attribute
Create an integer attribute. Optionally, minimum and maximum values can be provided.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
min Minimum value to enforce on new documents
max Maximum value to enforce on new documents
default Default value for attribute when not provided. Cannot be set when attribute is required.
array Is attribute an array?
Response
202
POST /databases/{databaseId}/collections/{collectionId}/attributes/integer
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeInteger result = await databases.CreateIntegerAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false);
Update Integer Attribute
Update an integer attribute. Changing the default
value will not update already existing documents.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
min requiredMinimum value to enforce on new documents
max requiredMaximum value to enforce on new documents
default requiredDefault value for attribute when not provided. Cannot be set when attribute is required.
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/integer/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeInteger result = await databases.UpdateIntegerAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false,
min: 0,
max: 0,
default: 0);
Create IP Address Attribute
Create IP address attribute.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default Default value for attribute when not provided. Cannot be set when attribute is required.
array Is attribute an array?
Response
202
POST /databases/{databaseId}/collections/{collectionId}/attributes/ip
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeIp result = await databases.CreateIpAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false);
Update IP Address Attribute
Update an ip attribute. Changing the default
value will not update already existing documents.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default requiredDefault value for attribute when not provided. Cannot be set when attribute is required.
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/ip/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeIp result = await databases.UpdateIpAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false,
default: "");
Create Relationship Attribute
Create relationship attribute. Learn more about relationship attributes.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
relatedCollectionId requiredRelated Collection ID. You can create a new collection using the Database service server integration.
type requiredRelation type
twoWay Is Two Way?
key Attribute Key.
twoWayKey Two Way Attribute Key.
onDelete Constraints option
Response
POST /databases/{databaseId}/collections/{collectionId}/attributes/relationship
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeRelationship result = await databases.CreateRelationshipAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
relatedCollectionId: "[RELATED_COLLECTION_ID]",
type: "oneToOne");
Create String Attribute
Create a string attribute.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
size requiredAttribute size for text attributes, in number of characters.
required requiredIs attribute required?
default Default value for attribute when not provided. Cannot be set when attribute is required.
array Is attribute an array?
Response
202
POST /databases/{databaseId}/collections/{collectionId}/attributes/string
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeString result = await databases.CreateStringAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
size: 1,
required: false);
Update String Attribute
Update a string attribute. Changing the default
value will not update already existing documents.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default requiredDefault value for attribute when not provided. Cannot be set when attribute is required.
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/string/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeString result = await databases.UpdateStringAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false,
default: "[DEFAULT]");
Create URL Attribute
Create a URL attribute.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default Default value for attribute when not provided. Cannot be set when attribute is required.
array Is attribute an array?
Response
202
POST /databases/{databaseId}/collections/{collectionId}/attributes/url
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeUrl result = await databases.CreateUrlAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false);
Update URL Attribute
Update an url attribute. Changing the default
value will not update already existing documents.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
required requiredIs attribute required?
default requiredDefault value for attribute when not provided. Cannot be set when attribute is required.
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/url/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeUrl result = await databases.UpdateUrlAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
required: false,
default: "https://example.com");
Get Attribute
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
GET /databases/{databaseId}/collections/{collectionId}/attributes/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
result = await databases.GetAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "");
Delete Attribute
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
Response
204
DELETE /databases/{databaseId}/collections/{collectionId}/attributes/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
await databases.DeleteAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "");
Update Relationship Attribute
Update relationship attribute. Learn more about relationship attributes.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredAttribute Key.
onDelete Constraints option
Response
200
PATCH /databases/{databaseId}/collections/{collectionId}/attributes/{key}/relationship
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
AttributeRelationship result = await databases.UpdateRelationshipAttribute(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "");
List Documents
Get a list of all the user's documents in a given collection. You can use the query params to filter your results.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
queries Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Maximum of 100 queries are allowed, each 4096 characters long.
Response
200
GET /databases/{databaseId}/collections/{collectionId}/documents
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
DocumentList result = await databases.ListDocuments(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]");
Create Document
Create a new Document. Before using this route, you should create a new collection resource using either a server integration API or directly from your database console.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration. Make sure to define attributes before creating documents.
documentId requiredDocument 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 requiredDocument data as JSON object.
permissions An array of permissions strings. By default, only the current user is granted all permissions. Learn more about permissions.
Response
201
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 frameAttemptsKey1 minutes 120 requests IP + METHOD + URL + USER ID
POST /databases/{databaseId}/collections/{collectionId}/documents
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Document result = await databases.CreateDocument(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
documentId: "[DOCUMENT_ID]",
data: [object]);
Get Document
Get a document by its unique ID. This endpoint response returns a JSON object with the document data.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
documentId requiredDocument ID.
queries Array of query strings generated using the Query class provided by the SDK. Learn more about queries. Only method allowed is select.
Response
200
GET /databases/{databaseId}/collections/{collectionId}/documents/{documentId}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Document result = await databases.GetDocument(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
documentId: "[DOCUMENT_ID]");
Update Document
Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID.
documentId requiredDocument ID.
data Document data as JSON object. Include only attribute and value pairs to be updated.
permissions An array of permissions strings. By default, the current permissions are inherited. Learn more about permissions.
Response
200
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 frameAttemptsKey1 minutes 120 requests IP + METHOD + URL + USER ID
PATCH /databases/{databaseId}/collections/{collectionId}/documents/{documentId}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Document result = await databases.UpdateDocument(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
documentId: "[DOCUMENT_ID]");
Delete Document
Delete a document by its unique ID.
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
documentId requiredDocument ID.
Response
204
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 frameAttemptsKey1 minutes 60 requests IP + METHOD + URL + USER ID
DELETE /databases/{databaseId}/collections/{collectionId}/documents/{documentId}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
await databases.DeleteDocument(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
documentId: "[DOCUMENT_ID]");
List Indexes
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
Response
200
GET /databases/{databaseId}/collections/{collectionId}/indexes
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
IndexList result = await databases.ListIndexes(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]");
Create Index
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredIndex Key.
type requiredIndex type.
attributes requiredArray of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.
orders Array of index orders. Maximum of 100 orders are allowed.
Response
202
POST /databases/{databaseId}/collections/{collectionId}/indexes
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Index result = await databases.CreateIndex(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "",
type: "key",
attributes: new List<string> {});
Get Index
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredIndex Key.
Response
200
GET /databases/{databaseId}/collections/{collectionId}/indexes/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
Index result = await databases.GetIndex(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "");
Delete Index
Request
databaseId requiredDatabase ID.
collectionId requiredCollection ID. You can create a new collection using the Database service server integration.
key requiredIndex Key.
Response
204
DELETE /databases/{databaseId}/collections/{collectionId}/indexes/{key}
using Appwrite;
using Appwrite.Services;
using Appwrite.Models;
var client = new Client()
.SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint
.SetProject("5df5acd0d48c2") // Your project ID
.SetKey("919c2d18fb5d4...a2ae413da83346ad2"); // Your secret API key
var databases = new Databases(client);
await databases.DeleteIndex(
databaseId: "[DATABASE_ID]",
collectionId: "[COLLECTION_ID]",
key: "");