Databases

SERVER

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.

Base URL
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
    • search string

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

    • limit integer

      Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.

    • cursor string

      ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.

    • cursorDirection string

      Direction of the cursor, can be either 'before' or 'after'.

    • orderType string

      Order result by ASC or DESC order.

  • Response
Endpoint
GET /databases
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let databaseList = try await databases.list()

    print(String(describing: databaseList)
}

Create Database

Create a new Database.

  • Request
    • databaseId string
      required

      Unique Id. Choose your own unique ID or pass the string "unique()" to auto generate it. 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

      Collection name. Max length: 128 chars.

  • Response
Endpoint
POST /databases
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let database = try await databases.create(
        name: "[NAME]"
    )

    print(String(describing: database)
}

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 /databases/{databaseId}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let collection = try await databases.get()

    print(String(describing: collection)
}

Update Database

Update a database by its unique ID.

  • Request
    • databaseId string
      required

      Database ID.

    • name string
      required

      Collection name. Max length: 128 chars.

  • Response
Endpoint
PUT /databases/{databaseId}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let collection = try await databases.update(
        name: "[NAME]"
    )

    print(String(describing: collection)
}

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 application/json
Endpoint
DELETE /databases/{databaseId}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let result = try await databases.delete()

    print(String(describing: result)
}

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 string
      required

      Database ID.

    • search string

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

    • limit integer

      Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.

    • cursor string

      ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.

    • cursorDirection string

      Direction of the cursor, can be either 'before' or 'after'.

    • orderType string

      Order result by ASC or DESC order.

  • Response
Endpoint
GET /databases/{databaseId}/collections
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let collectionList = try await databases.listCollections()

    print(String(describing: collectionList)
}

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 string
      required

      Database ID.

    • collectionId string
      required

      Unique Id. Choose your own unique ID or pass the string "unique()" to auto generate it. 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

      Collection name. Max length: 128 chars.

    • permission string
      required

      Specifies the permissions model used in this collection, which accepts either 'collection' or 'document'. For 'collection' level permission, the permissions specified in read and write params are applied to all documents in the collection. For 'document' level permissions, read and write permissions are specified in each document. learn more about permissions and get a full list of available permissions.

    • read array
      required

      An array of strings with read permissions. By default no user is granted with any read permissions. learn more about permissions and get a full list of available permissions.

    • write array
      required

      An array of strings with write permissions. By default no user is granted with any write permissions. learn more about permissions and get a full list of available permissions.

  • Response
Endpoint
POST /databases/{databaseId}/collections
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let collection = try await databases.createCollection(
        collectionId: "[COLLECTION_ID]",
        name: "[NAME]",
        permission: "document",
        read: ["role:all"],
        write: ["role:all"]
    )

    print(String(describing: collection)
}

Get Collection

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

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID.

  • Response
Endpoint
GET /databases/{databaseId}/collections/{collectionId}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let collection = try await databases.getCollection(
        collectionId: "[COLLECTION_ID]"
    )

    print(String(describing: collection)
}

Update Collection

Update a collection by its unique ID.

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID.

    • name string
      required

      Collection name. Max length: 128 chars.

    • permission string
      required

      Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the read and write params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. learn more about permissions and get a full list of available permissions.

    • read array

      An array of strings with read permissions. By default inherits the existing read permissions. learn more about permissions and get a full list of available permissions.

    • write array

      An array of strings with write permissions. By default inherits the existing write permissions. learn more about permissions and get a full list of available permissions.

    • enabled boolean

      Is collection enabled?

  • Response
Endpoint
PUT /databases/{databaseId}/collections/{collectionId}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let collection = try await databases.updateCollection(
        collectionId: "[COLLECTION_ID]",
        name: "[NAME]",
        permission: "document"
    )

    print(String(describing: collection)
}

Delete Collection

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

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID.

  • Response
    • 204 application/json
Endpoint
DELETE /databases/{databaseId}/collections/{collectionId}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let result = try await databases.deleteCollection(
        collectionId: "[COLLECTION_ID]"
    )

    print(String(describing: result)
}

List Attributes

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

  • Response
Endpoint
GET /databases/{databaseId}/collections/{collectionId}/attributes
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let attributeList = try await databases.listAttributes(
        collectionId: "[COLLECTION_ID]"
    )

    print(String(describing: attributeList)
}

Create Boolean Attribute

Create a boolean attribute.

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Attribute Key.

    • required boolean
      required

      Is attribute required?

    • default boolean

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

    • array boolean

      Is attribute an array?

  • Response
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/attributes/boolean
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let attributeBoolean = try await databases.createBooleanAttribute(
        collectionId: "[COLLECTION_ID]",
        key: "",
        required: xfalse
    )

    print(String(describing: attributeBoolean)
}

Create Email Attribute

Create an email attribute.

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Attribute Key.

    • required boolean
      required

      Is attribute required?

    • default string

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

    • array boolean

      Is attribute an array?

  • Response
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/attributes/email
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let attributeEmail = try await databases.createEmailAttribute(
        collectionId: "[COLLECTION_ID]",
        key: "",
        required: xfalse
    )

    print(String(describing: attributeEmail)
}

Create Enum Attribute

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Attribute Key.

    • elements array
      required

      Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.

    • required boolean
      required

      Is attribute required?

    • default string

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

    • array boolean

      Is attribute an array?

  • Response
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/attributes/enum
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let attributeEnum = try await databases.createEnumAttribute(
        collectionId: "[COLLECTION_ID]",
        key: "",
        elements: [],
        required: xfalse
    )

    print(String(describing: attributeEnum)
}

Create Float Attribute

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

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Attribute Key.

    • required boolean
      required

      Is attribute required?

    • min number

      Minimum value to enforce on new documents

    • max number

      Maximum value to enforce on new documents

    • default number

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

    • array boolean

      Is attribute an array?

  • Response
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/attributes/float
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let attributeFloat = try await databases.createFloatAttribute(
        collectionId: "[COLLECTION_ID]",
        key: "",
        required: xfalse
    )

    print(String(describing: attributeFloat)
}

Create Integer Attribute

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

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Attribute Key.

    • required boolean
      required

      Is attribute required?

    • min integer

      Minimum value to enforce on new documents

    • max integer

      Maximum value to enforce on new documents

    • default integer

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

    • array boolean

      Is attribute an array?

  • Response
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/attributes/integer
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let attributeInteger = try await databases.createIntegerAttribute(
        collectionId: "[COLLECTION_ID]",
        key: "",
        required: xfalse
    )

    print(String(describing: attributeInteger)
}

Create IP Address Attribute

Create IP address attribute.

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Attribute Key.

    • required boolean
      required

      Is attribute required?

    • default string

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

    • array boolean

      Is attribute an array?

  • Response
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/attributes/ip
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let attributeIp = try await databases.createIpAttribute(
        collectionId: "[COLLECTION_ID]",
        key: "",
        required: xfalse
    )

    print(String(describing: attributeIp)
}

Create String Attribute

Create a string attribute.

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Attribute Key.

    • size integer
      required

      Attribute size for text attributes, in number of characters.

    • required boolean
      required

      Is attribute required?

    • default string

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

    • array boolean

      Is attribute an array?

  • Response
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/attributes/string
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let attributeString = try await databases.createStringAttribute(
        collectionId: "[COLLECTION_ID]",
        key: "",
        size: 1,
        required: xfalse
    )

    print(String(describing: attributeString)
}

Create URL Attribute

Create a URL attribute.

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Attribute Key.

    • required boolean
      required

      Is attribute required?

    • default string

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

    • array boolean

      Is attribute an array?

  • Response
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/attributes/url
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let attributeUrl = try await databases.createUrlAttribute(
        collectionId: "[COLLECTION_ID]",
        key: "",
        required: xfalse
    )

    print(String(describing: attributeUrl)
}

Get Attribute

Endpoint
GET /databases/{databaseId}/collections/{collectionId}/attributes/{key}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let result = try await databases.getAttribute(
        collectionId: "[COLLECTION_ID]",
        key: ""
    )

    print(String(describing: result)
}

Delete Attribute

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Attribute Key.

  • Response
    • 204 application/json
Endpoint
DELETE /databases/{databaseId}/collections/{collectionId}/attributes/{key}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let result = try await databases.deleteAttribute(
        collectionId: "[COLLECTION_ID]",
        key: ""
    )

    print(String(describing: result)
}

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. On admin mode, this endpoint will return a list of all of documents belonging to the provided collectionId. Learn more about different API modes.

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection 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.

    • limit integer

      Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.

    • cursor string

      ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. learn more about pagination

    • cursorDirection string

      Direction of the cursor, can be either 'before' or 'after'.

    • orderAttributes array

      Array of attributes used to sort results. Maximum of 100 order attributes are allowed, each 4096 characters long.

    • orderTypes array

      Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order. Maximum of 100 order types are allowed.

  • Response
Endpoint
GET /databases/{databaseId}/collections/{collectionId}/documents
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let documentList = try await databases.listDocuments(
        collectionId: "[COLLECTION_ID]"
    )

    print(String(describing: documentList)
}

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 string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration. Make sure to define attributes before creating documents.

    • documentId string
      required

      Document ID. Choose your own unique ID or pass the string "unique()" to auto generate it. 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

      Document data as JSON object.

    • read array

      An array of strings with read permissions. By default only the current user is granted with read permissions. learn more about permissions and get a full list of available permissions.

    • write array

      An array of strings with write permissions. By default only the current user is granted with write permissions. learn more about permissions and get a full list of available permissions.

  • Response
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/documents
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let document = try await databases.createDocument(
        collectionId: "[COLLECTION_ID]",
        documentId: "[DOCUMENT_ID]",
        data: [:]
    )

    print(String(describing: document)
}

Get Document

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

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • documentId string
      required

      Document ID.

  • Response
Endpoint
GET /databases/{databaseId}/collections/{collectionId}/documents/{documentId}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let document = try await databases.getDocument(
        collectionId: "[COLLECTION_ID]",
        documentId: "[DOCUMENT_ID]"
    )

    print(String(describing: document)
}

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 string
      required

      Database ID.

    • collectionId string
      required

      Collection ID.

    • documentId string
      required

      Document ID.

    • data object

      Document data as JSON object. Include only attribute and value pairs to be updated.

    • read array

      An array of strings with read permissions. By default inherits the existing read permissions. learn more about permissions and get a full list of available permissions.

    • write array

      An array of strings with write permissions. By default inherits the existing write permissions. learn more about permissions and get a full list of available permissions.

  • Response
Endpoint
PATCH /databases/{databaseId}/collections/{collectionId}/documents/{documentId}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let document = try await databases.updateDocument(
        collectionId: "[COLLECTION_ID]",
        documentId: "[DOCUMENT_ID]"
    )

    print(String(describing: document)
}

Delete Document

Delete a document by its unique ID.

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • documentId string
      required

      Document ID.

  • Response
    • 204 application/json
Endpoint
DELETE /databases/{databaseId}/collections/{collectionId}/documents/{documentId}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let result = try await databases.deleteDocument(
        collectionId: "[COLLECTION_ID]",
        documentId: "[DOCUMENT_ID]"
    )

    print(String(describing: result)
}

List Indexes

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

  • Response
Endpoint
GET /databases/{databaseId}/collections/{collectionId}/indexes
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let indexList = try await databases.listIndexes(
        collectionId: "[COLLECTION_ID]"
    )

    print(String(describing: indexList)
}

Create Index

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Index Key.

    • type string
      required

      Index type.

    • attributes array
      required

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

    • orders array

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

  • Response
    • 201 application/json
Endpoint
POST /databases/{databaseId}/collections/{collectionId}/indexes
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let index = try await databases.createIndex(
        collectionId: "[COLLECTION_ID]",
        key: "",
        type: "key",
        attributes: []
    )

    print(String(describing: index)
}

Get Index

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Index Key.

  • Response
    • 200 application/json
Endpoint
GET /databases/{databaseId}/collections/{collectionId}/indexes/{key}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let index = try await databases.getIndex(
        collectionId: "[COLLECTION_ID]",
        key: ""
    )

    print(String(describing: index)
}

Delete Index

  • Request
    • databaseId string
      required

      Database ID.

    • collectionId string
      required

      Collection ID. You can create a new collection using the Database service server integration.

    • key string
      required

      Index Key.

  • Response
    • 204 application/json
Endpoint
DELETE /databases/{databaseId}/collections/{collectionId}/indexes/{key}
Swift
import Appwrite

func main() async throws {
    let client = Client()
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
      .setProject("5df5acd0d48c2") // Your project ID
      .setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
    let databases = Databases(client, "[DATABASE_ID]")
    let result = try await databases.deleteIndex(
        collectionId: "[COLLECTION_ID]",
        key: ""
    )

    print(String(describing: result)
}