diff --git a/specs/latest/open-api3-latest-client.json b/specs/latest/open-api3-latest-client.json index fe3fbf77..3f885fb1 100644 --- a/specs/latest/open-api3-latest-client.json +++ b/specs/latest/open-api3-latest-client.json @@ -460,84 +460,6 @@ } } }, - "\/account\/logs": { - "get": { - "summary": "List logs", - "operationId": "accountListLogs", - "tags": [ - "account" - ], - "description": "Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listLogs", - "group": "logs", - "cookies": false, - "type": "", - "demo": "account\/list-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "account", - "platforms": [ - "console", - "client", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Session": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] - } - }, "\/account\/mfa": { "patch": { "summary": "Update MFA", @@ -4180,9 +4102,9 @@ "cookies": false, "type": "", "demo": "apps\/list.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -4255,9 +4177,9 @@ "cookies": false, "type": "", "demo": "apps\/create.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4457,9 +4379,9 @@ "cookies": false, "type": "", "demo": "apps\/get.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -4518,9 +4440,9 @@ "cookies": false, "type": "", "demo": "apps\/update.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4708,9 +4630,9 @@ "cookies": false, "type": "", "demo": "apps\/delete.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4774,9 +4696,9 @@ "cookies": false, "type": "", "demo": "apps\/list-secrets.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -4859,9 +4781,9 @@ "cookies": false, "type": "", "demo": "apps\/create-secret.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4922,9 +4844,9 @@ "cookies": false, "type": "", "demo": "apps\/get-secret.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -4986,9 +4908,9 @@ "cookies": false, "type": "", "demo": "apps\/delete-secret.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -5062,9 +4984,9 @@ "cookies": false, "type": "", "demo": "apps\/update-team.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -5137,9 +5059,9 @@ "cookies": false, "type": "", "demo": "apps\/delete-tokens.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -11440,9 +11362,9 @@ "cookies": false, "type": "", "demo": "oauth2\/approve.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "oauth2.write", "platforms": [ "console", @@ -11490,6 +11412,12 @@ "description": "Enriched `authorization_details` the user consented to, replacing what the client requested. Each entry must use a `type` the project accepts. Optional; omit to keep the originally requested details.", "default": "", "x-example": "" + }, + "scope": { + "type": "string", + "description": "Space-separated scopes the user consented to. Must be a subset of the scopes originally requested; identity scopes such as `openid` are always retained. Optional; omit to keep the originally requested scopes.", + "default": "", + "x-example": "" } }, "required": [ @@ -11528,8 +11456,8 @@ "cookies": false, "type": "", "demo": "oauth2\/authorize.md", - "rate-limit": 0, - "rate-time": 3600, + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -11594,11 +11522,12 @@ }, { "name": "scope", - "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`.", - "required": true, + "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`, `phone`.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "" }, "in": "query" }, @@ -11719,8 +11648,8 @@ "cookies": false, "type": "", "demo": "oauth2\/create-device-authorization.md", - "rate-limit": 0, - "rate-time": 3600, + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -11899,9 +11828,9 @@ "cookies": false, "type": "", "demo": "oauth2\/get-grant.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "oauth2.read", "platforms": [ "console", @@ -11965,8 +11894,8 @@ "cookies": false, "type": "", "demo": "oauth2\/logout.md", - "rate-limit": 0, - "rate-time": 3600, + "rate-limit": 10, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -12096,9 +12025,9 @@ "cookies": false, "type": "", "demo": "oauth2\/reject.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "oauth2.write", "platforms": [ "console", @@ -12179,8 +12108,8 @@ "cookies": false, "type": "", "demo": "oauth2\/revoke.md", - "rate-limit": 0, - "rate-time": 3600, + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -12279,8 +12208,8 @@ "cookies": false, "type": "", "demo": "oauth2\/create-token.md", - "rate-limit": 0, - "rate-time": 3600, + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -17666,34 +17595,6 @@ "identities": "" } }, - "logList": { - "description": "Logs List", - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "Total number of logs that matched your query.", - "x-example": 5, - "format": "int32" - }, - "logs": { - "type": "array", - "description": "List of logs.", - "items": { - "$ref": "#\/components\/schemas\/log" - }, - "x-example": "" - } - }, - "required": [ - "total", - "logs" - ], - "example": { - "total": 5, - "logs": "" - } - }, "fileList": { "description": "Files List", "type": "object", @@ -18231,170 +18132,6 @@ } } }, - "log": { - "description": "Log", - "type": "object", - "properties": { - "event": { - "type": "string", - "description": "Event name.", - "x-example": "account.sessions.create" - }, - "userId": { - "type": "string", - "description": "User ID of the actor recorded for this log. During impersonation, this is the original impersonator, not the impersonated target user.", - "x-example": "610fc2f985ee0" - }, - "userEmail": { - "type": "string", - "description": "User email of the actor recorded for this log. During impersonation, this is the original impersonator.", - "x-example": "john@appwrite.io" - }, - "userName": { - "type": "string", - "description": "User name of the actor recorded for this log. During impersonation, this is the original impersonator.", - "x-example": "John Doe" - }, - "mode": { - "type": "string", - "description": "API mode when event triggered.", - "x-example": "admin" - }, - "userType": { - "type": "string", - "description": "User type who triggered the audit log. Possible values: user, admin, guest, keyProject, keyAccount, keyOrganization.", - "x-example": "user" - }, - "ip": { - "type": "string", - "description": "IP session in use when the session was created.", - "x-example": "127.0.0.1" - }, - "time": { - "type": "string", - "description": "Log creation date in ISO 8601 format.", - "x-example": "2020-10-15T06:38:00.000+00:00" - }, - "osCode": { - "type": "string", - "description": "Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).", - "x-example": "Mac" - }, - "osName": { - "type": "string", - "description": "Operating system name.", - "x-example": "Mac" - }, - "osVersion": { - "type": "string", - "description": "Operating system version.", - "x-example": "Mac" - }, - "clientType": { - "type": "string", - "description": "Client type.", - "x-example": "browser" - }, - "clientCode": { - "type": "string", - "description": "Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).", - "x-example": "CM" - }, - "clientName": { - "type": "string", - "description": "Client name.", - "x-example": "Chrome Mobile iOS" - }, - "clientVersion": { - "type": "string", - "description": "Client version.", - "x-example": "84.0" - }, - "clientEngine": { - "type": "string", - "description": "Client engine name.", - "x-example": "WebKit" - }, - "clientEngineVersion": { - "type": "string", - "description": "Client engine name.", - "x-example": "605.1.15" - }, - "deviceName": { - "type": "string", - "description": "Device name.", - "x-example": "smartphone" - }, - "deviceBrand": { - "type": "string", - "description": "Device brand name.", - "x-example": "Google" - }, - "deviceModel": { - "type": "string", - "description": "Device model name.", - "x-example": "Nexus 5" - }, - "countryCode": { - "type": "string", - "description": "Country two-character ISO 3166-1 alpha code.", - "x-example": "US" - }, - "countryName": { - "type": "string", - "description": "Country name.", - "x-example": "United States" - } - }, - "required": [ - "event", - "userId", - "userEmail", - "userName", - "mode", - "userType", - "ip", - "time", - "osCode", - "osName", - "osVersion", - "clientType", - "clientCode", - "clientName", - "clientVersion", - "clientEngine", - "clientEngineVersion", - "deviceName", - "deviceBrand", - "deviceModel", - "countryCode", - "countryName" - ], - "example": { - "event": "account.sessions.create", - "userId": "610fc2f985ee0", - "userEmail": "john@appwrite.io", - "userName": "John Doe", - "mode": "admin", - "userType": "user", - "ip": "127.0.0.1", - "time": "2020-10-15T06:38:00.000+00:00", - "osCode": "Mac", - "osName": "Mac", - "osVersion": "Mac", - "clientType": "browser", - "clientCode": "CM", - "clientName": "Chrome Mobile iOS", - "clientVersion": "84.0", - "clientEngine": "WebKit", - "clientEngineVersion": "605.1.15", - "deviceName": "smartphone", - "deviceBrand": "Google", - "deviceModel": "Nexus 5", - "countryCode": "US", - "countryName": "United States" - } - }, "user": { "description": "User", "type": "object", diff --git a/specs/latest/open-api3-latest-console.json b/specs/latest/open-api3-latest-console.json index a0c69a0f..cde27f25 100644 --- a/specs/latest/open-api3-latest-console.json +++ b/specs/latest/open-api3-latest-console.json @@ -1367,84 +1367,6 @@ ] } }, - "\/account\/logs": { - "get": { - "summary": "List logs", - "operationId": "accountListLogs", - "tags": [ - "account" - ], - "description": "Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listLogs", - "group": "logs", - "cookies": false, - "type": "", - "demo": "account\/list-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "account", - "platforms": [ - "console", - "client", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Session": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] - } - }, "\/account\/mfa": { "patch": { "summary": "Update MFA", @@ -5675,9 +5597,9 @@ "cookies": false, "type": "", "demo": "apps\/list.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -5751,9 +5673,9 @@ "cookies": false, "type": "", "demo": "apps\/create.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -5954,9 +5876,9 @@ "cookies": false, "type": "", "demo": "apps\/get.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -6016,9 +5938,9 @@ "cookies": false, "type": "", "demo": "apps\/update.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -6207,9 +6129,9 @@ "cookies": false, "type": "", "demo": "apps\/delete.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -6274,9 +6196,9 @@ "cookies": false, "type": "", "demo": "apps\/list-secrets.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -6360,9 +6282,9 @@ "cookies": false, "type": "", "demo": "apps\/create-secret.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -6424,9 +6346,9 @@ "cookies": false, "type": "", "demo": "apps\/get-secret.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -6489,9 +6411,9 @@ "cookies": false, "type": "", "demo": "apps\/delete-secret.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -6566,9 +6488,9 @@ "cookies": false, "type": "", "demo": "apps\/update-team.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -6642,9 +6564,9 @@ "cookies": false, "type": "", "demo": "apps\/delete-tokens.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -9979,81 +9901,21 @@ ] } }, - "\/compute\/databases": { - "get": { - "summary": "List dedicated databases.", - "operationId": "computeListDatabases", - "tags": [ - "compute" - ], - "description": "List all dedicated databases. Results support pagination.", - "responses": { - "200": { - "description": "Dedicated databases list", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listDatabases", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/list-databases.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "queries", - "description": "Array of query strings.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - } - ] - }, + "\/console\/assistant": { "post": { - "summary": "Create a dedicated database.", - "operationId": "computeCreateDatabase", + "summary": "Create assistant query", + "operationId": "assistantChat", "tags": [ - "compute" + "assistant" ], - "description": "Create a new dedicated database with the chosen engine and configuration. Status will be 'provisioning' until the database is ready.", + "description": "Send a prompt to the AI assistant and receive a response. This endpoint allows you to interact with Appwrite's AI assistant by sending questions or prompts and receiving helpful responses in real-time through a server-sent events stream. ", "responses": { - "201": { - "description": "DedicatedDatabase", + "200": { + "description": "Text", "content": { - "application\/json": { + "text\/plain": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "type": "string" } } } @@ -10061,20 +9923,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDatabase", - "group": "databases", + "method": "chat", + "group": "console", "cookies": false, "type": "", - "demo": "compute\/create-database.md", - "rate-limit": 0, + "demo": "assistant\/chat.md", + "rate-limit": 15, "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "rate-key": "userId:{userId}", + "scope": "assistant.read", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md", "auth": { "Project": [] } @@ -10090,200 +9953,14 @@ "schema": { "type": "object", "properties": { - "databaseId": { - "type": "string", - "description": "Database 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.", - "x-example": "", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Database display name. Max length: 128 chars.", - "x-example": "" - }, - "database": { - "type": "string", - "description": "Physical database\/catalog name. Defaults to databaseId.", - "default": "", - "x-example": "" - }, - "engine": { - "type": "string", - "description": "Database engine: postgres, mysql, mariadb, or mongodb.", - "default": "postgres", - "x-example": "postgres" - }, - "version": { - "type": "string", - "description": "Database engine version. Defaults to latest for selected engine.", - "x-example": "17", - "x-nullable": true - }, - "specification": { - "type": "string", - "description": "Specification identifier.", - "default": "s-1vcpu-1gb", - "x-example": "" - }, - "backend": { - "type": "string", - "description": "Database backend provider: prisma, or edge.", - "default": "edge", - "x-example": "prisma" - }, - "cpu": { - "type": "integer", - "description": "CPU in millicores (125-16000).", - "default": 1000, - "x-example": 125, - "format": "int32" - }, - "memory": { - "type": "integer", - "description": "Memory in MB to allocate (128-65536).", - "default": 1024, - "x-example": 128, - "format": "int32" - }, - "storage": { - "type": "integer", - "description": "Storage in GB to allocate (1-16384).", - "default": 10, - "x-example": 1, - "format": "int32" - }, - "storageClass": { - "type": "string", - "description": "Storage class. Allowed values: ssd. DigitalOcean exposes a single block-storage class, so only 'ssd' is offered today.", - "default": "ssd", - "x-example": "ssd" - }, - "storageMaxGb": { - "type": "integer", - "description": "Maximum storage limit in GB. 0 uses system default.", - "default": 0, - "x-example": 0, - "format": "int32" - }, - "replicas": { - "type": "integer", - "description": "Number of high availability replicas (0-5). High availability is enabled when greater than 0.", - "default": 0, - "x-example": 0, - "format": "int32" - }, - "highAvailabilitySyncMode": { - "type": "string", - "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", - "x-example": "async", - "x-nullable": true - }, - "networkMaxConnections": { - "type": "integer", - "description": "Maximum concurrent connections.", - "default": 100, - "x-example": 10, - "format": "int32" - }, - "networkIdleTimeoutSeconds": { - "type": "integer", - "description": "Connection idle timeout in seconds.", - "default": 900, - "x-example": 60, - "format": "int32" - }, - "networkIPAllowlist": { - "type": "array", - "description": "IP addresses\/CIDR ranges allowed to connect.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "idleTimeoutMinutes": { - "type": "integer", - "description": "Minutes of inactivity before container scales to zero.", - "default": 15, - "x-example": 5, - "format": "int32" - }, - "backupEnabled": { - "type": "boolean", - "description": "Enable automatic backups.", - "default": true, - "x-example": false - }, - "backupPitr": { - "type": "boolean", - "description": "Enable point-in-time recovery.", - "default": true, - "x-example": false - }, - "backupCron": { - "type": "string", - "description": "Backup schedule in cron format.", - "default": "0 3 * * *", - "x-example": null - }, - "backupRetentionDays": { - "type": "integer", - "description": "Number of days to retain backups.", - "default": 14, - "x-example": 1, - "format": "int32" - }, - "pitrRetentionDays": { - "type": "integer", - "description": "Number of days to retain PITR data.", - "default": 7, - "x-example": 1, - "format": "int32" - }, - "storageAutoscaling": { - "type": "boolean", - "description": "Enable automatic storage expansion when usage exceeds threshold.", - "default": false, - "x-example": false - }, - "storageAutoscalingThresholdPercent": { - "type": "integer", - "description": "Storage usage percentage (50-95) that triggers automatic expansion.", - "default": 85, - "x-example": 50, - "format": "int32" - }, - "storageAutoscalingMaxGb": { - "type": "integer", - "description": "Maximum storage size in GB for autoscaling. 0 means no limit.", - "default": 0, - "x-example": 0, - "format": "int32" - }, - "metricsEnabled": { - "type": "boolean", - "description": "Enable metrics collection. Enabled by default; pass false to opt out.", - "default": true, - "x-example": false - }, - "poolerEnabled": { - "type": "boolean", - "description": "Enable connection pooler on provision.", - "default": true, - "x-example": false - }, - "api": { + "prompt": { "type": "string", - "description": "Product API that owns this database: compute (raw, direct-access), tablesdb, documentsdb, or vectorsdb. tablesdb\/documentsdb\/vectorsdb computes are reached only through their product APIs.", - "default": "compute", - "x-example": "compute" + "description": "Prompt. A string containing questions asked to the AI assistant.", + "x-example": "" } }, "required": [ - "databaseId", - "name" + "prompt" ] } } @@ -10291,21 +9968,21 @@ } } }, - "\/compute\/databases\/specifications": { + "\/console\/campaigns\/{campaignId}": { "get": { - "summary": "List dedicated database specifications.", - "operationId": "computeListDatabaseSpecifications", + "summary": "Get campaign details", + "operationId": "consoleGetCampaign", "tags": [ - "compute" + "console" ], - "description": "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.", + "description": "Receive the details of a campaign using its ID.", "responses": { - "200": { - "description": "SpecificationList", + "201": { + "description": "Campaign", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseSpecificationList" + "$ref": "#\/components\/schemas\/campaign" } } } @@ -10313,20 +9990,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseSpecifications", - "group": "databases", + "method": "getCampaign", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-database-specifications.md", + "demo": "console\/get-campaign.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "public", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-campaign.md", "auth": { "Project": [] } @@ -10335,24 +10013,36 @@ { "Project": [] } + ], + "parameters": [ + { + "name": "campaignId", + "description": "ID of the campaign", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } ] } }, - "\/compute\/databases\/{databaseId}": { + "\/console\/coupons\/{couponId}": { "get": { - "summary": "Get dedicated database.", - "operationId": "computeGetDatabase", + "summary": "Get coupon details", + "operationId": "consoleGetCoupon", "tags": [ - "compute" + "console" ], - "description": "Get a dedicated database by its unique ID. Returns the database configuration and current status.", + "description": "Get the details of a coupon using it's coupon ID.", "responses": { - "200": { - "description": "DedicatedDatabase", + "201": { + "description": "Coupon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/coupon" } } } @@ -10360,20 +10050,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDatabase", - "group": "databases", + "method": "getCoupon", + "group": null, "cookies": false, "type": "", - "demo": "compute\/get-database.md", - "rate-limit": 0, + "demo": "console\/get-coupon.md", + "rate-limit": 50, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "public", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-coupon.md", "auth": { "Project": [] } @@ -10385,31 +10076,33 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "couponId", + "description": "ID of the coupon", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } ] - }, - "patch": { - "summary": "Update dedicated database.", - "operationId": "computeUpdateDatabase", + } + }, + "\/console\/oauth2-providers": { + "get": { + "summary": "List OAuth2 providers", + "operationId": "consoleListOAuth2Providers", "tags": [ - "compute" + "console" ], - "description": "Update a dedicated database configuration. All changes are applied with zero downtime. Resource changes (cpu, memory) are handled via rolling cutover. Storage expansion is done online. All other settings are applied in-place.", + "description": "List all OAuth2 providers supported by the Appwrite server, along with the parameters required to configure each provider. The response excludes mock providers but includes sandbox providers.", "responses": { "200": { - "description": "DedicatedDatabase", + "description": "Console OAuth2 Providers List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/consoleOAuth2ProviderList" } } } @@ -10417,15 +10110,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateDatabase", - "group": "databases", + "method": "listOAuth2Providers", + "group": "console", "cookies": false, "type": "", - "demo": "compute\/update-database.md", + "demo": "console\/list-o-auth-2-providers.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "public", "platforms": [ "console" ], @@ -10439,264 +10132,46 @@ { "Project": [] } + ] + } + }, + "\/console\/plans": { + "get": { + "summary": "Get plans", + "operationId": "consoleGetPlans", + "tags": [ + "console" ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Database display name.", - "x-example": "", - "x-nullable": true - }, - "status": { - "type": "string", - "description": "Database status. Allowed values: ready, paused, inactive. Set to \"paused\" to pause, \"ready\" to resume (also recovers a failed database whose infrastructure is healthy), or \"inactive\" to spin down a shared-pool database.", - "x-example": "ready", - "x-nullable": true - }, - "specification": { - "type": "string", - "description": "Specification. Changes cpu, memory, and node pool based on specification config.", - "x-example": "", - "x-nullable": true - }, - "cpu": { - "type": "number", - "description": "CPU cores to allocate (125-16000).", - "x-example": 125, - "format": "float", - "x-nullable": true - }, - "memory": { - "type": "integer", - "description": "Memory in MB to allocate (128-65536).", - "x-example": 128, - "format": "int32", - "x-nullable": true - }, - "storage": { - "type": "integer", - "description": "Storage in GB to allocate (1-16384).", - "x-example": 1, - "format": "int32", - "x-nullable": true - }, - "storageClass": { - "type": "string", - "description": "Storage class. Allowed values: ssd.", - "x-example": "ssd", - "x-nullable": true - }, - "replicas": { - "type": "integer", - "description": "Number of high availability replicas (0-5). High availability is enabled when greater than 0.", - "x-example": 0, - "format": "int32", - "x-nullable": true - }, - "highAvailabilitySyncMode": { - "type": "string", - "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", - "x-example": "async", - "x-nullable": true - }, - "networkMaxConnections": { - "type": "integer", - "description": "Maximum concurrent connections.", - "x-example": 10, - "format": "int32", - "x-nullable": true - }, - "networkIdleTimeoutSeconds": { - "type": "integer", - "description": "Connection idle timeout in seconds (60-86400).", - "x-example": 60, - "format": "int32", - "x-nullable": true - }, - "networkIPAllowlist": { - "type": "array", - "description": "IP addresses\/CIDR ranges allowed to connect.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "idleTimeoutMinutes": { - "type": "integer", - "description": "Minutes before container scales to zero.", - "x-example": 5, - "format": "int32", - "x-nullable": true - }, - "backupEnabled": { - "type": "boolean", - "description": "Enable automatic backups.", - "x-example": false, - "x-nullable": true - }, - "backupPitr": { - "type": "boolean", - "description": "Enable point-in-time recovery.", - "x-example": false, - "x-nullable": true - }, - "backupCron": { - "type": "string", - "description": "Backup schedule in cron format.", - "x-example": null, - "x-nullable": true - }, - "backupRetentionDays": { - "type": "integer", - "description": "Days to retain backups.", - "x-example": 1, - "format": "int32", - "x-nullable": true - }, - "pitrRetentionDays": { - "type": "integer", - "description": "Days to retain PITR data.", - "x-example": 1, - "format": "int32", - "x-nullable": true - }, - "storageAutoscaling": { - "type": "boolean", - "description": "Enable automatic storage expansion when usage exceeds threshold.", - "x-example": false, - "x-nullable": true - }, - "storageAutoscalingThresholdPercent": { - "type": "integer", - "description": "Storage usage percentage (50-95) that triggers automatic expansion.", - "x-example": 50, - "format": "int32", - "x-nullable": true - }, - "storageAutoscalingMaxGb": { - "type": "integer", - "description": "Maximum storage size in GB for autoscaling. 0 means no limit.", - "x-example": 0, - "format": "int32", - "x-nullable": true - }, - "poolerEnabled": { - "type": "boolean", - "description": "Attach or detach the connection pooler sidecar. Set to true to add the sidecar (no-op if already attached) or false to remove it.", - "x-example": false, - "x-nullable": true - }, - "metricsEnabled": { - "type": "boolean", - "description": "Enable or disable the metrics-agent sidecar.", - "x-example": false, - "x-nullable": true - }, - "metricsTraceSampleRate": { - "type": "number", - "description": "Fraction of queries to trace (0.0\u20131.0). Forwarded to the sidecar.", - "x-example": null, - "format": "float", - "x-nullable": true - }, - "metricsSlowQueryLogThresholdMs": { - "type": "integer", - "description": "Threshold in ms above which queries are logged as slow. Forwarded to the sidecar.", - "x-example": 0, - "format": "int32", - "x-nullable": true - }, - "sqlApiEnabled": { - "type": "boolean", - "description": "Enable the SQL API sidecar for this database.", - "x-example": false, - "x-nullable": true - }, - "sqlApiAllowedStatements": { - "type": "array", - "description": "Statement types the SQL API accepts. Allowed values: SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, TRUNCATE, GRANT, REVOKE.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "sqlApiMaxRows": { - "type": "integer", - "description": "Maximum rows returned per SQL API execution (1-1000000).", - "x-example": 1, - "format": "int32", - "x-nullable": true - }, - "sqlApiMaxBytes": { - "type": "integer", - "description": "Maximum serialised SQL API result payload in bytes (1024-104857600).", - "x-example": 1024, - "format": "int32", - "x-nullable": true - }, - "sqlApiTimeoutSeconds": { - "type": "integer", - "description": "Per-call SQL API execution timeout in seconds (1-300).", - "x-example": 1, - "format": "int32", - "x-nullable": true - } + "description": "Return a list of all available plans.", + "responses": { + "200": { + "description": "Billing plan list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/billingPlanList" } } } } - } - }, - "delete": { - "summary": "Delete dedicated database.", - "operationId": "computeDeleteDatabase", - "tags": [ - "compute" - ], - "description": "Delete a dedicated database. This action is irreversible. The database status will be set to 'deleting' and all resources will be cleaned up. Deletion is allowed from any state, and repeating the call re-dispatches the cleanup.", - "responses": { - "204": { - "description": "No content" - } }, "deprecated": false, "x-appwrite": { - "method": "deleteDatabase", - "group": "databases", + "method": "getPlans", + "group": null, "cookies": false, "type": "", - "demo": "compute\/delete-database.md", + "demo": "console\/get-plans.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "projects.read", "platforms": [ "console" ], "packaging": false, "public": true, - "produces": [ - "application\/json" - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-plans.md", "auth": { "Project": [] } @@ -10708,33 +10183,43 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, + "name": "platform", + "description": "Platform type", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "appwrite", + "enum": [ + "appwrite", + "imagine" + ], + "x-enum-name": "Platform", + "x-enum-keys": [ + "appwrite", + "imagine" + ], + "default": "appwrite" }, - "in": "path" + "in": "query" } ] } }, - "\/compute\/databases\/{databaseId}\/backups": { + "\/console\/plans\/{planId}": { "get": { - "summary": "List database backups.", - "operationId": "computeListDatabaseBackups", + "summary": "Get plan", + "operationId": "consoleGetPlan", "tags": [ - "compute" + "console" ], - "description": "List all backups for a dedicated database. Results can be filtered by status and type.", + "description": "Get the details of a plan using its plan ID.", "responses": { "200": { - "description": "BackupList", + "description": "billingPlan", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupList" + "$ref": "#\/components\/schemas\/billingPlan" } } } @@ -10742,20 +10227,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseBackups", - "group": "databases", + "method": "getPlan", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-database-backups.md", + "demo": "console\/get-plan.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "projects.read", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-plan.md", "auth": { "Project": [] } @@ -10767,44 +10253,33 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "planId", + "description": "Plan id", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, type, databaseId", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" } ] - }, - "post": { - "summary": "Create a database backup.", - "operationId": "computeCreateDatabaseBackup", + } + }, + "\/console\/postgres-extensions": { + "get": { + "summary": "List Postgres extensions", + "operationId": "consoleListPostgresExtensions", "tags": [ - "compute" + "console" ], - "description": "Create a manual backup of a dedicated database. The backup will be created asynchronously and its status can be checked via the get backup endpoint.", + "description": "Get the catalog of Postgres extensions that can be installed on a dedicated Postgres database.\n", "responses": { - "202": { - "description": "Backup", + "200": { + "description": "Postgres extensions list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" + "$ref": "#\/components\/schemas\/postgresExtensionList" } } } @@ -10812,20 +10287,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDatabaseBackup", - "group": "databases", + "method": "listPostgresExtensions", + "group": null, "cookies": false, "type": "", - "demo": "compute\/create-database-backup.md", - "rate-limit": 0, + "demo": "console\/list-postgres-extensions.md", + "rate-limit": 100, "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "rate-key": "ip:{ip}", + "scope": "public", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/list-postgres-extensions.md", "auth": { "Project": [] } @@ -10834,53 +10310,24 @@ { "Project": [] } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Backup type: full or incremental.", - "default": "full", - "x-example": "full" - } - } - } - } - } - } + ] } }, - "\/compute\/databases\/{databaseId}\/backups\/policies": { + "\/console\/programs\/{programId}": { "get": { - "summary": "List database backup policies.", - "operationId": "computeListDatabaseBackupPolicies", + "summary": "Get program details", + "operationId": "consoleGetProgram", "tags": [ - "compute" + "console" ], - "description": "List scheduled backup policies for a dedicated database.", + "description": "Receive the details of a program using its ID.", "responses": { - "200": { - "description": "Backup policy list", + "201": { + "description": "Program", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/backupPolicyList" + "$ref": "#\/components\/schemas\/program" } } } @@ -10888,20 +10335,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseBackupPolicies", - "group": "databases", + "method": "getProgram", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-database-backup-policies.md", + "demo": "console\/get-program.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "teams.read", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-program.md", "auth": { "Project": [] } @@ -10913,44 +10361,33 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "programId", + "description": "ID of the program", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" } ] - }, + } + }, + "\/console\/programs\/{programId}\/memberships": { "post": { - "summary": "Create a database backup policy.", - "operationId": "computeCreateDatabaseBackupPolicy", + "summary": "Create program membership", + "operationId": "consoleCreateProgramMembership", "tags": [ - "compute" + "console" ], - "description": "Create a scheduled backup policy for a dedicated database.", + "description": "Create a new membership for an account to a program.", "responses": { - "201": { - "description": "backup", + "200": { + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/backupPolicy" + "$ref": "#\/components\/schemas\/organization" } } } @@ -10958,20 +10395,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDatabaseBackupPolicy", - "group": "databases", + "method": "createProgramMembership", + "group": null, "cookies": false, "type": "", - "demo": "compute\/create-database-backup-policy.md", - "rate-limit": 0, + "demo": "console\/create-program-membership.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "teams.write", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/create-program-membership.md", "auth": { "Project": [] } @@ -10983,86 +10421,33 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "programId", + "description": "ID of the program", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "policyId": { - "type": "string", - "description": "Policy 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.", - "x-example": "", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Policy name. Max length: 128 chars.", - "x-example": "" - }, - "schedule": { - "type": "string", - "description": "Schedule CRON syntax.", - "x-example": null - }, - "retention": { - "type": "integer", - "description": "Days to keep backups before deletion.", - "x-example": 1, - "format": "int32" - }, - "type": { - "type": "string", - "description": "Backup type: full or incremental.", - "default": "full", - "x-example": "full" - }, - "enabled": { - "type": "boolean", - "description": "Is policy enabled? When disabled, no backups will be taken.", - "default": true, - "x-example": false - } - }, - "required": [ - "policyId", - "name", - "schedule", - "retention" - ] - } - } - } - } + ] } }, - "\/compute\/databases\/{databaseId}\/backups\/storage": { - "put": { - "summary": "Update database backup storage.", - "operationId": "computeUpdateDatabaseBackupStorage", + "\/console\/regions": { + "get": { + "summary": "List Regions", + "operationId": "consoleListRegions", "tags": [ - "compute" + "console" ], - "description": "Configure off-cluster backup storage for a dedicated database. Supports S3, GCS, and Azure Blob Storage destinations. Backups will be stored to the configured destination in addition to on-cluster storage.", + "description": "Get all available regions for the console.", "responses": { "200": { - "description": "BackupStorageConfig", + "description": "Regions list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupStorage" + "$ref": "#\/components\/schemas\/consoleRegionList" } } } @@ -11070,20 +10455,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateDatabaseBackupStorage", - "group": "databases", + "method": "listRegions", + "group": null, "cookies": false, "type": "", - "demo": "compute\/update-database-backup-storage.md", + "demo": "console\/list-regions.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "projects.read", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/list-regions.md", "auth": { "Project": [] } @@ -11092,107 +10478,33 @@ { "Project": [] } + ] + } + }, + "\/console\/resources": { + "get": { + "summary": "Check resource ID availability", + "operationId": "consoleGetResource", + "tags": [ + "console" ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "description": "Storage provider for off-cluster backups. Allowed values: s3 (Amazon S3 or S3-compatible), gcs (Google Cloud Storage), azure (Azure Blob Storage).", - "x-example": "s3" - }, - "bucket": { - "type": "string", - "description": "Storage bucket or container name.", - "x-example": "" - }, - "region": { - "type": "string", - "description": "Storage region.", - "default": "", - "x-example": "" - }, - "prefix": { - "type": "string", - "description": "Object key prefix for backups.", - "default": "backups\/", - "x-example": "" - }, - "endpoint": { - "type": "string", - "description": "Custom endpoint for S3-compatible storage (e.g. MinIO).", - "default": "", - "x-example": "" - }, - "accessKey": { - "type": "string", - "description": "Access key or client ID for authentication.", - "x-example": "" - }, - "secretKey": { - "type": "string", - "description": "Secret key or service account JSON for authentication.", - "x-example": "" - } - }, - "required": [ - "provider", - "bucket", - "accessKey", - "secretKey" - ] - } - } - } - } - } - }, - "\/compute\/databases\/{databaseId}\/backups\/{backupId}": { - "get": { - "summary": "Get a database backup.", - "operationId": "computeGetDatabaseBackup", - "tags": [ - "compute" - ], - "description": "Get details of a specific database backup including its status, size, and timestamps.", + "description": "Check if a resource ID is available.", "responses": { - "200": { - "description": "Backup", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "getDatabaseBackup", - "group": "databases", + "method": "getResource", + "group": null, "cookies": false, "type": "", - "demo": "compute\/get-database-backup.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "demo": "console\/get-resource.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "userId:{userId}, url:{url}", + "scope": "rules.read", "platforms": [ "console" ], @@ -11209,58 +10521,71 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "value", + "description": "Resource value.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "path" + "in": "query" }, { - "name": "backupId", - "description": "Backup ID.", + "name": "type", + "description": "Resource type.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "rules", + "enum": [ + "rules" + ], + "x-enum-name": "ConsoleResourceType", + "x-enum-keys": [ + "rules" + ] }, - "in": "path" + "in": "query" } ] - }, - "delete": { - "summary": "Delete a database backup.", - "operationId": "computeDeleteDatabaseBackup", + } + }, + "\/console\/scopes\/organization": { + "get": { + "summary": "List organization scopes", + "operationId": "consoleListOrganizationScopes", "tags": [ - "compute" + "console" ], - "description": "Delete a database backup. This will permanently remove the backup from storage and cannot be undone.", + "description": "List all scopes available for organization API keys, along with a description for each scope.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Console Key Scopes List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/consoleKeyScopeList" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteDatabaseBackup", - "group": "databases", + "method": "listOrganizationScopes", + "group": "console", "cookies": false, "type": "", - "demo": "compute\/delete-database-backup.md", + "demo": "console\/list-organization-scopes.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "public", "platforms": [ "console" ], "packaging": false, "public": true, - "produces": [ - "application\/json" - ], "auth": { "Project": [] } @@ -11269,46 +10594,24 @@ { "Project": [] } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "backupId", - "description": "Backup ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } ] } }, - "\/compute\/databases\/{databaseId}\/branches": { + "\/console\/scopes\/project": { "get": { - "summary": "List database branches.", - "operationId": "computeListDatabaseBranches", + "summary": "List project scopes", + "operationId": "consoleListProjectScopes", "tags": [ - "compute" + "console" ], - "description": "List all ephemeral branches for a dedicated database. Returns branch metadata including ID, name, namespace, and expiration time.", + "description": "List all scopes available for project API keys, along with a description for each scope.", "responses": { "200": { - "description": "BranchList", + "description": "Console Key Scopes List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBranchList" + "$ref": "#\/components\/schemas\/consoleKeyScopeList" } } } @@ -11316,15 +10619,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseBranches", - "group": "databases", + "method": "listProjectScopes", + "group": "console", "cookies": false, "type": "", - "demo": "compute\/list-database-branches.md", + "demo": "console\/list-project-scopes.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "public", "platforms": [ "console" ], @@ -11338,34 +10641,24 @@ { "Project": [] } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } ] - }, + } + }, + "\/console\/sources": { "post": { - "summary": "Create a database branch.", - "operationId": "computeCreateDatabaseBranch", + "summary": "Create source", + "operationId": "consoleCreateSource", "tags": [ - "compute" + "console" ], - "description": "Create an ephemeral database branch from the primary via PVC snapshot. The branch is a full copy of the database at the current point in time, useful for testing schema migrations or running experiments without affecting production data. Branches expire after the configured TTL (default 24 hours). The branch is created asynchronously.", + "description": "Create a new source.", "responses": { - "202": { - "description": "DedicatedDatabase", + "201": { + "description": "Any", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/any" } } } @@ -11373,20 +10666,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDatabaseBranch", - "group": "databases", + "method": "createSource", + "group": null, "cookies": false, "type": "", - "demo": "compute\/create-database-branch.md", - "rate-limit": 0, + "demo": "console\/create-source.md", + "rate-limit": 50, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "public", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/create-source.md", "auth": { "Project": [] } @@ -11396,39 +10690,42 @@ "Project": [] } ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "branchId": { + "ref": { "type": "string", - "description": "Branch 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.", - "default": "", - "x-example": "", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Ref param", + "x-example": "", + "x-nullable": true }, - "ttl": { - "type": "integer", - "description": "Time-to-live in seconds before the branch expires. Min 300 (5 min), max 604800 (7 days). Default: 86400 (24h).", - "default": 86400, - "x-example": 300, - "format": "int32" + "referrer": { + "type": "string", + "description": "Referrer", + "x-example": "https:\/\/example.com", + "format": "url", + "x-nullable": true + }, + "utmSource": { + "type": "string", + "description": "Utm source", + "x-example": "", + "x-nullable": true + }, + "utmCampaign": { + "type": "string", + "description": "Utm campaign", + "x-example": "", + "x-nullable": true + }, + "utmMedium": { + "type": "string", + "description": "Utm medium", + "x-example": "", + "x-nullable": true } } } @@ -11437,21 +10734,21 @@ } } }, - "\/compute\/databases\/{databaseId}\/branches\/{branchId}": { - "delete": { - "summary": "Delete a database branch.", - "operationId": "computeDeleteDatabaseBranch", + "\/console\/suggestions\/columns": { + "get": { + "summary": "Get column suggestions with size limits for a table, using database context and an optional user provided context", + "operationId": "consoleSuggestColumns", "tags": [ - "compute" + "console" ], - "description": "Delete an ephemeral database branch. This removes the branch namespace, its PVC, and the associated VolumeSnapshot. The deletion runs asynchronously and is irreversible.", + "description": "Suggests column names and their size limits based on the provided table name. The API will also analyze other tables in the same database to provide context-aware suggestions, ensuring consistency across schema design. Users may optionally provide custom context to further refine the suggestions.", "responses": { - "202": { - "description": "DedicatedDatabase", + "200": { + "description": "Columns List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/columnList" } } } @@ -11459,20 +10756,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteDatabaseBranch", - "group": "databases", + "method": "suggestColumns", + "group": null, "cookies": false, "type": "", - "demo": "compute\/delete-database-branch.md", - "rate-limit": 0, + "demo": "console\/suggest-columns.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/suggest-columns.md", "auth": { "Project": [] } @@ -11491,36 +10789,70 @@ "type": "string", "x-example": "" }, - "in": "path" + "in": "query" }, { - "name": "branchId", - "description": "Branch ID.", + "name": "tableId", + "description": "Table ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "path" + "in": "query" + }, + { + "name": "context", + "description": "Optional user provided context to refine suggestions.", + "required": false, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "query" + }, + { + "name": "min", + "description": "Minimum number of suggestions to generate.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 3 + }, + "in": "query" + }, + { + "name": "max", + "description": "Maximum number of suggestions to generate.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 7 + }, + "in": "query" } ] } }, - "\/compute\/databases\/{databaseId}\/connections": { + "\/console\/suggestions\/indexes": { "get": { - "summary": "List database connections.", - "operationId": "computeListDatabaseConnections", + "summary": "Get index suggestions for table columns, using database context", + "operationId": "consoleSuggestIndexes", "tags": [ - "compute" + "console" ], - "description": "List all database connection users\/roles for a dedicated database.", + "description": "Suggests database indexes for table columns based on the provided table structure and existing columns. The API will also analyze the table's column types, names, and patterns to recommend optimal indexes that improve query performance for common database operations like filtering, sorting, and searching.", "responses": { "200": { - "description": "Dedicated database connections list", + "description": "Column Indexes List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseConnectionList" + "$ref": "#\/components\/schemas\/columnIndexList" } } } @@ -11528,12 +10860,12 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseConnections", - "group": "databases", + "method": "suggestIndexes", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-database-connections.md", - "rate-limit": 0, + "demo": "console\/suggest-indexes.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "databases.read", @@ -11542,6 +10874,7 @@ ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/suggest-indexes.md", "auth": { "Project": [] } @@ -11560,173 +10893,60 @@ "type": "string", "x-example": "" }, - "in": "path" - } - ] - }, - "post": { - "summary": "Create a database connection user.", - "operationId": "computeCreateDatabaseConnection", - "tags": [ - "compute" - ], - "description": "Create a new database connection user\/role. Returns the connection details including the generated credentials.", - "responses": { - "201": { - "description": "Connection", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseConnection" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createDatabaseConnection", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/create-database-connection.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ + "in": "query" + }, { - "name": "databaseId", - "description": "Database ID.", + "name": "tableId", + "description": "Table ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "username": { - "type": "string", - "description": "Connection username.", - "x-example": "" - }, - "role": { - "type": "string", - "description": "Connection role for the new user. Common values: readonly (read-only access), readwrite (full read and write access).", - "default": "readwrite", - "x-example": "" - } - }, - "required": [ - "username" - ] - } - } - } - } - } - }, - "\/compute\/databases\/{databaseId}\/connections\/{connectionId}": { - "delete": { - "summary": "Delete a database connection.", - "operationId": "computeDeleteDatabaseConnection", - "tags": [ - "compute" - ], - "description": "Delete a database connection user\/role. The connection will be terminated immediately.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteDatabaseConnection", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/delete-database-connection.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "produces": [ - "application\/json" - ], - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ + "in": "query" + }, { - "name": "databaseId", - "description": "Database ID.", - "required": true, + "name": "min", + "description": "Minimum number of suggestions to generate.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 1 }, - "in": "path" + "in": "query" }, { - "name": "connectionId", - "description": "Connection ID.", - "required": true, + "name": "max", + "description": "Maximum number of suggestions to generate.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 4 }, - "in": "path" + "in": "query" } ] } }, - "\/compute\/databases\/{databaseId}\/credentials": { + "\/console\/suggestions\/queries": { "get": { - "summary": "Get database credentials.", - "operationId": "computeGetDatabaseCredentials", + "summary": "Get query suggestions for a list resource from free-text intent", + "operationId": "consoleSuggestQueries", "tags": [ - "compute" + "console" ], - "description": "Get connection credentials for a dedicated database. Returns the hostname, port, username, password, database name, and full connection string.", + "description": "Suggest valid Appwrite query JSON objects for a supported list resource from free-text user intent. The endpoint picks a validator based on `resource` \u2014 for system resources it uses the static validator and its allowed attributes, and for user-owned table rows it loads the table schema and validates against those attributes at request time. The returned queries are guaranteed to parse and pass the relevant queries validator.\n", "responses": { "200": { - "description": "Credentials", + "description": "Any", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" + "$ref": "#\/components\/schemas\/any" } } } @@ -11734,12 +10954,12 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDatabaseCredentials", - "group": "databases", + "method": "suggestQueries", + "group": null, "cookies": false, "type": "", - "demo": "compute\/get-database-credentials.md", - "rate-limit": 0, + "demo": "console\/suggest-queries.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "databases.read", @@ -11748,6 +10968,7 @@ ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/suggest-queries.md", "auth": { "Project": [] } @@ -11759,266 +10980,238 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "resource", + "description": "Resource to generate queries for.", "required": true, "schema": { "type": "string", - "x-example": "" - }, - "in": "path" - } - ] - }, - "patch": { - "summary": "Update database credentials.", - "operationId": "computeUpdateDatabaseCredentials", - "tags": [ - "compute" - ], - "description": "Rotate the primary credentials for a dedicated database. Generates a new password and updates the database. Previous credentials will stop working immediately.", - "responses": { - "200": { - "description": "Credentials", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "updateDatabaseCredentials", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/update-database-credentials.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ + "x-example": "activities", + "enum": [ + "activities", + "activityevents", + "archives", + "credits", + "dnsrecords", + "domains", + "invoices", + "paymentmethods", + "policies", + "projects", + "restorations", + "teamaggregations", + "teams", + "databases", + "tables", + "rows", + "schedules", + "platforms", + "keys", + "devkeys", + "webhooks", + "certificates", + "realtime", + "rules", + "installations", + "repositories", + "vcscomments", + "vcscommentlocks", + "reports", + "insights", + "users", + "cache", + "tokens", + "authenticators", + "challenges", + "sessions", + "identities", + "memberships", + "buckets", + "providers", + "messages", + "topics", + "subscribers", + "targets", + "presencelogs", + "companies", + "billingaddresses", + "billingaggregations", + "billingaggregationresources", + "billingteamprojectaggregations", + "billingteamaggregations_v2", + "billingteamaggregationresources", + "billinginvoices_v2", + "billingaddons", + "alerts", + "payments", + "billingdiscounts", + "sources", + "deals", + "blocks", + "threats", + "feedbacks", + "disputes", + "sh_installations", + "apps", + "appsecrets", + "oauth2grants", + "attributes", + "indexes", + "functions", + "sites", + "deployments", + "executions", + "variables", + "migrations", + "resourcetokens", + "transactions", + "transactionlogs", + "stats", + "dedicateddatabases", + "dedicateddatabaseconfigs", + "dedicateddatabaseruntimes", + "dedicateddatabaseoperations", + "dedicateddatabasebackups", + "dedicateddatabaserestorations" + ], + "x-enum-name": "QuerySuggestionResource", + "x-enum-keys": [ + "activities", + "activity_events", + "archives", + "credits", + "dns_records", + "domains", + "invoices", + "payment_methods", + "policies", + "projects", + "restorations", + "team_aggregations", + "teams", + "databases", + "tables", + "rows", + "schedules", + "platforms", + "keys", + "dev_keys", + "webhooks", + "certificates", + "realtime", + "rules", + "installations", + "repositories", + "vcs_comments", + "vcs_comment_locks", + "reports", + "insights", + "users", + "cache", + "tokens", + "authenticators", + "challenges", + "sessions", + "identities", + "memberships", + "buckets", + "providers", + "messages", + "topics", + "subscribers", + "targets", + "presence_logs", + "companies", + "billing_addresses", + "billing_aggregations", + "billing_aggregation_resources", + "billing_team_project_aggregations", + "billing_team_aggregations_v2", + "billing_team_aggregation_resources", + "billing_invoices_v2", + "billing_addons", + "alerts", + "payments", + "billing_discounts", + "sources", + "deals", + "blocks", + "threats", + "feedbacks", + "disputes", + "sh_installations", + "apps", + "app_secrets", + "oauth2_grants", + "attributes", + "indexes", + "functions", + "sites", + "deployments", + "executions", + "variables", + "migrations", + "resource_tokens", + "transactions", + "transaction_logs", + "stats", + "dedicated_databases", + "dedicated_database_configs", + "dedicated_database_runtimes", + "dedicated_database_operations", + "dedicated_database_backups", + "dedicated_database_restorations" + ] + }, + "in": "query" + }, { - "name": "databaseId", - "description": "Database ID.", + "name": "input", + "description": "Natural language query intent used to generate filters\/sorting\/pagination.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "path" - } - ] - } - }, - "\/compute\/databases\/{databaseId}\/executions": { - "post": { - "summary": "Execute a SQL statement against a dedicated database.", - "operationId": "computeCreateDatabaseExecution", - "tags": [ - "compute" - ], - "description": "Execute SQL through the console-facing Cloud endpoint. Cloud proxies through the edge platform to the per-database SQL API sidecar. Application traffic should bypass cloud entirely and POST directly to the per-database hostname: `https:\/\/db-{project}-{db}.{region}.appwrite.center\/v1\/sql\/executions` with an `X-Appwrite-Key` header \u2014 that path scales to the whole DB fleet without a per-query cloud round-trip. The statement type must be on the database's configured allow-list. Use bound parameters for any user-supplied values \u2014 the API does not interpolate raw strings.", - "responses": { - "200": { - "description": "Execution", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseExecution" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createDatabaseExecution", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/create-database-execution.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ + "in": "query" + }, { "name": "databaseId", - "description": "Database ID.", - "required": true, + "description": "Database ID. Required when resource is `tables` or `rows`.", + "required": false, "schema": { "type": "string", "x-example": "" }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "sql": { - "type": "string", - "description": "SQL statement to execute. Exactly one statement per request.", - "x-example": "" - }, - "bindings": { - "type": "object", - "description": "Optional bound parameters. Pass either a positional list or a name => value map matching the placeholder style used in the SQL.", - "default": {}, - "x-example": "{}", - "x-nullable": true - }, - "timeoutSeconds": { - "type": "integer", - "description": "Per-call execution timeout override. Must be less than or equal to the database's configured sqlApiTimeoutSeconds.", - "x-example": 1, - "format": "int32", - "x-nullable": true - } - }, - "required": [ - "sql" - ] - } - } - } - } - } - }, - "\/compute\/databases\/{databaseId}\/explanation": { - "post": { - "summary": "Explain query execution plan.", - "operationId": "computeCreateDatabaseQueryExplanation", - "tags": [ - "compute" - ], - "description": "Run EXPLAIN on a query against a dedicated database. Available for SQL-compatible engines. Returns the query execution plan including scan types, estimated cost, and resource usage. Optionally run EXPLAIN ANALYZE to get actual execution statistics.", - "responses": { - "200": { - "description": "QueryExplanation", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseQueryExplanation" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createDatabaseQueryExplanation", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/create-database-query-explanation.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ + "in": "query" + }, { - "name": "databaseId", - "description": "Database ID.", - "required": true, + "name": "tableId", + "description": "Table ID. Required when resource is `rows`.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "Query to explain. Must be a valid query for the database engine.", - "x-example": "" - }, - "analyze": { - "type": "boolean", - "description": "Run EXPLAIN ANALYZE to get actual execution statistics. This executes the query.", - "default": false, - "x-example": false - } - }, - "required": [ - "query" - ] - } - } + "in": "query" } - } + ] } }, - "\/compute\/databases\/{databaseId}\/extensions": { + "\/console\/templates\/email\/{templateId}": { "get": { - "summary": "List database extensions.", - "operationId": "computeListDatabaseExtensions", + "summary": "Get email template", + "operationId": "consoleGetEmailTemplate", "tags": [ - "compute" + "console" ], - "description": "List installed and available extensions for a PostgreSQL database.", + "description": "Get the Appwrite built-in default email template for the specified type and locale. Always returns the unmodified default, ignoring any custom project overrides.", "responses": { "200": { - "description": "Extensions", + "description": "EmailTemplate", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseExtensions" + "$ref": "#\/components\/schemas\/emailTemplate" } } } @@ -12026,15 +11219,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseExtensions", - "group": "databases", + "method": "getEmailTemplate", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-database-extensions.md", + "demo": "console\/get-email-template.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "public", "platforms": [ "console" ], @@ -12051,109 +11244,329 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "templateId", + "description": "Email template type. Can be one of: verification, magicSession, recovery, invitation, mfaChallenge, sessionAlert, otpSession", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "verification", + "enum": [ + "verification", + "magicSession", + "recovery", + "invitation", + "mfaChallenge", + "sessionAlert", + "otpSession" + ], + "x-enum-name": "ProjectEmailTemplateId", + "x-enum-keys": [ + "verification", + "magicSession", + "recovery", + "invitation", + "mfaChallenge", + "sessionAlert", + "otpSession" + ] }, "in": "path" - } - ] - }, - "post": { - "summary": "Install a database extension.", - "operationId": "computeCreateDatabaseExtension", - "tags": [ - "compute" - ], - "description": "Install a database extension. Only available for PostgreSQL databases. The install runs asynchronously; poll the extensions list endpoint for status.", - "responses": { - "202": { - "description": "DedicatedDatabase", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createDatabaseExtension", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/create-database-extension.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ + }, { - "name": "databaseId", - "description": "Database ID.", - "required": true, + "name": "locale", + "description": "Template locale. If left empty, the fallback locale (en) will be used.", + "required": false, "schema": { "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Extension name (e.g., pgvector, postgis, uuid-ossp).", - "x-example": "" - } - }, - "required": [ - "name" - ] - } - } - } - } - } - }, - "\/compute\/databases\/{databaseId}\/extensions\/{extensionName}": { - "delete": { - "summary": "Uninstall a database extension.", - "operationId": "computeDeleteDatabaseExtension", + "x-example": "af", + "enum": [ + "af", + "ar-ae", + "ar-bh", + "ar-dz", + "ar-eg", + "ar-iq", + "ar-jo", + "ar-kw", + "ar-lb", + "ar-ly", + "ar-ma", + "ar-om", + "ar-qa", + "ar-sa", + "ar-sy", + "ar-tn", + "ar-ye", + "as", + "az", + "be", + "bg", + "bh", + "bn", + "bs", + "ca", + "cs", + "cy", + "da", + "de", + "de-at", + "de-ch", + "de-li", + "de-lu", + "el", + "en", + "en-au", + "en-bz", + "en-ca", + "en-gb", + "en-ie", + "en-jm", + "en-nz", + "en-tt", + "en-us", + "en-za", + "eo", + "es", + "es-ar", + "es-bo", + "es-cl", + "es-co", + "es-cr", + "es-do", + "es-ec", + "es-gt", + "es-hn", + "es-mx", + "es-ni", + "es-pa", + "es-pe", + "es-pr", + "es-py", + "es-sv", + "es-uy", + "es-ve", + "et", + "eu", + "fa", + "fi", + "fo", + "fr", + "fr-be", + "fr-ca", + "fr-ch", + "fr-lu", + "ga", + "gd", + "he", + "hi", + "hr", + "hu", + "id", + "is", + "it", + "it-ch", + "ja", + "ji", + "ko", + "ku", + "lt", + "lv", + "mk", + "ml", + "ms", + "mt", + "nb", + "ne", + "nl", + "nl-be", + "nn", + "no", + "pa", + "pl", + "pt", + "pt-br", + "rm", + "ro", + "ro-md", + "ru", + "ru-md", + "sb", + "sk", + "sl", + "sq", + "sr", + "sv", + "sv-fi", + "th", + "tn", + "tr", + "ts", + "ua", + "ur", + "ve", + "vi", + "xh", + "zh-cn", + "zh-hk", + "zh-sg", + "zh-tw", + "zu" + ], + "x-enum-name": "ProjectEmailTemplateLocale", + "x-enum-keys": [ + "af", + "ar-ae", + "ar-bh", + "ar-dz", + "ar-eg", + "ar-iq", + "ar-jo", + "ar-kw", + "ar-lb", + "ar-ly", + "ar-ma", + "ar-om", + "ar-qa", + "ar-sa", + "ar-sy", + "ar-tn", + "ar-ye", + "as", + "az", + "be", + "bg", + "bh", + "bn", + "bs", + "ca", + "cs", + "cy", + "da", + "de", + "de-at", + "de-ch", + "de-li", + "de-lu", + "el", + "en", + "en-au", + "en-bz", + "en-ca", + "en-gb", + "en-ie", + "en-jm", + "en-nz", + "en-tt", + "en-us", + "en-za", + "eo", + "es", + "es-ar", + "es-bo", + "es-cl", + "es-co", + "es-cr", + "es-do", + "es-ec", + "es-gt", + "es-hn", + "es-mx", + "es-ni", + "es-pa", + "es-pe", + "es-pr", + "es-py", + "es-sv", + "es-uy", + "es-ve", + "et", + "eu", + "fa", + "fi", + "fo", + "fr", + "fr-be", + "fr-ca", + "fr-ch", + "fr-lu", + "ga", + "gd", + "he", + "hi", + "hr", + "hu", + "id", + "is", + "it", + "it-ch", + "ja", + "ji", + "ko", + "ku", + "lt", + "lv", + "mk", + "ml", + "ms", + "mt", + "nb", + "ne", + "nl", + "nl-be", + "nn", + "no", + "pa", + "pl", + "pt", + "pt-br", + "rm", + "ro", + "ro-md", + "ru", + "ru-md", + "sb", + "sk", + "sl", + "sq", + "sr", + "sv", + "sv-fi", + "th", + "tn", + "tr", + "ts", + "ua", + "ur", + "ve", + "vi", + "xh", + "zh-cn", + "zh-hk", + "zh-sg", + "zh-tw", + "zu" + ] + }, + "in": "query" + } + ] + } + }, + "\/console\/variables": { + "get": { + "summary": "Get variables", + "operationId": "consoleVariables", "tags": [ - "compute" + "console" ], - "description": "Uninstall a database extension from a PostgreSQL database. The uninstall runs asynchronously; poll the extensions list endpoint for status.", + "description": "Get all Environment Variables that are relevant for the console.", "responses": { - "202": { - "description": "DedicatedDatabase", + "200": { + "description": "Console Variables", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/consoleVariables" } } } @@ -12161,15 +11574,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteDatabaseExtension", - "group": "databases", + "method": "variables", + "group": "console", "cookies": false, "type": "", - "demo": "compute\/delete-database-extension.md", + "demo": "console\/variables.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "projects.read", "platforms": [ "console" ], @@ -12183,145 +11596,209 @@ { "Project": [] } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "extensionName", - "description": "Extension name to uninstall.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } ] } }, - "\/compute\/databases\/{databaseId}\/ha": { + "\/databases": { "get": { - "summary": "Get HA status.", - "operationId": "computeGetDatabaseHAStatus", + "summary": "List databases", + "operationId": "databasesList", "tags": [ - "compute" + "databases" ], - "description": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", + "description": "Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.", "responses": { "200": { - "description": "HAStatus", + "description": "Databases List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseHAStatus" + "$ref": "#\/components\/schemas\/databaseList" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDatabaseHAStatus", + "method": "list", "group": "databases", "cookies": false, "type": "", - "demo": "compute\/get-database-ha-status.md", + "demo": "databases\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "databases.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.list" + }, + "methods": [ + { + "name": "list", + "namespace": "databases", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "queries", + "search", + "total" + ], + "required": [], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/databaseList" + } + ], + "description": "Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.", + "demo": "databases\/list.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.list" + } + } + ], "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "" }, - "in": "path" + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" } ] - } - }, - "\/compute\/databases\/{databaseId}\/ha\/failovers": { + }, "post": { - "summary": "Trigger manual failover.", - "operationId": "computeCreateDatabaseFailover", + "summary": "Create database", + "operationId": "databasesCreate", "tags": [ - "compute" + "databases" ], - "description": "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.", + "description": "Create a new Database.\n", "responses": { - "202": { - "description": "DedicatedDatabase", + "201": { + "description": "Database", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/database" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseFailover", + "method": "create", "group": "databases", "cookies": false, "type": "", - "demo": "compute\/create-database-failover.md", + "demo": "databases\/create.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "databases.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.create" + }, + "methods": [ + { + "name": "create", + "namespace": "databases", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "name", + "enabled" + ], + "required": [ + "databaseId", + "name" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/database" + } + ], + "description": "Create a new Database.\n", + "demo": "databases\/create.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.create" + } + } + ], "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "Project": [], + "Key": [] } ], "requestBody": { @@ -12330,159 +11807,159 @@ "schema": { "type": "object", "properties": { - "targetReplicaId": { + "databaseId": { "type": "string", - "description": "Target replica ID to promote. If not specified, the healthiest replica is selected.", - "x-example": "", - "x-nullable": true + "description": "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.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Database name. Max length: 128 chars.", + "x-example": "" + }, + "enabled": { + "type": "boolean", + "description": "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.", + "default": true, + "x-example": false } - } + }, + "required": [ + "databaseId", + "name" + ] } } } } } }, - "\/compute\/databases\/{databaseId}\/maintenance": { - "patch": { - "summary": "Update database maintenance window.", - "operationId": "computeUpdateDatabaseMaintenanceWindow", + "\/databases\/transactions": { + "get": { + "summary": "List transactions", + "operationId": "databasesListTransactions", "tags": [ - "compute" + "databases" ], - "description": "Update the maintenance window for a dedicated database. Maintenance operations like minor version upgrades will be performed during this window.", + "description": "List transactions across all databases.", "responses": { "200": { - "description": "DedicatedDatabase", + "description": "Transaction List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/transactionList" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "updateDatabaseMaintenanceWindow", - "group": "databases", + "method": "listTransactions", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/update-database-maintenance-window.md", + "demo": "databases\/list-transactions.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "rows.read", "platforms": [ - "console" + "console", + "server", + "client" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-transactions.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.listTransactions" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries).", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "day": { - "type": "string", - "description": "Day of the week for the maintenance window. Allowed values: sun, mon, tue, wed, thu, fri, sat.", - "x-example": "sun" - }, - "hourUtc": { - "type": "integer", - "description": "Hour in UTC (0-23) for maintenance window start.", - "x-example": 0, - "format": "int32" - } - }, - "required": [ - "day", - "hourUtc" - ] - } - } + "in": "query" } - } - } - }, - "\/compute\/databases\/{databaseId}\/migrations": { + ] + }, "post": { - "summary": "Migrate database between shared and dedicated.", - "operationId": "computeCreateDatabaseMigration", + "summary": "Create transaction", + "operationId": "databasesCreateTransaction", "tags": [ - "compute" + "databases" ], - "description": "Migrate a database between shared and dedicated types. Shared to dedicated provisions an always-on dedicated instance; dedicated to shared converts to a serverless instance that scales to zero when idle. Data is copied to the target with a brief read-only window during cutover.", + "description": "Create a new transaction.", "responses": { - "200": { - "description": "DedicatedDatabase", + "201": { + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseMigration", - "group": "databases", + "method": "createTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/create-database-migration.md", + "demo": "databases\/create-transaction.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "documents.write", "platforms": [ - "console" + "console", + "server", + "client" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-transaction.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createTransaction" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "Project": [], + "Key": [], + "Session": [], + "JWT": [] } ], "requestBody": { @@ -12491,196 +11968,150 @@ "schema": { "type": "object", "properties": { - "targetType": { - "type": "string", - "description": "Target database type to migrate to. Allowed values: shared (serverless, scales to zero when idle), dedicated (always-on with persistent resources).", - "x-example": "shared" - }, - "specification": { - "type": "string", - "description": "Target compute specification to provision when migrating to dedicated. Ignored for shared. Defaults to the database's current specification.", - "x-example": "", - "x-nullable": true + "ttl": { + "type": "integer", + "description": "Seconds before the transaction expires.", + "default": 300, + "x-example": 60, + "format": "int32" } - }, - "required": [ - "targetType" - ] - } - } - } - } - } - }, - "\/compute\/databases\/{databaseId}\/pitr": { - "get": { - "summary": "Get PITR recovery windows.", - "operationId": "computeGetDatabasePITRWindows", - "tags": [ - "compute" - ], - "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", - "responses": { - "200": { - "description": "PITRWindows", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" } } } } - }, - "deprecated": false, - "x-appwrite": { - "method": "getDatabasePITRWindows", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/get-database-pitr-windows.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ] + } } }, - "\/compute\/databases\/{databaseId}\/pooler": { + "\/databases\/transactions\/{transactionId}": { "get": { - "summary": "Get connection pooler configuration.", - "operationId": "computeGetDatabasePooler", + "summary": "Get transaction", + "operationId": "databasesGetTransaction", "tags": [ - "compute" + "databases" ], - "description": "Get the connection pooler configuration for a dedicated database. Returns pooler mode, max connections, and pool size settings.", + "description": "Get a transaction by its unique ID.", "responses": { "200": { - "description": "PoolerConfig", + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDatabasePooler", - "group": "databases", + "method": "getTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/get-database-pooler.md", + "demo": "databases\/get-transaction.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "rows.read", "platforms": [ - "console" + "console", + "server", + "client" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-transaction.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.getTransaction" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "transactionId", + "description": "Transaction ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } ] }, "patch": { - "summary": "Update connection pooler configuration.", - "operationId": "computeUpdateDatabasePooler", + "summary": "Update transaction", + "operationId": "databasesUpdateTransaction", "tags": [ - "compute" + "databases" ], - "description": "Update the connection pooler configuration for a dedicated database. Configure pool mode, max connections, and pool sizes.", + "description": "Update a transaction, to either commit or roll back its operations.", "responses": { "200": { - "description": "PoolerConfig", + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "updateDatabasePooler", - "group": "databases", + "method": "updateTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/update-database-pooler.md", + "demo": "databases\/update-transaction.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "documents.write", "platforms": [ - "console" + "console", + "server", + "client" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-transaction.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateTransaction" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "transactionId", + "description": "Transaction ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } @@ -12691,217 +12122,148 @@ "schema": { "type": "object", "properties": { - "mode": { - "type": "string", - "description": "Connection pool mode. Allowed values: transaction, session. Transaction mode returns connections to the pool after each transaction; session mode holds connections for the entire session lifetime.", - "x-example": "transaction", - "x-nullable": true - }, - "maxConnections": { - "type": "integer", - "description": "Maximum pooled connections.", - "x-example": 10, - "format": "int32", - "x-nullable": true - }, - "defaultPoolSize": { - "type": "integer", - "description": "Default pool size per user.", - "x-example": 1, - "format": "int32", - "x-nullable": true - }, - "readWriteSplitting": { + "commit": { "type": "boolean", - "description": "Route SELECTs to HA replicas, writes and locked reads to the primary. Defaults to true when HA is enabled.", - "x-example": false, - "x-nullable": true - }, - "poolerCpuRequest": { - "type": "string", - "description": "Pooler sidecar CPU request override (Kubernetes quantity, e.g. \"250m\" or \"1\"). Leave null for the proportional default (5% of DB CPU, floor 100m).", - "x-example": "", - "x-nullable": true - }, - "poolerCpuLimit": { - "type": "string", - "description": "Pooler sidecar CPU limit override (Kubernetes quantity, e.g. \"500m\" or \"1\"). Leave null for the proportional default (10% of DB CPU, floor 200m). Changing this field rolls the database pod.", - "x-example": "", - "x-nullable": true - }, - "poolerMemoryRequest": { - "type": "string", - "description": "Pooler sidecar memory request override (Kubernetes quantity, e.g. \"128Mi\" or \"1Gi\"). Leave null for the proportional default (7.5% of DB memory, floor 64Mi).", - "x-example": "", - "x-nullable": true + "description": "Commit transaction?", + "default": false, + "x-example": false }, - "poolerMemoryLimit": { - "type": "string", - "description": "Pooler sidecar memory limit override (Kubernetes quantity, e.g. \"256Mi\" or \"1Gi\"). Leave null for the proportional default (15% of DB memory, floor 128Mi). Changing this field rolls the database pod.", - "x-example": "", - "x-nullable": true + "rollback": { + "type": "boolean", + "description": "Rollback transaction?", + "default": false, + "x-example": false } } } } } } - } - }, - "\/compute\/databases\/{databaseId}\/restorations": { - "get": { - "summary": "List database restorations.", - "operationId": "computeListDatabaseRestorations", + }, + "delete": { + "summary": "Delete transaction", + "operationId": "databasesDeleteTransaction", "tags": [ - "compute" + "databases" ], - "description": "List all restorations for a dedicated database. Results can be filtered by status and type.", + "description": "Delete a transaction by its unique ID.", "responses": { - "200": { - "description": "Dedicated database restorations list", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseRestorationList" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listDatabaseRestorations", - "group": "databases", + "method": "deleteTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/list-database-restorations.md", + "demo": "databases\/delete-transaction.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "documents.write", "platforms": [ - "console" + "console", + "server", + "client" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-transaction.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.deleteTransaction" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "transactionId", + "description": "Transaction ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, - { - "name": "status", - "description": "Filter by restoration status.", - "required": false, - "schema": { - "type": "string", - "x-example": "pending" - }, - "in": "query" - }, - { - "name": "type", - "description": "Filter by restoration type.", - "required": false, - "schema": { - "type": "string", - "x-example": "backup" - }, - "in": "query" - }, - { - "name": "limit", - "description": "Maximum number of restorations to return.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "x-example": 1, - "default": 25 - }, - "in": "query" - }, - { - "name": "offset", - "description": "Number of restorations to skip.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "x-example": 0, - "default": 0 - }, - "in": "query" } ] - }, + } + }, + "\/databases\/transactions\/{transactionId}\/operations": { "post": { - "summary": "Create a database restoration.", - "operationId": "computeCreateDatabaseRestoration", + "summary": "Create operations", + "operationId": "databasesCreateOperations", "tags": [ - "compute" + "databases" ], - "description": "Restore a database from a backup or to a specific point in time (PITR). For backup restoration, provide a backupId. For PITR, provide a targetTime. PITR requires the database to have PITR enabled and is only available for enterprise databases.", + "description": "Create multiple operations in a single transaction.", "responses": { - "202": { - "description": "Restoration", + "201": { + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseRestoration", - "group": "databases", + "method": "createOperations", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/create-database-restoration.md", + "demo": "databases\/create-operations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "documents.write", "platforms": [ - "console" + "console", + "server", + "client" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-operations.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createOperations" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "transactionId", + "description": "Transaction ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } @@ -12912,24 +12274,14 @@ "schema": { "type": "object", "properties": { - "type": { - "type": "string", - "description": "Restoration type. Allowed values: backup, pitr. Use \"backup\" to restore from a specific backup, or \"pitr\" for point-in-time recovery.", - "default": "backup", - "x-example": "backup" - }, - "backupId": { - "type": "string", - "description": "Backup ID to restore from (required for backup type).", - "x-example": "", - "x-nullable": true - }, - "targetTime": { - "type": "integer", - "description": "Target time for PITR as Unix timestamp (required for pitr type).", - "x-example": null, - "format": "int32", - "x-nullable": true + "operations": { + "type": "array", + "description": "Array of staged operations.", + "default": [], + "x-example": "[\n\t {\n\t \"action\": \"create\",\n\t \"databaseId\": \"\",\n\t \"collectionId\": \"\",\n\t \"documentId\": \"\",\n\t \"data\": {\n\t \"name\": \"Walter O'Brien\"\n\t }\n\t }\n\t]", + "items": { + "type": "object" + } } } } @@ -12938,111 +12290,74 @@ } } }, - "\/compute\/databases\/{databaseId}\/restorations\/{restorationId}": { + "\/databases\/usage": { "get": { - "summary": "Get a database restoration.", - "operationId": "computeGetDatabaseRestoration", + "summary": "Get databases usage stats", + "operationId": "databasesListUsage", "tags": [ - "compute" + "databases" ], - "description": "Get details of a specific database restoration including its status, type, and timestamps.", + "description": "List usage metrics and statistics for all databases in the project. You can view the total number of databases, collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", "responses": { "200": { - "description": "Restoration", + "description": "UsageDatabases", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" + "$ref": "#\/components\/schemas\/usageDatabases" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDatabaseRestoration", - "group": "databases", + "method": "listUsage", + "group": null, "cookies": false, "type": "", - "demo": "compute\/get-database-restoration.md", + "demo": "databases\/list-usage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "collections.read", "platforms": [ "console" ], "packaging": false, "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-usage.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.listUsage" }, - { - "name": "restorationId", - "description": "Restoration ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ] - } - }, - "\/compute\/databases\/{databaseId}\/slow-queries": { - "get": { - "summary": "List slow queries.", - "operationId": "computeListDatabaseQueries", - "tags": [ - "compute" - ], - "description": "List slow queries for a dedicated database. Returns queries that exceeded the specified threshold.", - "responses": { - "200": { - "description": "Dedicated database slow queries list", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseSlowQueryList" + "methods": [ + { + "name": "listUsage", + "namespace": "databases", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "range" + ], + "required": [], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/usageDatabases" } + ], + "description": "List usage metrics and statistics for all databases in the project. You can view the total number of databases, collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "demo": "databases\/list-usage.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.listUsage" } } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listDatabaseQueries", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/list-database-queries.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", - "platforms": [ - "console" ], - "packaging": false, - "public": true, "auth": { "Project": [] } @@ -13054,85 +12369,109 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "limit", - "description": "Maximum number of queries to return.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "x-example": 1, - "default": 100 - }, - "in": "query" - }, - { - "name": "thresholdMs", - "description": "Minimum query duration in milliseconds.", + "name": "range", + "description": "Date range.", "required": false, "schema": { - "type": "integer", - "format": "int32", - "x-example": 0, - "default": 0 + "type": "string", + "x-example": "24h", + "enum": [ + "24h", + "30d", + "90d" + ], + "x-enum-name": "UsageRange", + "x-enum-keys": [ + "Twenty Four Hours", + "Thirty Days", + "Ninety Days" + ], + "default": "30d" }, "in": "query" } ] } }, - "\/compute\/databases\/{databaseId}\/status": { + "\/databases\/{databaseId}": { "get": { - "summary": "Get database status.", - "operationId": "computeGetDatabaseStatus", + "summary": "Get database", + "operationId": "databasesGet", "tags": [ - "compute" + "databases" ], - "description": "Get real-time health and status information for a dedicated database. Returns health status, readiness, uptime, connection info, replica status, and volume information.", + "description": "Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.", "responses": { "200": { - "description": "Status", + "description": "Database", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/databaseStatus" + "$ref": "#\/components\/schemas\/database" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDatabaseStatus", + "method": "get", "group": "databases", "cookies": false, "type": "", - "demo": "compute\/get-database-status.md", + "demo": "databases\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "databases.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.get" + }, + "methods": [ + { + "name": "get", + "namespace": "databases", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId" + ], + "required": [ + "databaseId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/database" + } + ], + "description": "Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.", + "demo": "databases\/get.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.get" + } + } + ], "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -13147,51 +12486,87 @@ "in": "path" } ] - } - }, - "\/compute\/databases\/{databaseId}\/upgrades": { - "post": { - "summary": "Upgrade database version.", - "operationId": "computeCreateDatabaseUpgrade", + }, + "put": { + "summary": "Update database", + "operationId": "databasesUpdate", "tags": [ - "compute" + "databases" ], - "description": "Upgrade a dedicated database to a new engine version. Uses blue-green deployment for zero-downtime cutover.", + "description": "Update a database by its unique ID.", "responses": { "200": { - "description": "DedicatedDatabase", + "description": "Database", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/database" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseUpgrade", + "method": "update", "group": "databases", "cookies": false, "type": "", - "demo": "compute\/create-database-upgrade.md", + "demo": "databases\/update.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "databases.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.update" + }, + "methods": [ + { + "name": "update", + "namespace": "databases", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "name", + "enabled" + ], + "required": [ + "databaseId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/database" + } + ], + "description": "Update a database by its unique ID.", + "demo": "databases\/update.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.update" + } + } + ], "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -13212,760 +12587,1033 @@ "schema": { "type": "object", "properties": { - "targetVersion": { + "name": { "type": "string", - "description": "Target engine version to upgrade to.", - "x-example": "" + "description": "Database name. Max length: 128 chars.", + "x-example": "" + }, + "enabled": { + "type": "boolean", + "description": "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.", + "default": true, + "x-example": false } - }, - "required": [ - "targetVersion" - ] + } } } } } - } - }, - "\/console\/assistant": { - "post": { - "summary": "Create assistant query", - "operationId": "assistantChat", + }, + "delete": { + "summary": "Delete database", + "operationId": "databasesDelete", "tags": [ - "assistant" + "databases" ], - "description": "Send a prompt to the AI assistant and receive a response. This endpoint allows you to interact with Appwrite's AI assistant by sending questions or prompts and receiving helpful responses in real-time through a server-sent events stream. ", + "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", "responses": { - "200": { - "description": "Text", - "content": { - "text\/plain": { - "schema": { - "type": "string" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "chat", - "group": "console", + "method": "delete", + "group": "databases", "cookies": false, "type": "", - "demo": "assistant\/chat.md", - "rate-limit": 15, + "demo": "databases\/delete.md", + "rate-limit": 0, "rate-time": 3600, - "rate-key": "userId:{userId}", - "scope": "assistant.read", + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.delete" + }, + "methods": [ + { + "name": "delete", + "namespace": "databases", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId" + ], + "required": [ + "databaseId" + ], + "responses": [ + { + "code": 204 + } + ], + "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", + "demo": "databases\/delete.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.delete" + } + } + ], "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "prompt": { - "type": "string", - "description": "Prompt. A string containing questions asked to the AI assistant.", - "x-example": "" - } - }, - "required": [ - "prompt" - ] - } - } + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } - } + ] } }, - "\/console\/campaigns\/{campaignId}": { + "\/databases\/{databaseId}\/collections": { "get": { - "summary": "Get campaign details", - "operationId": "consoleGetCampaign", + "summary": "List collections", + "operationId": "databasesListCollections", "tags": [ - "console" + "databases" ], - "description": "Receive the details of a campaign using its ID.", + "description": "Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.", "responses": { - "201": { - "description": "Campaign", + "200": { + "description": "Collections List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/campaign" + "$ref": "#\/components\/schemas\/collectionList" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getCampaign", - "group": null, + "method": "listCollections", + "group": "collections", "cookies": false, "type": "", - "demo": "console\/get-campaign.md", + "demo": "databases\/list-collections.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "collections.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-campaign.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.listTables" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "campaignId", - "description": "ID of the campaign", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" } ] - } - }, - "\/console\/coupons\/{couponId}": { - "get": { - "summary": "Get coupon details", - "operationId": "consoleGetCoupon", + }, + "post": { + "summary": "Create collections", + "operationId": "databasesCreateCollection", "tags": [ - "console" + "databases" ], - "description": "Get the details of a coupon using it's coupon ID.", + "description": "Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", "responses": { "201": { - "description": "Coupon", + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/coupon" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getCoupon", - "group": null, + "method": "createCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "console\/get-coupon.md", - "rate-limit": 50, + "demo": "databases\/create-collection.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-coupon.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createTable" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "couponId", - "description": "ID of the coupon", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ] - } - }, - "\/console\/oauth2-providers": { - "get": { - "summary": "List OAuth2 providers", - "operationId": "consoleListOAuth2Providers", - "tags": [ - "console" ], - "description": "List all OAuth2 providers supported by the Appwrite server, along with the parameters required to configure each provider. The response excludes mock providers but includes sandbox providers.", - "responses": { - "200": { - "description": "Console OAuth2 Providers List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/consoleOAuth2ProviderList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listOAuth2Providers", - "group": "console", - "cookies": false, - "type": "", - "demo": "console\/list-o-auth-2-providers.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "public", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "collectionId": { + "type": "string", + "description": "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.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Collection name. Max length: 128 chars.", + "x-example": "" + }, + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + }, + "x-nullable": true + }, + "documentSecurity": { + "type": "boolean", + "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "default": false, + "x-example": false + }, + "enabled": { + "type": "boolean", + "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.", + "default": true, + "x-example": false + }, + "attributes": { + "type": "array", + "description": "Array of attribute definitions to create. Each attribute should contain: key (string), type (string: string, integer, float, boolean, datetime), size (integer, required for string type), required (boolean, optional), default (mixed, optional), array (boolean, optional), and type-specific options.", + "default": [], + "x-example": null, + "items": { + "type": "object" + } + }, + "indexes": { + "type": "array", + "description": "Array of index definitions to create. Each index should contain: key (string), type (string: key, fulltext, unique, spatial), attributes (array of attribute keys), orders (array of ASC\/DESC, optional), and lengths (array of integers, optional).", + "default": [], + "x-example": null, + "items": { + "type": "object" + } + } + }, + "required": [ + "collectionId", + "name" + ] + } + } } - ] + } } }, - "\/console\/plans": { + "\/databases\/{databaseId}\/collections\/{collectionId}": { "get": { - "summary": "Get plans", - "operationId": "consoleGetPlans", + "summary": "Get collection", + "operationId": "databasesGetCollection", "tags": [ - "console" + "databases" ], - "description": "Return a list of all available plans.", + "description": "Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.", "responses": { "200": { - "description": "Billing plan list", + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/billingPlanList" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getPlans", - "group": null, + "method": "getCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "console\/get-plans.md", + "demo": "databases\/get-collection.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "collections.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-plans.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.getTable" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "platform", - "description": "Platform type", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "schema": { "type": "string", - "x-example": "appwrite", - "enum": [ - "appwrite", - "imagine" - ], - "x-enum-name": "Platform", - "x-enum-keys": [ - "appwrite", - "imagine" - ], - "default": "appwrite" + "x-example": "" }, - "in": "query" + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } ] - } - }, - "\/console\/plans\/{planId}": { - "get": { - "summary": "Get plan", - "operationId": "consoleGetPlan", + }, + "put": { + "summary": "Update collection", + "operationId": "databasesUpdateCollection", "tags": [ - "console" + "databases" ], - "description": "Get the details of a plan using its plan ID.", + "description": "Update a collection by its unique ID.", "responses": { "200": { - "description": "billingPlan", + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/billingPlan" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getPlan", - "group": null, + "method": "updateCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "console\/get-plan.md", + "demo": "databases\/update-collection.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-plan.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateTable" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "planId", - "description": "Plan id", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" }, "in": "path" } - ] - } - }, - "\/console\/programs\/{programId}": { - "get": { - "summary": "Get program details", - "operationId": "consoleGetProgram", - "tags": [ - "console" ], - "description": "Receive the details of a program using its ID.", - "responses": { - "201": { - "description": "Program", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/program" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Collection name. Max length: 128 chars.", + "x-example": "" + }, + "permissions": { + "type": "array", + "description": "An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + }, + "x-nullable": true + }, + "documentSecurity": { + "type": "boolean", + "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "default": false, + "x-example": false + }, + "enabled": { + "type": "boolean", + "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.", + "default": true, + "x-example": false + }, + "purge": { + "type": "boolean", + "description": "When true, purge all cached list responses for this collection as part of the update. Use this to force readers to see fresh data immediately instead of waiting for the cache TTL to expire.", + "default": false, + "x-example": false + } } } } } + } + }, + "delete": { + "summary": "Delete collection", + "operationId": "databasesDeleteCollection", + "tags": [ + "databases" + ], + "description": "Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.", + "responses": { + "204": { + "description": "No content" + } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getProgram", - "group": null, + "method": "deleteCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "console\/get-program.md", + "demo": "databases\/delete-collection.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.read", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-program.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.deleteTable" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "programId", - "description": "ID of the program", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" }, "in": "path" } ] } }, - "\/console\/programs\/{programId}\/memberships": { - "post": { - "summary": "Create program membership", - "operationId": "consoleCreateProgramMembership", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes": { + "get": { + "summary": "List attributes", + "operationId": "databasesListAttributes", "tags": [ - "console" + "databases" ], - "description": "Create a new membership for an account to a program.", + "description": "List attributes in the collection.", "responses": { "200": { - "description": "Organization", + "description": "Attributes List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/attributeList" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createProgramMembership", - "group": null, + "method": "listAttributes", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/create-program-membership.md", - "rate-limit": 10, + "demo": "databases\/list-attributes.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.write", + "scope": "collections.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/create-program-membership.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.listColumns" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "programId", - "description": "ID of the program", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" }, "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" } ] } }, - "\/console\/regions": { - "get": { - "summary": "List Regions", - "operationId": "consoleListRegions", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/bigint": { + "post": { + "summary": "Create bigint attribute", + "operationId": "databasesCreateBigIntAttribute", "tags": [ - "console" + "databases" ], - "description": "Get all available regions for the console.", + "description": "Create a bigint attribute. Optionally, minimum and maximum values can be provided.\n", "responses": { - "200": { - "description": "Regions list", + "202": { + "description": "AttributeBigInt", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/consoleRegionList" + "$ref": "#\/components\/schemas\/attributeBigint" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listRegions", - "group": null, + "method": "createBigIntAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/list-regions.md", + "demo": "databases\/create-big-int-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/list-regions.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ] - } - }, - "\/console\/resources": { - "get": { - "summary": "Check resource ID availability", - "operationId": "consoleGetResource", - "tags": [ - "console" - ], - "description": "Check if a resource ID is available.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "getResource", - "group": null, - "cookies": false, - "type": "", - "demo": "console\/get-resource.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "userId:{userId}, url:{url}", - "scope": "rules.read", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-bigint-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createBigIntColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "value", - "description": "Resource value.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "type", - "description": "Resource type.", + "name": "collectionId", + "description": "Collection ID.", "required": true, "schema": { "type": "string", - "x-example": "rules", - "enum": [ - "rules" - ], - "x-enum-name": "ConsoleResourceType", - "x-enum-keys": [ - "rules" - ] + "x-example": "" }, - "in": "query" + "in": "path" } - ] - } - }, - "\/console\/scopes\/organization": { - "get": { - "summary": "List organization scopes", - "operationId": "consoleListOrganizationScopes", - "tags": [ - "console" ], - "description": "List all scopes available for organization API keys, along with a description for each scope.", - "responses": { - "200": { - "description": "Console Key Scopes List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/consoleKeyScopeList" - } + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "min": { + "type": "integer", + "description": "Minimum value", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "max": { + "type": "integer", + "description": "Maximum value", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "default": { + "type": "integer", + "description": "Default value. Cannot be set when attribute is required.", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "array": { + "type": "boolean", + "description": "Is attribute an array?", + "default": false, + "x-example": false + } + }, + "required": [ + "key", + "required" + ] } } } - }, - "deprecated": false, - "x-appwrite": { - "method": "listOrganizationScopes", - "group": "console", - "cookies": false, - "type": "", - "demo": "console\/list-organization-scopes.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "public", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ] + } } }, - "\/console\/scopes\/project": { - "get": { - "summary": "List project scopes", - "operationId": "consoleListProjectScopes", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/bigint\/{key}": { + "patch": { + "summary": "Update bigint attribute", + "operationId": "databasesUpdateBigIntAttribute", "tags": [ - "console" + "databases" ], - "description": "List all scopes available for project API keys, along with a description for each scope.", + "description": "Update a bigint attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Console Key Scopes List", + "description": "AttributeBigInt", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/consoleKeyScopeList" + "$ref": "#\/components\/schemas\/attributeBigint" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listProjectScopes", - "group": "console", + "method": "updateBigIntAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/list-project-scopes.md", + "demo": "databases\/update-big-int-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-bigint-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateBigIntColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } - ] + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "min": { + "type": "integer", + "description": "Minimum value", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "max": { + "type": "integer", + "description": "Maximum value", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "default": { + "type": "integer", + "description": "Default value. Cannot be set when attribute is required.", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required", + "default" + ] + } + } + } + } } }, - "\/console\/sources": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean": { "post": { - "summary": "Create source", - "operationId": "consoleCreateSource", + "summary": "Create boolean attribute", + "operationId": "databasesCreateBooleanAttribute", "tags": [ - "console" + "databases" ], - "description": "Create a new source.", + "description": "Create a boolean attribute.\n", "responses": { - "201": { - "description": "Any", + "202": { + "description": "AttributeBoolean", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/any" + "$ref": "#\/components\/schemas\/attributeBoolean" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createSource", - "group": null, + "method": "createBooleanAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/create-source.md", - "rate-limit": 50, + "demo": "databases\/create-boolean-attribute.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/create-source.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createBooleanColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } ], "requestBody": { @@ -13974,88 +13622,89 @@ "schema": { "type": "object", "properties": { - "ref": { - "type": "string", - "description": "Ref param", - "x-example": "", - "x-nullable": true - }, - "referrer": { + "key": { "type": "string", - "description": "Referrer", - "x-example": "https:\/\/example.com", - "format": "url", - "x-nullable": true + "description": "Attribute Key.", + "x-example": null }, - "utmSource": { - "type": "string", - "description": "Utm source", - "x-example": "", - "x-nullable": true + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false }, - "utmCampaign": { - "type": "string", - "description": "Utm campaign", - "x-example": "", + "default": { + "type": "boolean", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": false, "x-nullable": true }, - "utmMedium": { - "type": "string", - "description": "Utm medium", - "x-example": "", - "x-nullable": true + "array": { + "type": "boolean", + "description": "Is attribute an array?", + "default": false, + "x-example": false } - } + }, + "required": [ + "key", + "required" + ] } } } } } }, - "\/console\/suggestions\/columns": { - "get": { - "summary": "Get column suggestions with size limits for a table, using database context and an optional user provided context", - "operationId": "consoleSuggestColumns", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}": { + "patch": { + "summary": "Update boolean attribute", + "operationId": "databasesUpdateBooleanAttribute", "tags": [ - "console" + "databases" ], - "description": "Suggests column names and their size limits based on the provided table name. The API will also analyze other tables in the same database to provide context-aware suggestions, ensuring consistency across schema design. Users may optionally provide custom context to further refine the suggestions.", + "description": "Update a boolean attribute. Changing the `default` value will not update already existing documents.", "responses": { "200": { - "description": "Columns List", + "description": "AttributeBoolean", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/columnList" + "$ref": "#\/components\/schemas\/attributeBoolean" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "suggestColumns", - "group": null, + "method": "updateBooleanAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/suggest-columns.md", - "rate-limit": 10, + "demo": "databases\/update-boolean-attribute.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/suggest-columns.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateBooleanColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -14067,99 +13716,112 @@ "type": "string", "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "tableId", - "description": "Table ID.", + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", "required": true, "schema": { "type": "string", - "x-example": "" - }, - "in": "query" - }, - { - "name": "context", - "description": "Optional user provided context to refine suggestions.", - "required": false, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "query" - }, - { - "name": "min", - "description": "Minimum number of suggestions to generate.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "x-example": 1, - "default": 3 + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "max", - "description": "Maximum number of suggestions to generate.", - "required": false, + "name": "key", + "description": "Attribute Key.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "x-example": 1, - "default": 7 + "type": "string" }, - "in": "query" + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "boolean", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": false, + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New attribute key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required", + "default" + ] + } + } + } + } } }, - "\/console\/suggestions\/indexes": { - "get": { - "summary": "Get index suggestions for table columns, using database context", - "operationId": "consoleSuggestIndexes", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime": { + "post": { + "summary": "Create datetime attribute", + "operationId": "databasesCreateDatetimeAttribute", "tags": [ - "console" + "databases" ], - "description": "Suggests database indexes for table columns based on the provided table structure and existing columns. The API will also analyze the table's column types, names, and patterns to recommend optimal indexes that improve query performance for common database operations like filtering, sorting, and searching.", + "description": "Create a date time attribute according to the ISO 8601 standard.", "responses": { - "200": { - "description": "Column Indexes List", + "202": { + "description": "AttributeDatetime", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/columnIndexList" + "$ref": "#\/components\/schemas\/attributeDatetime" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "suggestIndexes", - "group": null, + "method": "createDatetimeAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/suggest-indexes.md", - "rate-limit": 10, + "demo": "databases\/create-datetime-attribute.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/suggest-indexes.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createDatetimeColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -14171,727 +13833,546 @@ "type": "string", "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "tableId", - "description": "Table ID.", + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", "required": true, "schema": { "type": "string", - "x-example": "" - }, - "in": "query" - }, - { - "name": "min", - "description": "Minimum number of suggestions to generate.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "x-example": 1, - "default": 1 - }, - "in": "query" - }, - { - "name": "max", - "description": "Maximum number of suggestions to generate.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "x-example": 1, - "default": 4 + "x-example": "" }, - "in": "query" + "in": "path" } - ] - } - }, - "\/console\/suggestions\/queries": { - "get": { - "summary": "Get query suggestions for a list resource from free-text intent", - "operationId": "consoleSuggestQueries", - "tags": [ - "console" ], - "description": "Suggest valid Appwrite query JSON objects for a supported list resource from free-text user intent. The endpoint picks a validator based on `resource` \u2014 for system resources it uses the static validator and its allowed attributes, and for user-owned table rows it loads the table schema and validates against those attributes at request time. The returned queries are guaranteed to parse and pass the relevant queries validator.\n", + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true + }, + "array": { + "type": "boolean", + "description": "Is attribute an array?", + "default": false, + "x-example": false + } + }, + "required": [ + "key", + "required" + ] + } + } + } + } + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}": { + "patch": { + "summary": "Update datetime attribute", + "operationId": "databasesUpdateDatetimeAttribute", + "tags": [ + "databases" + ], + "description": "Update a date time attribute. Changing the `default` value will not update already existing documents.", "responses": { "200": { - "description": "Any", + "description": "AttributeDatetime", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/any" + "$ref": "#\/components\/schemas\/attributeDatetime" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "suggestQueries", - "group": null, + "method": "updateDatetimeAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/suggest-queries.md", - "rate-limit": 10, + "demo": "databases\/update-datetime-attribute.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/suggest-queries.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateDatetimeColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "resource", - "description": "Resource to generate queries for.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "activities", - "enum": [ - "activities", - "activityevents", - "archives", - "credits", - "dnsrecords", - "domains", - "invoices", - "paymentmethods", - "policies", - "projects", - "restorations", - "teamaggregations", - "teams", - "databases", - "tables", - "rows", - "schedules", - "platforms", - "keys", - "devkeys", - "webhooks", - "certificates", - "realtime", - "rules", - "installations", - "repositories", - "vcscomments", - "vcscommentlocks", - "reports", - "insights", - "users", - "cache", - "tokens", - "authenticators", - "challenges", - "sessions", - "identities", - "memberships", - "buckets", - "providers", - "messages", - "topics", - "subscribers", - "targets", - "presencelogs", - "companies", - "billingaddresses", - "billingaggregations", - "billingaggregationresources", - "billingteamprojectaggregations", - "billingteamaggregations_v2", - "billingteamaggregationresources", - "billinginvoices_v2", - "billingaddons", - "alerts", - "payments", - "billingdiscounts", - "sources", - "deals", - "blocks", - "threats", - "feedbacks", - "disputes", - "sh_installations", - "apps", - "appsecrets", - "oauth2grants", - "attributes", - "indexes", - "functions", - "sites", - "deployments", - "executions", - "variables", - "migrations", - "resourcetokens", - "transactions", - "transactionlogs", - "stats", - "dedicateddatabases", - "dedicateddatabaseconfigs", - "dedicateddatabaseruntimes", - "dedicateddatabaseoperations", - "dedicateddatabasebackups", - "dedicateddatabaserestorations" - ], - "x-enum-name": "QuerySuggestionResource", - "x-enum-keys": [ - "activities", - "activity_events", - "archives", - "credits", - "dns_records", - "domains", - "invoices", - "payment_methods", - "policies", - "projects", - "restorations", - "team_aggregations", - "teams", - "databases", - "tables", - "rows", - "schedules", - "platforms", - "keys", - "dev_keys", - "webhooks", - "certificates", - "realtime", - "rules", - "installations", - "repositories", - "vcs_comments", - "vcs_comment_locks", - "reports", - "insights", - "users", - "cache", - "tokens", - "authenticators", - "challenges", - "sessions", - "identities", - "memberships", - "buckets", - "providers", - "messages", - "topics", - "subscribers", - "targets", - "presence_logs", - "companies", - "billing_addresses", - "billing_aggregations", - "billing_aggregation_resources", - "billing_team_project_aggregations", - "billing_team_aggregations_v2", - "billing_team_aggregation_resources", - "billing_invoices_v2", - "billing_addons", - "alerts", - "payments", - "billing_discounts", - "sources", - "deals", - "blocks", - "threats", - "feedbacks", - "disputes", - "sh_installations", - "apps", - "app_secrets", - "oauth2_grants", - "attributes", - "indexes", - "functions", - "sites", - "deployments", - "executions", - "variables", - "migrations", - "resource_tokens", - "transactions", - "transaction_logs", - "stats", - "dedicated_databases", - "dedicated_database_configs", - "dedicated_database_runtimes", - "dedicated_database_operations", - "dedicated_database_backups", - "dedicated_database_restorations" - ] + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "input", - "description": "Natural language query intent used to generate filters\/sorting\/pagination.", + "name": "collectionId", + "description": "Collection ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "query" + "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New attribute key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required", + "default" + ] + } + } + } + } + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email": { + "post": { + "summary": "Create email attribute", + "operationId": "databasesCreateEmailAttribute", + "tags": [ + "databases" + ], + "description": "Create an email attribute.\n", + "responses": { + "202": { + "description": "AttributeEmail", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/attributeEmail" + } + } + } + } + }, + "deprecated": true, + "x-appwrite": { + "method": "createEmailAttribute", + "group": "attributes", + "cookies": false, + "type": "", + "demo": "databases\/create-email-attribute.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "collections.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createEmailColumn" }, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ { "name": "databaseId", - "description": "Database ID. Required when resource is `tables` or `rows`.", - "required": false, + "description": "Database ID.", + "required": true, "schema": { "type": "string", "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "tableId", - "description": "Table ID. Required when resource is `rows`.", - "required": false, + "name": "collectionId", + "description": "Collection ID.", + "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "query" + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "email@example.com", + "format": "email", + "x-nullable": true + }, + "array": { + "type": "boolean", + "description": "Is attribute an array?", + "default": false, + "x-example": false + } + }, + "required": [ + "key", + "required" + ] + } + } + } + } } }, - "\/console\/templates\/email\/{templateId}": { - "get": { - "summary": "Get email template", - "operationId": "consoleGetEmailTemplate", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}": { + "patch": { + "summary": "Update email attribute", + "operationId": "databasesUpdateEmailAttribute", "tags": [ - "console" + "databases" ], - "description": "Get the Appwrite built-in default email template for the specified type and locale. Always returns the unmodified default, ignoring any custom project overrides.", + "description": "Update an email attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "EmailTemplate", + "description": "AttributeEmail", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/emailTemplate" + "$ref": "#\/components\/schemas\/attributeEmail" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getEmailTemplate", - "group": null, + "method": "updateEmailAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/get-email-template.md", + "demo": "databases\/update-email-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateEmailColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "templateId", - "description": "Email template type. Can be one of: verification, magicSession, recovery, invitation, mfaChallenge, sessionAlert, otpSession", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "verification", - "enum": [ - "verification", - "magicSession", - "recovery", - "invitation", - "mfaChallenge", - "sessionAlert", - "otpSession" - ], - "x-enum-name": "ProjectEmailTemplateId", - "x-enum-keys": [ - "verification", - "magicSession", - "recovery", - "invitation", - "mfaChallenge", - "sessionAlert", - "otpSession" - ] + "x-example": "" }, "in": "path" }, { - "name": "locale", - "description": "Template locale. If left empty, the fallback locale (en) will be used.", - "required": false, + "name": "collectionId", + "description": "Collection ID.", + "required": true, "schema": { "type": "string", - "x-example": "af", - "enum": [ - "af", - "ar-ae", - "ar-bh", - "ar-dz", - "ar-eg", - "ar-iq", - "ar-jo", - "ar-kw", - "ar-lb", - "ar-ly", - "ar-ma", - "ar-om", - "ar-qa", - "ar-sa", - "ar-sy", - "ar-tn", - "ar-ye", - "as", - "az", - "be", - "bg", - "bh", - "bn", - "bs", - "ca", - "cs", - "cy", - "da", - "de", - "de-at", - "de-ch", - "de-li", - "de-lu", - "el", - "en", - "en-au", - "en-bz", - "en-ca", - "en-gb", - "en-ie", - "en-jm", - "en-nz", - "en-tt", - "en-us", - "en-za", - "eo", - "es", - "es-ar", - "es-bo", - "es-cl", - "es-co", - "es-cr", - "es-do", - "es-ec", - "es-gt", - "es-hn", - "es-mx", - "es-ni", - "es-pa", - "es-pe", - "es-pr", - "es-py", - "es-sv", - "es-uy", - "es-ve", - "et", - "eu", - "fa", - "fi", - "fo", - "fr", - "fr-be", - "fr-ca", - "fr-ch", - "fr-lu", - "ga", - "gd", - "he", - "hi", - "hr", - "hu", - "id", - "is", - "it", - "it-ch", - "ja", - "ji", - "ko", - "ku", - "lt", - "lv", - "mk", - "ml", - "ms", - "mt", - "nb", - "ne", - "nl", - "nl-be", - "nn", - "no", - "pa", - "pl", - "pt", - "pt-br", - "rm", - "ro", - "ro-md", - "ru", - "ru-md", - "sb", - "sk", - "sl", - "sq", - "sr", - "sv", - "sv-fi", - "th", - "tn", - "tr", - "ts", - "ua", - "ur", - "ve", - "vi", - "xh", - "zh-cn", - "zh-hk", - "zh-sg", - "zh-tw", - "zu" - ], - "x-enum-name": "ProjectEmailTemplateLocale", - "x-enum-keys": [ - "af", - "ar-ae", - "ar-bh", - "ar-dz", - "ar-eg", - "ar-iq", - "ar-jo", - "ar-kw", - "ar-lb", - "ar-ly", - "ar-ma", - "ar-om", - "ar-qa", - "ar-sa", - "ar-sy", - "ar-tn", - "ar-ye", - "as", - "az", - "be", - "bg", - "bh", - "bn", - "bs", - "ca", - "cs", - "cy", - "da", - "de", - "de-at", - "de-ch", - "de-li", - "de-lu", - "el", - "en", - "en-au", - "en-bz", - "en-ca", - "en-gb", - "en-ie", - "en-jm", - "en-nz", - "en-tt", - "en-us", - "en-za", - "eo", - "es", - "es-ar", - "es-bo", - "es-cl", - "es-co", - "es-cr", - "es-do", - "es-ec", - "es-gt", - "es-hn", - "es-mx", - "es-ni", - "es-pa", - "es-pe", - "es-pr", - "es-py", - "es-sv", - "es-uy", - "es-ve", - "et", - "eu", - "fa", - "fi", - "fo", - "fr", - "fr-be", - "fr-ca", - "fr-ch", - "fr-lu", - "ga", - "gd", - "he", - "hi", - "hr", - "hu", - "id", - "is", - "it", - "it-ch", - "ja", - "ji", - "ko", - "ku", - "lt", - "lv", - "mk", - "ml", - "ms", - "mt", - "nb", - "ne", - "nl", - "nl-be", - "nn", - "no", - "pa", - "pl", - "pt", - "pt-br", - "rm", - "ro", - "ro-md", - "ru", - "ru-md", - "sb", - "sk", - "sl", - "sq", - "sr", - "sv", - "sv-fi", - "th", - "tn", - "tr", - "ts", - "ua", - "ur", - "ve", - "vi", - "xh", - "zh-cn", - "zh-hk", - "zh-sg", - "zh-tw", - "zu" - ] + "x-example": "" }, - "in": "query" + "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "email@example.com", + "format": "email", + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required", + "default" + ] + } + } + } + } } }, - "\/console\/variables": { - "get": { - "summary": "Get variables", - "operationId": "consoleVariables", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum": { + "post": { + "summary": "Create enum attribute", + "operationId": "databasesCreateEnumAttribute", "tags": [ - "console" + "databases" ], - "description": "Get all Environment Variables that are relevant for the console.", + "description": "Create an enum attribute. The `elements` param acts as a white-list of accepted values for this attribute. \n", "responses": { - "200": { - "description": "Console Variables", + "202": { + "description": "AttributeEnum", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/consoleVariables" + "$ref": "#\/components\/schemas\/attributeEnum" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "variables", - "group": "console", + "method": "createEnumAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/variables.md", + "demo": "databases\/create-enum-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-enum-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createEnumColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } - ] + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "elements": { + "type": "array", + "description": "Array of enum values.", + "x-example": null, + "items": { + "type": "string" + } + }, + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "", + "x-nullable": true + }, + "array": { + "type": "boolean", + "description": "Is attribute an array?", + "default": false, + "x-example": false + } + }, + "required": [ + "key", + "elements", + "required" + ] + } + } + } + } } }, - "\/databases": { - "get": { - "summary": "List databases", - "operationId": "databasesList", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}": { + "patch": { + "summary": "Update enum attribute", + "operationId": "databasesUpdateEnumAttribute", "tags": [ "databases" ], - "description": "Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.", + "description": "Update an enum attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Databases List", + "description": "AttributeEnum", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/databaseList" + "$ref": "#\/components\/schemas\/attributeEnum" } } } @@ -14899,55 +14380,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "list", - "group": "databases", + "method": "updateEnumAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/list.md", + "demo": "databases\/update-enum-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "collections.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.list" + "replaceWith": "tablesDB.updateEnumColumn" }, - "methods": [ - { - "name": "list", - "namespace": "databases", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "queries", - "search", - "total" - ], - "required": [], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/databaseList" - } - ], - "description": "Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.", - "demo": "databases\/list.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.list" - } - } - ], "auth": { "Project": [] } @@ -14960,123 +14412,33 @@ ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, + "name": "collectionId", + "description": "Collection ID.", + "required": true, "schema": { "type": "string", - "x-example": "", - "default": "" + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, + "name": "key", + "description": "Attribute Key.", + "required": true, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string" }, - "in": "query" - } - ] - }, - "post": { - "summary": "Create database", - "operationId": "databasesCreate", - "tags": [ - "databases" - ], - "description": "Create a new Database.\n", - "responses": { - "201": { - "description": "Database", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/database" - } - } - } - } - }, - "deprecated": true, - "x-appwrite": { - "method": "create", - "group": "databases", - "cookies": false, - "type": "", - "demo": "databases\/create.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.create" - }, - "methods": [ - { - "name": "create", - "namespace": "databases", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "name", - "enabled" - ], - "required": [ - "databaseId", - "name" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/database" - } - ], - "description": "Create a new Database.\n", - "demo": "databases\/create.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.create" - } - } - ], - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] + "in": "path" } ], "requestBody": { @@ -15085,29 +14447,36 @@ "schema": { "type": "object", "properties": { - "databaseId": { - "type": "string", - "description": "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.", - "x-example": "", - "x-appwrite": { - "idGenerator": "ID.unique" + "elements": { + "type": "array", + "description": "Updated list of enum values.", + "x-example": null, + "items": { + "type": "string" } }, - "name": { - "type": "string", - "description": "Database name. Max length: 128 chars.", - "x-example": "" - }, - "enabled": { + "required": { "type": "boolean", - "description": "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.", - "default": true, + "description": "Is attribute required?", "x-example": false + }, + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "", + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true } }, "required": [ - "databaseId", - "name" + "elements", + "required", + "default" ] } } @@ -15115,21 +14484,21 @@ } } }, - "\/databases\/transactions": { - "get": { - "summary": "List transactions", - "operationId": "databasesListTransactions", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float": { + "post": { + "summary": "Create float attribute", + "operationId": "databasesCreateFloatAttribute", "tags": [ "databases" ], - "description": "List transactions across all databases.", + "description": "Create a float attribute. Optionally, minimum and maximum values can be provided.\n", "responses": { - "200": { - "description": "Transaction List", + "202": { + "description": "AttributeFloat", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transactionList" + "$ref": "#\/components\/schemas\/attributeFloat" } } } @@ -15137,26 +14506,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "listTransactions", - "group": "transactions", + "method": "createFloatAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/list-transactions.md", + "demo": "databases\/create-float-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "rows.read", + "scope": "collections.write", "platforms": [ "console", - "server", - "client" + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-transactions.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.listTransactions" + "replaceWith": "tablesDB.createFloatColumn" }, "auth": { "Project": [] @@ -15165,79 +14533,29 @@ "security": [ { "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Key": [] } ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries).", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "" }, - "in": "query" - } - ] - }, - "post": { - "summary": "Create transaction", - "operationId": "databasesCreateTransaction", - "tags": [ - "databases" - ], - "description": "Create a new transaction.", - "responses": { - "201": { - "description": "Transaction", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/transaction" - } - } - } - } - }, - "deprecated": true, - "x-appwrite": { - "method": "createTransaction", - "group": "transactions", - "cookies": false, - "type": "", - "demo": "databases\/create-transaction.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "documents.write", - "platforms": [ - "console", - "server", - "client" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-transaction.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createTransaction" + "in": "path" }, - "auth": { - "Project": [] - } - }, - "security": [ { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } ], "requestBody": { @@ -15246,35 +14564,69 @@ "schema": { "type": "object", "properties": { - "ttl": { - "type": "integer", - "description": "Seconds before the transaction expires.", - "default": 300, - "x-example": 60, - "format": "int32" + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "min": { + "type": "number", + "description": "Minimum value.", + "x-example": null, + "format": "float", + "x-nullable": true + }, + "max": { + "type": "number", + "description": "Maximum value.", + "x-example": null, + "format": "float", + "x-nullable": true + }, + "default": { + "type": "number", + "description": "Default value. Cannot be set when required.", + "x-example": null, + "format": "float", + "x-nullable": true + }, + "array": { + "type": "boolean", + "description": "Is attribute an array?", + "default": false, + "x-example": false } - } + }, + "required": [ + "key", + "required" + ] } } } } } }, - "\/databases\/transactions\/{transactionId}": { - "get": { - "summary": "Get transaction", - "operationId": "databasesGetTransaction", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}": { + "patch": { + "summary": "Update float attribute", + "operationId": "databasesUpdateFloatAttribute", "tags": [ "databases" ], - "description": "Get a transaction by its unique ID.", + "description": "Update a float attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Transaction", + "description": "AttributeFloat", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/attributeFloat" } } } @@ -15282,26 +14634,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "getTransaction", - "group": "transactions", + "method": "updateFloatAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/get-transaction.md", + "demo": "databases\/update-float-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "rows.read", + "scope": "collections.write", "platforms": [ "console", - "server", - "client" + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-transaction.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.getTransaction" + "replaceWith": "tablesDB.updateFloatColumn" }, "auth": { "Project": [] @@ -15310,38 +14661,104 @@ "security": [ { "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Key": [] } ], "parameters": [ { - "name": "transactionId", - "description": "Transaction ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" }, "in": "path" } - ] - }, - "patch": { - "summary": "Update transaction", - "operationId": "databasesUpdateTransaction", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "min": { + "type": "number", + "description": "Minimum value.", + "x-example": null, + "format": "float", + "x-nullable": true + }, + "max": { + "type": "number", + "description": "Maximum value.", + "x-example": null, + "format": "float", + "x-nullable": true + }, + "default": { + "type": "number", + "description": "Default value. Cannot be set when required.", + "x-example": null, + "format": "float", + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required", + "default" + ] + } + } + } + } + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer": { + "post": { + "summary": "Create integer attribute", + "operationId": "databasesCreateIntegerAttribute", "tags": [ "databases" ], - "description": "Update a transaction, to either commit or roll back its operations.", + "description": "Create an integer attribute. Optionally, minimum and maximum values can be provided.\n", "responses": { - "200": { - "description": "Transaction", + "202": { + "description": "AttributeInteger", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/attributeInteger" } } } @@ -15349,26 +14766,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateTransaction", - "group": "transactions", + "method": "createIntegerAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-transaction.md", + "demo": "databases\/create-integer-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.write", + "scope": "collections.write", "platforms": [ "console", - "server", - "client" + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-transaction.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateTransaction" + "replaceWith": "tablesDB.createIntegerColumn" }, "auth": { "Project": [] @@ -15377,19 +14793,27 @@ "security": [ { "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Key": [] } ], "parameters": [ { - "name": "transactionId", - "description": "Transaction ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" }, "in": "path" } @@ -15400,58 +14824,95 @@ "schema": { "type": "object", "properties": { - "commit": { + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { "type": "boolean", - "description": "Commit transaction?", - "default": false, + "description": "Is attribute required?", "x-example": false }, - "rollback": { + "min": { + "type": "integer", + "description": "Minimum value", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "max": { + "type": "integer", + "description": "Maximum value", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "default": { + "type": "integer", + "description": "Default value. Cannot be set when attribute is required.", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "array": { "type": "boolean", - "description": "Rollback transaction?", + "description": "Is attribute an array?", "default": false, "x-example": false } - } + }, + "required": [ + "key", + "required" + ] } } } } - }, - "delete": { - "summary": "Delete transaction", - "operationId": "databasesDeleteTransaction", + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}": { + "patch": { + "summary": "Update integer attribute", + "operationId": "databasesUpdateIntegerAttribute", "tags": [ "databases" ], - "description": "Delete a transaction by its unique ID.", + "description": "Update an integer attribute. Changing the `default` value will not update already existing documents.\n", "responses": { - "204": { - "description": "No content" + "200": { + "description": "AttributeInteger", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/attributeInteger" + } + } + } } }, "deprecated": true, "x-appwrite": { - "method": "deleteTransaction", - "group": "transactions", + "method": "updateIntegerAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/delete-transaction.md", + "demo": "databases\/update-integer-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.write", + "scope": "collections.write", "platforms": [ "console", - "server", - "client" + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-transaction.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.deleteTransaction" + "replaceWith": "tablesDB.updateIntegerColumn" }, "auth": { "Project": [] @@ -15460,40 +14921,104 @@ "security": [ { "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Key": [] } ], "parameters": [ { - "name": "transactionId", - "description": "Transaction ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "min": { + "type": "integer", + "description": "Minimum value", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "max": { + "type": "integer", + "description": "Maximum value", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "default": { + "type": "integer", + "description": "Default value. Cannot be set when attribute is required.", + "x-example": null, + "format": "int64", + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required", + "default" + ] + } + } + } + } } }, - "\/databases\/transactions\/{transactionId}\/operations": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip": { "post": { - "summary": "Create operations", - "operationId": "databasesCreateOperations", + "summary": "Create IP address attribute", + "operationId": "databasesCreateIpAttribute", "tags": [ "databases" ], - "description": "Create multiple operations in a single transaction.", + "description": "Create IP address attribute.\n", "responses": { - "201": { - "description": "Transaction", + "202": { + "description": "AttributeIP", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/attributeIp" } } } @@ -15501,26 +15026,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "createOperations", - "group": "transactions", + "method": "createIpAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-operations.md", + "demo": "databases\/create-ip-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.write", + "scope": "collections.write", "platforms": [ "console", - "server", - "client" + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-operations.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createOperations" + "replaceWith": "tablesDB.createIpColumn" }, "auth": { "Project": [] @@ -15529,19 +15053,27 @@ "security": [ { "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Key": [] } ], "parameters": [ { - "name": "transactionId", - "description": "Transaction ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" }, "in": "path" } @@ -15552,37 +15084,54 @@ "schema": { "type": "object", "properties": { - "operations": { - "type": "array", - "description": "Array of staged operations.", - "default": [], - "x-example": "[\n\t {\n\t \"action\": \"create\",\n\t \"databaseId\": \"\",\n\t \"collectionId\": \"\",\n\t \"documentId\": \"\",\n\t \"data\": {\n\t \"name\": \"Walter O'Brien\"\n\t }\n\t }\n\t]", - "items": { - "type": "object" - } + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value. Cannot be set when attribute is required.", + "x-example": null, + "x-nullable": true + }, + "array": { + "type": "boolean", + "description": "Is attribute an array?", + "default": false, + "x-example": false } - } + }, + "required": [ + "key", + "required" + ] } } } } } }, - "\/databases\/usage": { - "get": { - "summary": "Get databases usage stats", - "operationId": "databasesListUsage", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}": { + "patch": { + "summary": "Update IP address attribute", + "operationId": "databasesUpdateIpAttribute", "tags": [ "databases" ], - "description": "List usage metrics and statistics for all databases in the project. You can view the total number of databases, collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "description": "Update an ip attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "UsageDatabases", + "description": "AttributeIP", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageDatabases" + "$ref": "#\/components\/schemas\/attributeIp" } } } @@ -15590,102 +15139,116 @@ }, "deprecated": true, "x-appwrite": { - "method": "listUsage", - "group": null, + "method": "updateIpAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/list-usage.md", + "demo": "databases\/update-ip-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-usage.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.listUsage" + "replaceWith": "tablesDB.updateIpColumn" }, - "methods": [ - { - "name": "listUsage", - "namespace": "databases", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "range" - ], - "required": [], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/usageDatabases" - } - ], - "description": "List usage metrics and statistics for all databases in the project. You can view the total number of databases, collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", - "demo": "databases\/list-usage.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.listUsage" - } - } - ], "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "range", - "description": "Date range.", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "schema": { "type": "string", - "x-example": "24h", - "enum": [ - "24h", - "30d", - "90d" - ], - "x-enum-name": "UsageRange", - "x-enum-keys": [ - "Twenty Four Hours", - "Thirty Days", - "Ninety Days" - ], - "default": "30d" + "x-example": "" }, - "in": "query" + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value. Cannot be set when attribute is required.", + "x-example": null, + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required", + "default" + ] + } + } + } + } } }, - "\/databases\/{databaseId}": { - "get": { - "summary": "Get database", - "operationId": "databasesGet", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/line": { + "post": { + "summary": "Create line attribute", + "operationId": "databasesCreateLineAttribute", "tags": [ "databases" ], - "description": "Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.", + "description": "Create a geometric line attribute.", "responses": { - "200": { - "description": "Database", + "202": { + "description": "AttributeLine", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/database" + "$ref": "#\/components\/schemas\/attributeLine" } } } @@ -15693,55 +15256,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "get", - "group": "databases", + "method": "createLineAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/get.md", + "demo": "databases\/create-line-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "collections.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-line-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.get" + "replaceWith": "tablesDB.createLineColumn" }, - "methods": [ - { - "name": "get", - "namespace": "databases", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId" - ], - "required": [ - "databaseId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/database" - } - ], - "description": "Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.", - "demo": "databases\/get.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.get" - } - } - ], "auth": { "Project": [] } @@ -15762,23 +15296,73 @@ "x-example": "" }, "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } - ] - }, - "put": { - "summary": "Update database", - "operationId": "databasesUpdate", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "array", + "description": "Default value for attribute when not provided, two-dimensional array of coordinate pairs, [[longitude, latitude], [longitude, latitude], \u2026], listing the vertices of the line in order. Cannot be set when attribute is required.", + "x-example": "[[1, 2], [3, 4], [5, 6]]", + "items": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + }, + "x-nullable": true + } + }, + "required": [ + "key", + "required" + ] + } + } + } + } + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/line\/{key}": { + "patch": { + "summary": "Update line attribute", + "operationId": "databasesUpdateLineAttribute", "tags": [ "databases" ], - "description": "Update a database by its unique ID.", + "description": "Update a line attribute. Changing the `default` value will not update already existing documents.", "responses": { "200": { - "description": "Database", + "description": "AttributeLine", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/database" + "$ref": "#\/components\/schemas\/attributeLine" } } } @@ -15786,57 +15370,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "update", - "group": "databases", + "method": "updateLineAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update.md", + "demo": "databases\/update-line-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "collections.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-line-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.update" + "replaceWith": "tablesDB.updateLineColumn" }, - "methods": [ - { - "name": "update", - "namespace": "databases", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "name", - "enabled" - ], - "required": [ - "databaseId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/database" - } - ], - "description": "Update a database by its unique ID.", - "demo": "databases\/update.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.update" - } - } - ], "auth": { "Project": [] } @@ -15857,6 +15410,25 @@ "x-example": "" }, "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" } ], "requestBody": { @@ -15865,85 +15437,82 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Database name. Max length: 128 chars.", - "x-example": "" - }, - "enabled": { + "required": { "type": "boolean", - "description": "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.", - "default": true, + "description": "Is attribute required?", "x-example": false + }, + "default": { + "type": "array", + "description": "Default value for attribute when not provided, two-dimensional array of coordinate pairs, [[longitude, latitude], [longitude, latitude], \u2026], listing the vertices of the line in order. Cannot be set when attribute is required.", + "x-example": "[[1, 2], [3, 4], [5, 6]]", + "items": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + }, + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New attribute key.", + "x-example": null, + "x-nullable": true } - } + }, + "required": [ + "required" + ] } } } } - }, - "delete": { - "summary": "Delete database", - "operationId": "databasesDelete", - "tags": [ + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/longtext": { + "post": { + "summary": "Create longtext attribute", + "operationId": "databasesCreateLongtextAttribute", + "tags": [ "databases" ], - "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", + "description": "Create a longtext attribute.\n", "responses": { - "204": { - "description": "No content" + "202": { + "description": "AttributeLongtext", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/attributeLongtext" + } + } + } } }, "deprecated": true, "x-appwrite": { - "method": "delete", - "group": "databases", + "method": "createLongtextAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/delete.md", + "demo": "databases\/create-longtext-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "collections.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-longtext-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.delete" + "replaceWith": "tablesDB.createLongtextColumn" }, - "methods": [ - { - "name": "delete", - "namespace": "databases", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId" - ], - "required": [ - "databaseId" - ], - "responses": [ - { - "code": 204 - } - ], - "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", - "demo": "databases\/delete.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.delete" - } - } - ], "auth": { "Project": [] } @@ -15964,25 +15533,78 @@ "x-example": "" }, "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "", + "x-nullable": true + }, + "array": { + "type": "boolean", + "description": "Is attribute an array?", + "default": false, + "x-example": false + }, + "encrypt": { + "type": "boolean", + "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", + "default": false, + "x-example": false + } + }, + "required": [ + "key", + "required" + ] + } + } + } + } } }, - "\/databases\/{databaseId}\/collections": { - "get": { - "summary": "List collections", - "operationId": "databasesListCollections", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/longtext\/{key}": { + "patch": { + "summary": "Update longtext attribute", + "operationId": "databasesUpdateLongtextAttribute", "tags": [ "databases" ], - "description": "Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.", + "description": "Update a longtext attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Collections List", + "description": "AttributeLongtext", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collectionList" + "$ref": "#\/components\/schemas\/attributeLongtext" } } } @@ -15990,25 +15612,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "listCollections", - "group": "collections", + "method": "updateLongtextAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/list-collections.md", + "demo": "databases\/update-longtext-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "collections.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-longtext-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.listTables" + "replaceWith": "tablesDB.updateLongtextColumn" }, "auth": { "Project": [] @@ -16032,56 +15654,74 @@ "in": "path" }, { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "required": true, "schema": { "type": "string", - "x-example": "", - "default": "" + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, + "name": "key", + "description": "Attribute Key.", + "required": true, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string" }, - "in": "query" + "in": "path" } - ] - }, + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "", + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required", + "default" + ] + } + } + } + } + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/mediumtext": { "post": { - "summary": "Create collections", - "operationId": "databasesCreateCollection", + "summary": "Create mediumtext attribute", + "operationId": "databasesCreateMediumtextAttribute", "tags": [ "databases" ], - "description": "Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", + "description": "Create a mediumtext attribute.\n", "responses": { - "201": { - "description": "Collection", + "202": { + "description": "AttributeMediumtext", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/attributeMediumtext" } } } @@ -16089,11 +15729,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createCollection", - "group": "collections", + "method": "createMediumtextAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-collection.md", + "demo": "databases\/create-mediumtext-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16104,10 +15744,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-mediumtext-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createTable" + "replaceWith": "tablesDB.createMediumtextColumn" }, "auth": { "Project": [] @@ -16129,6 +15769,16 @@ "x-example": "" }, "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } ], "requestBody": { @@ -16137,62 +15787,38 @@ "schema": { "type": "object", "properties": { - "collectionId": { + "key": { "type": "string", - "description": "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.", - "x-example": "", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Attribute Key.", + "x-example": null }, - "name": { - "type": "string", - "description": "Collection name. Max length: 128 chars.", - "x-example": "" + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false }, - "permissions": { - "type": "array", - "description": "An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "x-example": "[\"read(\"any\")\"]", - "items": { - "type": "string" - }, + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "", "x-nullable": true }, - "documentSecurity": { + "array": { "type": "boolean", - "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "description": "Is attribute an array?", "default": false, "x-example": false }, - "enabled": { + "encrypt": { "type": "boolean", - "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.", - "default": true, + "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", + "default": false, "x-example": false - }, - "attributes": { - "type": "array", - "description": "Array of attribute definitions to create. Each attribute should contain: key (string), type (string: string, integer, float, boolean, datetime), size (integer, required for string type), required (boolean, optional), default (mixed, optional), array (boolean, optional), and type-specific options.", - "default": [], - "x-example": null, - "items": { - "type": "object" - } - }, - "indexes": { - "type": "array", - "description": "Array of index definitions to create. Each index should contain: key (string), type (string: key, fulltext, unique, spatial), attributes (array of attribute keys), orders (array of ASC\/DESC, optional), and lengths (array of integers, optional).", - "default": [], - "x-example": null, - "items": { - "type": "object" - } } }, "required": [ - "collectionId", - "name" + "key", + "required" ] } } @@ -16200,21 +15826,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}": { - "get": { - "summary": "Get collection", - "operationId": "databasesGetCollection", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/mediumtext\/{key}": { + "patch": { + "summary": "Update mediumtext attribute", + "operationId": "databasesUpdateMediumtextAttribute", "tags": [ "databases" ], - "description": "Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.", + "description": "Update a mediumtext attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Collection", + "description": "AttributeMediumtext", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/attributeMediumtext" } } } @@ -16222,25 +15848,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "getCollection", - "group": "collections", + "method": "updateMediumtextAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/get-collection.md", + "demo": "databases\/update-mediumtext-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "collections.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-mediumtext-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.getTable" + "replaceWith": "tablesDB.updateMediumtextColumn" }, "auth": { "Project": [] @@ -16265,30 +15891,73 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" } - ] - }, - "put": { - "summary": "Update collection", - "operationId": "databasesUpdateCollection", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "", + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required", + "default" + ] + } + } + } + } + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/point": { + "post": { + "summary": "Create point attribute", + "operationId": "databasesCreatePointAttribute", "tags": [ "databases" ], - "description": "Update a collection by its unique ID.", + "description": "Create a geometric point attribute.", "responses": { - "200": { - "description": "Collection", + "202": { + "description": "AttributePoint", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/attributePoint" } } } @@ -16296,11 +15965,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateCollection", - "group": "collections", + "method": "createPointAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-collection.md", + "demo": "databases\/create-point-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16311,10 +15980,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-point-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateTable" + "replaceWith": "tablesDB.createPointColumn" }, "auth": { "Project": [] @@ -16339,7 +16008,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -16354,63 +16023,64 @@ "schema": { "type": "object", "properties": { - "name": { + "key": { "type": "string", - "description": "Collection name. Max length: 128 chars.", - "x-example": "" + "description": "Attribute Key.", + "x-example": null }, - "permissions": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { "type": "array", - "description": "An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "x-example": "[\"read(\"any\")\"]", + "description": "Default value for attribute when not provided, array of two numbers [longitude, latitude], representing a single coordinate. Cannot be set when attribute is required.", + "x-example": "[1, 2]", "items": { - "type": "string" + "type": "number", + "format": "double" }, "x-nullable": true - }, - "documentSecurity": { - "type": "boolean", - "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "default": false, - "x-example": false - }, - "enabled": { - "type": "boolean", - "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.", - "default": true, - "x-example": false - }, - "purge": { - "type": "boolean", - "description": "When true, purge all cached list responses for this collection as part of the update. Use this to force readers to see fresh data immediately instead of waiting for the cache TTL to expire.", - "default": false, - "x-example": false } - } + }, + "required": [ + "key", + "required" + ] } } } } - }, - "delete": { - "summary": "Delete collection", - "operationId": "databasesDeleteCollection", + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/point\/{key}": { + "patch": { + "summary": "Update point attribute", + "operationId": "databasesUpdatePointAttribute", "tags": [ "databases" ], - "description": "Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.", + "description": "Update a point attribute. Changing the `default` value will not update already existing documents.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "AttributePoint", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/attributePoint" + } + } + } } }, "deprecated": true, "x-appwrite": { - "method": "deleteCollection", - "group": "collections", + "method": "updatePointAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/delete-collection.md", + "demo": "databases\/update-point-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16421,10 +16091,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-point-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.deleteTable" + "replaceWith": "tablesDB.updatePointColumn" }, "auth": { "Project": [] @@ -16449,132 +16119,76 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" } - ] - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes": { - "get": { - "summary": "List attributes", - "operationId": "databasesListAttributes", - "tags": [ - "databases" ], - "description": "List attributes in the collection.", - "responses": { - "200": { - "description": "Attributes List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributeList" - } + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { + "type": "array", + "description": "Default value for attribute when not provided, array of two numbers [longitude, latitude], representing a single coordinate. Cannot be set when attribute is required.", + "x-example": "[1, 2]", + "items": { + "type": "number", + "format": "double" + }, + "x-nullable": true + }, + "newKey": { + "type": "string", + "description": "New attribute key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "required" + ] } } } - }, - "deprecated": true, - "x-appwrite": { - "method": "listAttributes", - "group": "attributes", - "cookies": false, - "type": "", - "demo": "databases\/list-attributes.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.listColumns" - }, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] + } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/bigint": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/polygon": { "post": { - "summary": "Create bigint attribute", - "operationId": "databasesCreateBigIntAttribute", + "summary": "Create polygon attribute", + "operationId": "databasesCreatePolygonAttribute", "tags": [ "databases" ], - "description": "Create a bigint attribute. Optionally, minimum and maximum values can be provided.\n", + "description": "Create a geometric polygon attribute.", "responses": { "202": { - "description": "AttributeBigInt", + "description": "AttributePolygon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeBigint" + "$ref": "#\/components\/schemas\/attributePolygon" } } } @@ -16582,11 +16196,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createBigIntAttribute", + "method": "createPolygonAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-big-int-attribute.md", + "demo": "databases\/create-polygon-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16597,10 +16211,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-bigint-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-polygon-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createBigIntColumn" + "replaceWith": "tablesDB.createPolygonColumn" }, "auth": { "Project": [] @@ -16625,7 +16239,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -16650,32 +16264,21 @@ "description": "Is attribute required?", "x-example": false }, - "min": { - "type": "integer", - "description": "Minimum value", - "x-example": null, - "format": "int64", - "x-nullable": true - }, - "max": { - "type": "integer", - "description": "Maximum value", - "x-example": null, - "format": "int64", - "x-nullable": true - }, "default": { - "type": "integer", - "description": "Default value. Cannot be set when attribute is required.", - "x-example": null, - "format": "int64", + "type": "array", + "description": "Default value for attribute when not provided, three-dimensional array where the outer array holds one or more linear rings, [[[longitude, latitude], \u2026], \u2026], 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 attribute is required.", + "x-example": "[[[1, 2], [3, 4], [5, 6], [1, 2]]]", + "items": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + } + }, "x-nullable": true - }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false } }, "required": [ @@ -16688,21 +16291,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/bigint\/{key}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/polygon\/{key}": { "patch": { - "summary": "Update bigint attribute", - "operationId": "databasesUpdateBigIntAttribute", + "summary": "Update polygon attribute", + "operationId": "databasesUpdatePolygonAttribute", "tags": [ "databases" ], - "description": "Update a bigint attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Update a polygon attribute. Changing the `default` value will not update already existing documents.", "responses": { "200": { - "description": "AttributeBigInt", + "description": "AttributePolygon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeBigint" + "$ref": "#\/components\/schemas\/attributePolygon" } } } @@ -16710,11 +16313,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateBigIntAttribute", + "method": "updatePolygonAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-big-int-attribute.md", + "demo": "databases\/update-polygon-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16725,10 +16328,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-bigint-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-polygon-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateBigIntColumn" + "replaceWith": "tablesDB.updatePolygonColumn" }, "auth": { "Project": [] @@ -16753,7 +16356,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", "required": true, "schema": { "type": "string", @@ -16782,37 +16385,31 @@ "description": "Is attribute required?", "x-example": false }, - "min": { - "type": "integer", - "description": "Minimum value", - "x-example": null, - "format": "int64", - "x-nullable": true - }, - "max": { - "type": "integer", - "description": "Maximum value", - "x-example": null, - "format": "int64", - "x-nullable": true - }, "default": { - "type": "integer", - "description": "Default value. Cannot be set when attribute is required.", - "x-example": null, - "format": "int64", + "type": "array", + "description": "Default value for attribute when not provided, three-dimensional array where the outer array holds one or more linear rings, [[[longitude, latitude], \u2026], \u2026], 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 attribute is required.", + "x-example": "[[[1, 2], [3, 4], [5, 6], [1, 2]]]", + "items": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + } + }, "x-nullable": true }, "newKey": { "type": "string", - "description": "New Attribute Key.", + "description": "New attribute key.", "x-example": null, "x-nullable": true } }, "required": [ - "required", - "default" + "required" ] } } @@ -16820,21 +16417,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship": { "post": { - "summary": "Create boolean attribute", - "operationId": "databasesCreateBooleanAttribute", + "summary": "Create relationship attribute", + "operationId": "databasesCreateRelationshipAttribute", "tags": [ "databases" ], - "description": "Create a boolean attribute.\n", + "description": "Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n", "responses": { "202": { - "description": "AttributeBoolean", + "description": "AttributeRelationship", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeBoolean" + "$ref": "#\/components\/schemas\/attributeRelationship" } } } @@ -16842,11 +16439,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createBooleanAttribute", + "method": "createRelationshipAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-boolean-attribute.md", + "demo": "databases\/create-relationship-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16857,10 +16454,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createBooleanColumn" + "replaceWith": "tablesDB.createRelationshipColumn" }, "auth": { "Project": [] @@ -16885,7 +16482,7 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "description": "Collection ID.", "required": true, "schema": { "type": "string", @@ -16900,32 +16497,68 @@ "schema": { "type": "object", "properties": { - "key": { + "relatedCollectionId": { "type": "string", - "description": "Attribute Key.", - "x-example": null + "description": "Related Collection ID.", + "x-example": "" }, - "required": { + "type": { + "type": "string", + "description": "Relation type", + "x-example": "oneToOne", + "enum": [ + "oneToOne", + "manyToOne", + "manyToMany", + "oneToMany" + ], + "x-enum-name": "RelationshipType", + "x-enum-keys": [ + "oneToOne", + "manyToOne", + "manyToMany", + "oneToMany" + ] + }, + "twoWay": { "type": "boolean", - "description": "Is attribute required?", + "description": "Is Two Way?", + "default": false, "x-example": false }, - "default": { - "type": "boolean", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": false, + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null, "x-nullable": true }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false + "twoWayKey": { + "type": "string", + "description": "Two Way Attribute Key.", + "x-example": null, + "x-nullable": true + }, + "onDelete": { + "type": "string", + "description": "Constraints option", + "default": "restrict", + "x-example": "cascade", + "enum": [ + "cascade", + "restrict", + "setNull" + ], + "x-enum-name": "RelationMutate", + "x-enum-keys": [ + "cascade", + "restrict", + "setNull" + ] } }, "required": [ - "key", - "required" + "relatedCollectionId", + "type" ] } } @@ -16933,21 +16566,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship\/{key}": { "patch": { - "summary": "Update boolean attribute", - "operationId": "databasesUpdateBooleanAttribute", + "summary": "Update relationship attribute", + "operationId": "databasesUpdateRelationshipAttribute", "tags": [ "databases" ], - "description": "Update a boolean attribute. Changing the `default` value will not update already existing documents.", + "description": "Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n", "responses": { "200": { - "description": "AttributeBoolean", + "description": "AttributeRelationship", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeBoolean" + "$ref": "#\/components\/schemas\/attributeRelationship" } } } @@ -16955,11 +16588,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateBooleanAttribute", + "method": "updateRelationshipAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-boolean-attribute.md", + "demo": "databases\/update-relationship-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16970,10 +16603,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateBooleanColumn" + "replaceWith": "tablesDB.updateRelationshipColumn" }, "auth": { "Project": [] @@ -16998,7 +16631,7 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", + "description": "Collection ID.", "required": true, "schema": { "type": "string", @@ -17022,49 +16655,50 @@ "schema": { "type": "object", "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "boolean", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": false, - "x-nullable": true + "onDelete": { + "type": "string", + "description": "Constraints option", + "x-example": "cascade", + "enum": [ + "cascade", + "restrict", + "setNull" + ], + "x-enum-name": "RelationMutate", + "x-enum-keys": [ + "cascade", + "restrict", + "setNull" + ] }, "newKey": { "type": "string", - "description": "New attribute key.", + "description": "New Attribute Key.", "x-example": null, "x-nullable": true } - }, - "required": [ - "required", - "default" - ] + } } } } } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string": { "post": { - "summary": "Create datetime attribute", - "operationId": "databasesCreateDatetimeAttribute", + "summary": "Create string attribute", + "operationId": "databasesCreateStringAttribute", "tags": [ "databases" ], - "description": "Create a date time attribute according to the ISO 8601 standard.", + "description": "Create a string attribute.\n", "responses": { "202": { - "description": "AttributeDatetime", + "description": "AttributeString", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeDatetime" + "$ref": "#\/components\/schemas\/attributeString" } } } @@ -17072,11 +16706,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createDatetimeAttribute", + "method": "createStringAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-datetime-attribute.md", + "demo": "databases\/create-string-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -17087,10 +16721,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createDatetimeColumn" + "replaceWith": "tablesDB.createStringColumn" }, "auth": { "Project": [] @@ -17115,7 +16749,7 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", + "description": "Collection ID. You can create a new table using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -17135,6 +16769,12 @@ "description": "Attribute Key.", "x-example": null }, + "size": { + "type": "integer", + "description": "Attribute size for text attributes, in number of characters.", + "x-example": 1, + "format": "int32" + }, "required": { "type": "boolean", "description": "Is attribute required?", @@ -17142,9 +16782,8 @@ }, "default": { "type": "string", - "description": "Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "", "x-nullable": true }, "array": { @@ -17152,10 +16791,17 @@ "description": "Is attribute an array?", "default": false, "x-example": false + }, + "encrypt": { + "type": "boolean", + "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", + "default": false, + "x-example": false } }, "required": [ "key", + "size", "required" ] } @@ -17164,21 +16810,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}": { "patch": { - "summary": "Update datetime attribute", - "operationId": "databasesUpdateDatetimeAttribute", + "summary": "Update string attribute", + "operationId": "databasesUpdateStringAttribute", "tags": [ "databases" ], - "description": "Update a date time attribute. Changing the `default` value will not update already existing documents.", + "description": "Update a string attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "AttributeDatetime", + "description": "AttributeString", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeDatetime" + "$ref": "#\/components\/schemas\/attributeString" } } } @@ -17186,11 +16832,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateDatetimeAttribute", + "method": "updateStringAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-datetime-attribute.md", + "demo": "databases\/update-string-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -17201,10 +16847,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateDatetimeColumn" + "replaceWith": "tablesDB.updateStringColumn" }, "auth": { "Project": [] @@ -17229,7 +16875,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new table using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -17261,13 +16907,19 @@ "default": { "type": "string", "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", + "x-example": "", + "x-nullable": true + }, + "size": { + "type": "integer", + "description": "Maximum size of the string attribute.", + "x-example": 1, + "format": "int32", "x-nullable": true }, "newKey": { "type": "string", - "description": "New attribute key.", + "description": "New Attribute Key.", "x-example": null, "x-nullable": true } @@ -17282,21 +16934,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/text": { "post": { - "summary": "Create email attribute", - "operationId": "databasesCreateEmailAttribute", + "summary": "Create text attribute", + "operationId": "databasesCreateTextAttribute", "tags": [ "databases" ], - "description": "Create an email attribute.\n", + "description": "Create a text attribute.\n", "responses": { "202": { - "description": "AttributeEmail", + "description": "AttributeText", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeEmail" + "$ref": "#\/components\/schemas\/attributeText" } } } @@ -17304,11 +16956,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createEmailAttribute", + "method": "createTextAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-email-attribute.md", + "demo": "databases\/create-text-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -17319,10 +16971,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-text-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createEmailColumn" + "replaceWith": "tablesDB.createTextColumn" }, "auth": { "Project": [] @@ -17347,7 +16999,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -17375,8 +17027,7 @@ "default": { "type": "string", "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "email@example.com", - "format": "email", + "x-example": "", "x-nullable": true }, "array": { @@ -17384,6 +17035,12 @@ "description": "Is attribute an array?", "default": false, "x-example": false + }, + "encrypt": { + "type": "boolean", + "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", + "default": false, + "x-example": false } }, "required": [ @@ -17396,21 +17053,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/text\/{key}": { "patch": { - "summary": "Update email attribute", - "operationId": "databasesUpdateEmailAttribute", + "summary": "Update text attribute", + "operationId": "databasesUpdateTextAttribute", "tags": [ "databases" ], - "description": "Update an email attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Update a text attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "AttributeEmail", + "description": "AttributeText", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeEmail" + "$ref": "#\/components\/schemas\/attributeText" } } } @@ -17418,11 +17075,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateEmailAttribute", + "method": "updateTextAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-email-attribute.md", + "demo": "databases\/update-text-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -17433,10 +17090,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-text-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateEmailColumn" + "replaceWith": "tablesDB.updateTextColumn" }, "auth": { "Project": [] @@ -17461,7 +17118,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -17493,8 +17150,7 @@ "default": { "type": "string", "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "email@example.com", - "format": "email", + "x-example": "", "x-nullable": true }, "newKey": { @@ -17514,21 +17170,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url": { "post": { - "summary": "Create enum attribute", - "operationId": "databasesCreateEnumAttribute", + "summary": "Create URL attribute", + "operationId": "databasesCreateUrlAttribute", "tags": [ "databases" ], - "description": "Create an enum attribute. The `elements` param acts as a white-list of accepted values for this attribute. \n", + "description": "Create a URL attribute.\n", "responses": { "202": { - "description": "AttributeEnum", + "description": "AttributeURL", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeEnum" + "$ref": "#\/components\/schemas\/attributeUrl" } } } @@ -17536,11 +17192,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createEnumAttribute", + "method": "createUrlAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-enum-attribute.md", + "demo": "databases\/create-url-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -17551,10 +17207,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-enum-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createEnumColumn" + "replaceWith": "tablesDB.createUrlColumn" }, "auth": { "Project": [] @@ -17599,14 +17255,6 @@ "description": "Attribute Key.", "x-example": null }, - "elements": { - "type": "array", - "description": "Array of enum values.", - "x-example": null, - "items": { - "type": "string" - } - }, "required": { "type": "boolean", "description": "Is attribute required?", @@ -17615,7 +17263,8 @@ "default": { "type": "string", "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", + "x-example": "https:\/\/example.com", + "format": "url", "x-nullable": true }, "array": { @@ -17627,7 +17276,6 @@ }, "required": [ "key", - "elements", "required" ] } @@ -17636,21 +17284,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}": { "patch": { - "summary": "Update enum attribute", - "operationId": "databasesUpdateEnumAttribute", + "summary": "Update URL attribute", + "operationId": "databasesUpdateUrlAttribute", "tags": [ "databases" ], - "description": "Update an enum attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Update an url attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "AttributeEnum", + "description": "AttributeURL", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeEnum" + "$ref": "#\/components\/schemas\/attributeUrl" } } } @@ -17658,11 +17306,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateEnumAttribute", + "method": "updateUrlAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-enum-attribute.md", + "demo": "databases\/update-url-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -17673,10 +17321,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateEnumColumn" + "replaceWith": "tablesDB.updateUrlColumn" }, "auth": { "Project": [] @@ -17725,14 +17373,6 @@ "schema": { "type": "object", "properties": { - "elements": { - "type": "array", - "description": "Updated list of enum values.", - "x-example": null, - "items": { - "type": "string" - } - }, "required": { "type": "boolean", "description": "Is attribute required?", @@ -17741,7 +17381,8 @@ "default": { "type": "string", "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", + "x-example": "https:\/\/example.com", + "format": "url", "x-nullable": true }, "newKey": { @@ -17752,7 +17393,6 @@ } }, "required": [ - "elements", "required", "default" ] @@ -17762,21 +17402,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/varchar": { "post": { - "summary": "Create float attribute", - "operationId": "databasesCreateFloatAttribute", + "summary": "Create varchar attribute", + "operationId": "databasesCreateVarcharAttribute", "tags": [ "databases" ], - "description": "Create a float attribute. Optionally, minimum and maximum values can be provided.\n", + "description": "Create a varchar attribute.\n", "responses": { "202": { - "description": "AttributeFloat", + "description": "AttributeVarchar", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeFloat" + "$ref": "#\/components\/schemas\/attributeVarchar" } } } @@ -17784,11 +17424,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createFloatAttribute", + "method": "createVarcharAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-float-attribute.md", + "demo": "databases\/create-varchar-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -17799,10 +17439,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-varchar-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createFloatColumn" + "replaceWith": "tablesDB.createVarcharColumn" }, "auth": { "Project": [] @@ -17827,7 +17467,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -17847,30 +17487,21 @@ "description": "Attribute Key.", "x-example": null }, + "size": { + "type": "integer", + "description": "Attribute size for varchar attributes, in number of characters. Maximum size is 16381.", + "x-example": 1, + "format": "int32" + }, "required": { "type": "boolean", "description": "Is attribute required?", "x-example": false }, - "min": { - "type": "number", - "description": "Minimum value.", - "x-example": null, - "format": "float", - "x-nullable": true - }, - "max": { - "type": "number", - "description": "Maximum value.", - "x-example": null, - "format": "float", - "x-nullable": true - }, "default": { - "type": "number", - "description": "Default value. Cannot be set when required.", - "x-example": null, - "format": "float", + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "", "x-nullable": true }, "array": { @@ -17878,10 +17509,17 @@ "description": "Is attribute an array?", "default": false, "x-example": false + }, + "encrypt": { + "type": "boolean", + "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", + "default": false, + "x-example": false } }, "required": [ "key", + "size", "required" ] } @@ -17890,21 +17528,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/varchar\/{key}": { "patch": { - "summary": "Update float attribute", - "operationId": "databasesUpdateFloatAttribute", + "summary": "Update varchar attribute", + "operationId": "databasesUpdateVarcharAttribute", "tags": [ "databases" ], - "description": "Update a float attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Update a varchar attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "AttributeFloat", + "description": "AttributeVarchar", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeFloat" + "$ref": "#\/components\/schemas\/attributeVarchar" } } } @@ -17912,11 +17550,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateFloatAttribute", + "method": "updateVarcharAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-float-attribute.md", + "demo": "databases\/update-varchar-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -17927,10 +17565,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-varchar-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateFloatColumn" + "replaceWith": "tablesDB.updateVarcharColumn" }, "auth": { "Project": [] @@ -17955,7 +17593,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -17984,25 +17622,17 @@ "description": "Is attribute required?", "x-example": false }, - "min": { - "type": "number", - "description": "Minimum value.", - "x-example": null, - "format": "float", - "x-nullable": true - }, - "max": { - "type": "number", - "description": "Maximum value.", - "x-example": null, - "format": "float", + "default": { + "type": "string", + "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", + "x-example": "", "x-nullable": true }, - "default": { - "type": "number", - "description": "Default value. Cannot be set when required.", - "x-example": null, - "format": "float", + "size": { + "type": "integer", + "description": "Maximum size of the varchar attribute.", + "x-example": 1, + "format": "int32", "x-nullable": true }, "newKey": { @@ -18022,21 +17652,103 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer": { - "post": { - "summary": "Create integer attribute", - "operationId": "databasesCreateIntegerAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}": { + "get": { + "summary": "Get attribute", + "operationId": "databasesGetAttribute", "tags": [ "databases" ], - "description": "Create an integer attribute. Optionally, minimum and maximum values can be provided.\n", + "description": "Get attribute by ID.", "responses": { - "202": { - "description": "AttributeInteger", + "200": { + "description": "AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeInteger" + "oneOf": [ + { + "$ref": "#\/components\/schemas\/attributeBoolean" + }, + { + "$ref": "#\/components\/schemas\/attributeInteger" + }, + { + "$ref": "#\/components\/schemas\/attributeFloat" + }, + { + "$ref": "#\/components\/schemas\/attributeEmail" + }, + { + "$ref": "#\/components\/schemas\/attributeEnum" + }, + { + "$ref": "#\/components\/schemas\/attributeUrl" + }, + { + "$ref": "#\/components\/schemas\/attributeIp" + }, + { + "$ref": "#\/components\/schemas\/attributeDatetime" + }, + { + "$ref": "#\/components\/schemas\/attributeRelationship" + }, + { + "$ref": "#\/components\/schemas\/attributeString" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "boolean": "#\/components\/schemas\/attributeBoolean", + "integer": "#\/components\/schemas\/attributeInteger", + "double": "#\/components\/schemas\/attributeFloat", + "string": "#\/components\/schemas\/attributeString", + "datetime": "#\/components\/schemas\/attributeDatetime", + "relationship": "#\/components\/schemas\/attributeRelationship" + }, + "x-propertyNames": [ + "type", + "format" + ], + "x-mapping": { + "#\/components\/schemas\/attributeBoolean": { + "type": "boolean" + }, + "#\/components\/schemas\/attributeInteger": { + "type": "integer" + }, + "#\/components\/schemas\/attributeFloat": { + "type": "double" + }, + "#\/components\/schemas\/attributeEmail": { + "type": "string", + "format": "email" + }, + "#\/components\/schemas\/attributeEnum": { + "type": "string", + "format": "enum" + }, + "#\/components\/schemas\/attributeUrl": { + "type": "string", + "format": "url" + }, + "#\/components\/schemas\/attributeIp": { + "type": "string", + "format": "ip" + }, + "#\/components\/schemas\/attributeDatetime": { + "type": "datetime" + }, + "#\/components\/schemas\/attributeRelationship": { + "type": "relationship" + }, + "#\/components\/schemas\/attributeString": { + "type": "string" + } + } + } } } } @@ -18044,25 +17756,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "createIntegerAttribute", + "method": "getAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-integer-attribute.md", + "demo": "databases\/get-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "collections.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createIntegerColumn" + "replaceWith": "tablesDB.getColumn" }, "auth": { "Project": [] @@ -18094,89 +17806,37 @@ "x-example": "" }, "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "min": { - "type": "integer", - "description": "Minimum value", - "x-example": null, - "format": "int64", - "x-nullable": true - }, - "max": { - "type": "integer", - "description": "Maximum value", - "x-example": null, - "format": "int64", - "x-nullable": true - }, - "default": { - "type": "integer", - "description": "Default value. Cannot be set when attribute is required.", - "x-example": null, - "format": "int64", - "x-nullable": true - }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false - } - }, - "required": [ - "key", - "required" - ] - } - } - } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}": { - "patch": { - "summary": "Update integer attribute", - "operationId": "databasesUpdateIntegerAttribute", + ] + }, + "delete": { + "summary": "Delete attribute", + "operationId": "databasesDeleteAttribute", "tags": [ "databases" ], - "description": "Update an integer attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Deletes an attribute.", "responses": { - "200": { - "description": "AttributeInteger", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributeInteger" - } - } - } + "204": { + "description": "No content" } }, "deprecated": true, "x-appwrite": { - "method": "updateIntegerAttribute", + "method": "deleteAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-integer-attribute.md", + "demo": "databases\/delete-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -18187,10 +17847,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateIntegerColumn" + "replaceWith": "tablesDB.deleteColumn" }, "auth": { "Project": [] @@ -18232,71 +17892,24 @@ }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "min": { - "type": "integer", - "description": "Minimum value", - "x-example": null, - "format": "int64", - "x-nullable": true - }, - "max": { - "type": "integer", - "description": "Maximum value", - "x-example": null, - "format": "int64", - "x-nullable": true - }, - "default": { - "type": "integer", - "description": "Default value. Cannot be set when attribute is required.", - "x-example": null, - "format": "int64", - "x-nullable": true - }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true - } - }, - "required": [ - "required", - "default" - ] - } - } - } - } + ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip": { - "post": { - "summary": "Create IP address attribute", - "operationId": "databasesCreateIpAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/documents": { + "get": { + "summary": "List documents", + "operationId": "databasesListDocuments", "tags": [ "databases" ], - "description": "Create IP address attribute.\n", + "description": "Get a list of all the user's documents in a given collection. You can use the query params to filter your results.", "responses": { - "202": { - "description": "AttributeIP", + "200": { + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeIp" + "$ref": "#\/components\/schemas\/documentList" } } } @@ -18304,25 +17917,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "createIpAttribute", - "group": "attributes", + "method": "listDocuments", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-ip-attribute.md", + "demo": "databases\/list-documents.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "documents.read", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createIpColumn" + "replaceWith": "tablesDB.listRows" }, "auth": { "Project": [] @@ -18331,7 +17945,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -18347,69 +17963,76 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "transactionId", + "description": "Transaction ID to read uncommitted changes within the transaction.", + "required": false, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + }, + { + "name": "ttl", + "description": "TTL (seconds) for caching list responses. Responses are stored in an in-memory key-value cache, keyed per project, collection, schema version (attributes and indexes), caller authorization roles, and the exact query \u2014 so users with different permissions never share cached entries. Schema changes invalidate cached entries automatically; document 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).", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value. Cannot be set when attribute is required.", - "x-example": null, - "x-nullable": true - }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false - } - }, - "required": [ - "key", - "required" - ] - } - } - } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}": { - "patch": { - "summary": "Update IP address attribute", - "operationId": "databasesUpdateIpAttribute", + ] + }, + "post": { + "summary": "Create document", + "operationId": "databasesCreateDocument", "tags": [ "databases" ], - "description": "Update an ip attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", "responses": { - "200": { - "description": "AttributeIP", + "201": { + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeIp" + "$ref": "#\/components\/schemas\/document" } } } @@ -18417,26 +18040,96 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateIpAttribute", - "group": "attributes", + "method": "createDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-ip-attribute.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "demo": "databases\/create-document.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateIpColumn" + "replaceWith": "tablesDB.createRow" }, + "methods": [ + { + "name": "createDocument", + "namespace": "databases", + "desc": "Create document", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "collectionId", + "documentId", + "data", + "permissions", + "transactionId" + ], + "required": [ + "databaseId", + "collectionId", + "documentId", + "data" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/document" + } + ], + "description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", + "demo": "databases\/create-document.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createRow" + } + }, + { + "name": "createDocuments", + "namespace": "databases", + "desc": "Create documents", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "collectionId", + "documents", + "transactionId" + ], + "required": [ + "databaseId", + "collectionId", + "documents" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/documentList" + } + ], + "description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", + "demo": "databases\/create-documents.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createRows" + } + } + ], "auth": { "Project": [] } @@ -18444,7 +18137,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -18460,22 +18155,13 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" - }, - { - "name": "key", - "description": "Attribute Key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" } ], "requestBody": { @@ -18484,49 +18170,65 @@ "schema": { "type": "object", "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { + "documentId": { "type": "string", - "description": "Default value. Cannot be set when attribute is required.", - "x-example": null, + "description": "Document 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.", + "default": "", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "data": { + "type": "object", + "description": "Document data as JSON object.", + "default": [], + "x-example": "{\"username\":\"walter.obrien\",\"email\":\"walter.obrien@example.com\",\"fullName\":\"Walter O'Brien\",\"age\":30,\"isAdmin\":false}" + }, + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + }, "x-nullable": true }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", + "documents": { + "type": "array", + "description": "Array of documents data as JSON objects.", + "default": [], "x-example": null, + "items": { + "type": "object" + } + }, + "transactionId": { + "type": "string", + "description": "Transaction ID for staging the operation.", + "x-example": "", "x-nullable": true } - }, - "required": [ - "required", - "default" - ] + } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/line": { - "post": { - "summary": "Create line attribute", - "operationId": "databasesCreateLineAttribute", + }, + "put": { + "summary": "Upsert documents", + "operationId": "databasesUpsertDocuments", "tags": [ "databases" ], - "description": "Create a geometric line attribute.", + "description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n", "responses": { - "202": { - "description": "AttributeLine", + "201": { + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeLine" + "$ref": "#\/components\/schemas\/documentList" } } } @@ -18534,26 +18236,60 @@ }, "deprecated": true, "x-appwrite": { - "method": "createLineAttribute", - "group": "attributes", + "method": "upsertDocuments", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-line-attribute.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "demo": "databases\/upsert-documents.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-line-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/upsert-documents.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createLineColumn" + "replaceWith": "tablesDB.upsertRows" }, + "methods": [ + { + "name": "upsertDocuments", + "namespace": "databases", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "collectionId", + "documents", + "transactionId" + ], + "required": [ + "databaseId", + "collectionId", + "documents" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/documentList" + } + ], + "description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n", + "demo": "databases\/upsert-documents.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.upsertRows" + } + } + ], "auth": { "Project": [] } @@ -18577,7 +18313,7 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "description": "Collection ID.", "required": true, "schema": { "type": "string", @@ -18592,55 +18328,43 @@ "schema": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { + "documents": { "type": "array", - "description": "Default value for attribute when not provided, two-dimensional array of coordinate pairs, [[longitude, latitude], [longitude, latitude], \u2026], listing the vertices of the line in order. Cannot be set when attribute is required.", - "x-example": "[[1, 2], [3, 4], [5, 6]]", + "description": "Array of document data as JSON objects. May contain partial documents.", + "x-example": null, "items": { - "type": "array", - "items": { - "type": "number", - "format": "double" - } - }, + "type": "object" + } + }, + "transactionId": { + "type": "string", + "description": "Transaction ID for staging the operation.", + "x-example": "", "x-nullable": true } }, "required": [ - "key", - "required" + "documents" ] } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/line\/{key}": { + }, "patch": { - "summary": "Update line attribute", - "operationId": "databasesUpdateLineAttribute", + "summary": "Update documents", + "operationId": "databasesUpdateDocuments", "tags": [ "databases" ], - "description": "Update a line attribute. Changing the `default` value will not update already existing documents.", + "description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.", "responses": { "200": { - "description": "AttributeLine", + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeLine" + "$ref": "#\/components\/schemas\/documentList" } } } @@ -18648,25 +18372,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateLineAttribute", - "group": "attributes", + "method": "updateDocuments", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-line-attribute.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "demo": "databases\/update-documents.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-line-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-documents.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateLineColumn" + "replaceWith": "tablesDB.updateRows" }, "auth": { "Project": [] @@ -18691,22 +18415,13 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", + "description": "Collection ID.", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" - }, - { - "name": "key", - "description": "Attribute Key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" } ], "requestBody": { @@ -18715,55 +18430,47 @@ "schema": { "type": "object", "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false + "data": { + "type": "object", + "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", + "default": [], + "x-example": "{\"username\":\"walter.obrien\",\"email\":\"walter.obrien@example.com\",\"fullName\":\"Walter O'Brien\",\"age\":33,\"isAdmin\":false}" }, - "default": { + "queries": { "type": "array", - "description": "Default value for attribute when not provided, two-dimensional array of coordinate pairs, [[longitude, latitude], [longitude, latitude], \u2026], listing the vertices of the line in order. Cannot be set when attribute is required.", - "x-example": "[[1, 2], [3, 4], [5, 6]]", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "default": [], + "x-example": null, "items": { - "type": "array", - "items": { - "type": "number", - "format": "double" - } - }, - "x-nullable": true + "type": "string" + } }, - "newKey": { + "transactionId": { "type": "string", - "description": "New attribute key.", - "x-example": null, + "description": "Transaction ID for staging the operation.", + "x-example": "", "x-nullable": true } - }, - "required": [ - "required" - ] + } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/longtext": { - "post": { - "summary": "Create longtext attribute", - "operationId": "databasesCreateLongtextAttribute", + }, + "delete": { + "summary": "Delete documents", + "operationId": "databasesDeleteDocuments", "tags": [ "databases" ], - "description": "Create a longtext attribute.\n", + "description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.", "responses": { - "202": { - "description": "AttributeLongtext", + "200": { + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeLongtext" + "$ref": "#\/components\/schemas\/documentList" } } } @@ -18771,25 +18478,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "createLongtextAttribute", - "group": "attributes", + "method": "deleteDocuments", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-longtext-attribute.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "demo": "databases\/delete-documents.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-longtext-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-documents.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createLongtextColumn" + "replaceWith": "tablesDB.deleteRows" }, "auth": { "Project": [] @@ -18821,68 +18528,48 @@ "x-example": "" }, "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "transactionId", + "description": "Transaction ID for staging the operation.", + "required": false, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "query" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true - }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false - }, - "encrypt": { - "type": "boolean", - "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", - "default": false, - "x-example": false - } - }, - "required": [ - "key", - "required" - ] - } - } - } - } + ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/longtext\/{key}": { - "patch": { - "summary": "Update longtext attribute", - "operationId": "databasesUpdateLongtextAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { + "get": { + "summary": "Get document", + "operationId": "databasesGetDocument", "tags": [ "databases" ], - "description": "Update a longtext attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Get a document by its unique ID. This endpoint response returns a JSON object with the document data.", "responses": { "200": { - "description": "AttributeLongtext", + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeLongtext" + "$ref": "#\/components\/schemas\/document" } } } @@ -18890,25 +18577,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateLongtextAttribute", - "group": "attributes", + "method": "getDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-longtext-attribute.md", + "demo": "databases\/get-document.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "documents.read", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-longtext-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateLongtextColumn" + "replaceWith": "tablesDB.getRow" }, "auth": { "Project": [] @@ -18917,7 +18605,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -18942,64 +18632,54 @@ "in": "path" }, { - "name": "key", - "description": "Attribute Key.", + "name": "documentId", + "description": "Document ID.", "required": true, "schema": { - "type": "string" + "type": "string", + "x-example": "" }, "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "transactionId", + "description": "Transaction ID to read uncommitted changes within the transaction.", + "required": false, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "query" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true - }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true - } - }, - "required": [ - "required", - "default" - ] - } - } - } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/mediumtext": { - "post": { - "summary": "Create mediumtext attribute", - "operationId": "databasesCreateMediumtextAttribute", + ] + }, + "put": { + "summary": "Upsert a document", + "operationId": "databasesUpsertDocument", "tags": [ "databases" ], - "description": "Create a mediumtext attribute.\n", + "description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", "responses": { - "202": { - "description": "AttributeMediumtext", + "201": { + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeMediumtext" + "$ref": "#\/components\/schemas\/document" } } } @@ -19007,26 +18687,63 @@ }, "deprecated": true, "x-appwrite": { - "method": "createMediumtextAttribute", - "group": "attributes", + "method": "upsertDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-mediumtext-attribute.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "demo": "databases\/upsert-document.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-mediumtext-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/upsert-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createMediumtextColumn" + "replaceWith": "tablesDB.upsertRow" }, + "methods": [ + { + "name": "upsertDocument", + "namespace": "databases", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "collectionId", + "documentId", + "data", + "permissions", + "transactionId" + ], + "required": [ + "databaseId", + "collectionId", + "documentId" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/document" + } + ], + "description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", + "demo": "databases\/upsert-document.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.upsertRow" + } + } + ], "auth": { "Project": [] } @@ -19034,7 +18751,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -19050,13 +18769,26 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "description": "Collection ID.", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" + }, + { + "name": "documentId", + "description": "Document ID.", + "required": true, + "schema": { + "type": "string", + "x-appwrite": { + "idGenerator": "ID.unique" + }, + "x-example": "" + }, + "in": "path" } ], "requestBody": { @@ -19065,60 +18797,47 @@ "schema": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null + "data": { + "type": "object", + "description": "Document data as JSON object. Include all required attributes of the document to be created or updated.", + "default": [], + "x-example": "{\"username\":\"walter.obrien\",\"email\":\"walter.obrien@example.com\",\"fullName\":\"Walter O'Brien\",\"age\":30,\"isAdmin\":false}" }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + }, + "x-nullable": true }, - "default": { + "transactionId": { "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", + "description": "Transaction ID for staging the operation.", + "x-example": "", "x-nullable": true - }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false - }, - "encrypt": { - "type": "boolean", - "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", - "default": false, - "x-example": false } - }, - "required": [ - "key", - "required" - ] + } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/mediumtext\/{key}": { + }, "patch": { - "summary": "Update mediumtext attribute", - "operationId": "databasesUpdateMediumtextAttribute", + "summary": "Update document", + "operationId": "databasesUpdateDocument", "tags": [ "databases" ], - "description": "Update a mediumtext attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.", "responses": { "200": { - "description": "AttributeMediumtext", + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeMediumtext" + "$ref": "#\/components\/schemas\/document" } } } @@ -19126,25 +18845,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateMediumtextAttribute", - "group": "attributes", + "method": "updateDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-mediumtext-attribute.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "demo": "databases\/update-document.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-mediumtext-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateMediumtextColumn" + "replaceWith": "tablesDB.updateRow" }, "auth": { "Project": [] @@ -19153,7 +18873,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -19169,7 +18891,7 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "description": "Collection ID.", "required": true, "schema": { "type": "string", @@ -19178,11 +18900,12 @@ "in": "path" }, { - "name": "key", - "description": "Attribute Key.", + "name": "documentId", + "description": "Document ID.", "required": true, "schema": { - "type": "string" + "type": "string", + "x-example": "" }, "in": "path" } @@ -19193,75 +18916,67 @@ "schema": { "type": "object", "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false + "data": { + "type": "object", + "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", + "default": [], + "x-example": "{\"username\":\"walter.obrien\",\"email\":\"walter.obrien@example.com\",\"fullName\":\"Walter O'Brien\",\"age\":33,\"isAdmin\":false}" }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + }, "x-nullable": true }, - "newKey": { + "transactionId": { "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true + "description": "Transaction ID for staging the operation.", + "x-example": "", + "x-nullable": true } - }, - "required": [ - "required", - "default" - ] + } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/point": { - "post": { - "summary": "Create point attribute", - "operationId": "databasesCreatePointAttribute", + }, + "delete": { + "summary": "Delete document", + "operationId": "databasesDeleteDocument", "tags": [ "databases" ], - "description": "Create a geometric point attribute.", + "description": "Delete a document by its unique ID.", "responses": { - "202": { - "description": "AttributePoint", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributePoint" - } - } - } + "204": { + "description": "No content" } }, "deprecated": true, "x-appwrite": { - "method": "createPointAttribute", - "group": "attributes", + "method": "deleteDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-point-attribute.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "demo": "databases\/delete-document.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-point-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createPointColumn" + "replaceWith": "tablesDB.deleteRow" }, "auth": { "Project": [] @@ -19270,7 +18985,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -19293,60 +19010,45 @@ "x-example": "" }, "in": "path" + }, + { + "name": "documentId", + "description": "Document ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "transactionId", + "description": "Transaction ID for staging the operation.", + "required": false, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "query" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "array", - "description": "Default value for attribute when not provided, array of two numbers [longitude, latitude], representing a single coordinate. Cannot be set when attribute is required.", - "x-example": "[1, 2]", - "items": { - "type": "number", - "format": "double" - }, - "x-nullable": true - } - }, - "required": [ - "key", - "required" - ] - } - } - } - } + ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/point\/{key}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/decrement": { "patch": { - "summary": "Update point attribute", - "operationId": "databasesUpdatePointAttribute", + "summary": "Decrement document attribute", + "operationId": "databasesDecrementDocumentAttribute", "tags": [ "databases" ], - "description": "Update a point attribute. Changing the `default` value will not update already existing documents.", + "description": "Decrement a specific attribute of a document by a given value.", "responses": { "200": { - "description": "AttributePoint", + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributePoint" + "$ref": "#\/components\/schemas\/document" } } } @@ -19354,25 +19056,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "updatePointAttribute", - "group": "attributes", + "method": "decrementDocumentAttribute", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-point-attribute.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "demo": "databases\/decrement-document-attribute.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ - "console", - "server" + "client", + "server", + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-point-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/decrement-document-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updatePointColumn" + "replaceWith": "tablesDB.decrementRowColumn" }, "auth": { "Project": [] @@ -19381,6 +19084,8 @@ "security": [ { "Project": [], + "Session": [], + "JWT": [], "Key": [] } ], @@ -19397,7 +19102,7 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", + "description": "Collection ID.", "required": true, "schema": { "type": "string", @@ -19406,8 +19111,18 @@ "in": "path" }, { - "name": "key", - "description": "Attribute Key.", + "name": "documentId", + "description": "Document ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "attribute", + "description": "Attribute key.", "required": true, "schema": { "type": "string" @@ -19421,52 +19136,48 @@ "schema": { "type": "object", "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false + "value": { + "type": "number", + "description": "Value to increment the attribute by. The value must be a number.", + "default": 1, + "x-example": null, + "format": "float" }, - "default": { - "type": "array", - "description": "Default value for attribute when not provided, array of two numbers [longitude, latitude], representing a single coordinate. Cannot be set when attribute is required.", - "x-example": "[1, 2]", - "items": { - "type": "number", - "format": "double" - }, + "min": { + "type": "number", + "description": "Minimum value for the attribute. If the current value is lesser than this value, an exception will be thrown.", + "x-example": null, + "format": "float", "x-nullable": true }, - "newKey": { + "transactionId": { "type": "string", - "description": "New attribute key.", - "x-example": null, + "description": "Transaction ID for staging the operation.", + "x-example": "", "x-nullable": true } - }, - "required": [ - "required" - ] + } } } } } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/polygon": { - "post": { - "summary": "Create polygon attribute", - "operationId": "databasesCreatePolygonAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/increment": { + "patch": { + "summary": "Increment document attribute", + "operationId": "databasesIncrementDocumentAttribute", "tags": [ "databases" ], - "description": "Create a geometric polygon attribute.", + "description": "Increment a specific attribute of a document by a given value.", "responses": { - "202": { - "description": "AttributePolygon", + "200": { + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributePolygon" + "$ref": "#\/components\/schemas\/document" } } } @@ -19474,25 +19185,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "createPolygonAttribute", - "group": "attributes", + "method": "incrementDocumentAttribute", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-polygon-attribute.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "demo": "databases\/increment-document-attribute.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ - "console", - "server" + "client", + "server", + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-polygon-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/increment-document-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createPolygonColumn" + "replaceWith": "tablesDB.incrementRowColumn" }, "auth": { "Project": [] @@ -19501,6 +19213,8 @@ "security": [ { "Project": [], + "Session": [], + "JWT": [], "Key": [] } ], @@ -19517,13 +19231,32 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "description": "Collection ID.", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" + }, + { + "name": "documentId", + "description": "Document ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "attribute", + "description": "Attribute key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" } ], "requestBody": { @@ -19532,58 +19265,48 @@ "schema": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null + "value": { + "type": "number", + "description": "Value to increment the attribute by. The value must be a number.", + "default": 1, + "x-example": null, + "format": "float" }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false + "max": { + "type": "number", + "description": "Maximum value for the attribute. If the current value is greater than this value, an error will be thrown.", + "x-example": null, + "format": "float", + "x-nullable": true }, - "default": { - "type": "array", - "description": "Default value for attribute when not provided, three-dimensional array where the outer array holds one or more linear rings, [[[longitude, latitude], \u2026], \u2026], 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 attribute is required.", - "x-example": "[[[1, 2], [3, 4], [5, 6], [1, 2]]]", - "items": { - "type": "array", - "items": { - "type": "array", - "items": { - "type": "number", - "format": "double" - } - } - }, + "transactionId": { + "type": "string", + "description": "Transaction ID for staging the operation.", + "x-example": "", "x-nullable": true } - }, - "required": [ - "key", - "required" - ] + } } } } } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/polygon\/{key}": { - "patch": { - "summary": "Update polygon attribute", - "operationId": "databasesUpdatePolygonAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/indexes": { + "get": { + "summary": "List indexes", + "operationId": "databasesListIndexes", "tags": [ "databases" ], - "description": "Update a polygon attribute. Changing the `default` value will not update already existing documents.", + "description": "List indexes in the collection.", "responses": { "200": { - "description": "AttributePolygon", + "description": "Indexes List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributePolygon" + "$ref": "#\/components\/schemas\/indexList" } } } @@ -19591,25 +19314,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "updatePolygonAttribute", - "group": "attributes", + "method": "listIndexes", + "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/update-polygon-attribute.md", + "demo": "databases\/list-indexes.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "collections.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-polygon-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updatePolygonColumn" + "replaceWith": "tablesDB.listIndexes" }, "auth": { "Project": [] @@ -19634,7 +19357,7 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#createCollection).", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -19643,73 +19366,45 @@ "in": "path" }, { - "name": "key", - "description": "Attribute Key.", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error", + "required": false, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "array", - "description": "Default value for attribute when not provided, three-dimensional array where the outer array holds one or more linear rings, [[[longitude, latitude], \u2026], \u2026], 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 attribute is required.", - "x-example": "[[[1, 2], [3, 4], [5, 6], [1, 2]]]", - "items": { - "type": "array", - "items": { - "type": "array", - "items": { - "type": "number", - "format": "double" - } - } - }, - "x-nullable": true - }, - "newKey": { - "type": "string", - "description": "New attribute key.", - "x-example": null, - "x-nullable": true - } - }, - "required": [ - "required" - ] - } - } + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship": { + ] + }, "post": { - "summary": "Create relationship attribute", - "operationId": "databasesCreateRelationshipAttribute", + "summary": "Create index", + "operationId": "databasesCreateIndex", "tags": [ "databases" ], - "description": "Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n", + "description": "Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request.\nAttributes can be `key`, `fulltext`, and `unique`.", "responses": { "202": { - "description": "AttributeRelationship", + "description": "Index", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeRelationship" + "$ref": "#\/components\/schemas\/index" } } } @@ -19717,11 +19412,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createRelationshipAttribute", - "group": "attributes", + "method": "createIndex", + "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/create-relationship-attribute.md", + "demo": "databases\/create-index.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -19732,10 +19427,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createRelationshipColumn" + "replaceWith": "tablesDB.createIndex" }, "auth": { "Project": [] @@ -19760,7 +19455,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -19775,68 +19470,69 @@ "schema": { "type": "object", "properties": { - "relatedCollectionId": { + "key": { "type": "string", - "description": "Related Collection ID.", - "x-example": "" + "description": "Index Key.", + "x-example": null }, "type": { "type": "string", - "description": "Relation type", - "x-example": "oneToOne", + "description": "Index type.", + "x-example": "key", "enum": [ - "oneToOne", - "manyToOne", - "manyToMany", - "oneToMany" + "key", + "fulltext", + "unique", + "spatial" ], - "x-enum-name": "RelationshipType", + "x-enum-name": "DatabasesIndexType", "x-enum-keys": [ - "oneToOne", - "manyToOne", - "manyToMany", - "oneToMany" + "key", + "fulltext", + "unique", + "spatial" ] }, - "twoWay": { - "type": "boolean", - "description": "Is Two Way?", - "default": false, - "x-example": false - }, - "key": { - "type": "string", - "description": "Attribute Key.", + "attributes": { + "type": "array", + "description": "Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.", "x-example": null, - "x-nullable": true + "items": { + "type": "string" + } }, - "twoWayKey": { - "type": "string", - "description": "Two Way Attribute Key.", + "orders": { + "type": "array", + "description": "Array of index orders. Maximum of 100 orders are allowed.", + "default": [], "x-example": null, - "x-nullable": true + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "x-enum-name": "OrderBy", + "x-enum-keys": [ + "asc", + "desc" + ] + } }, - "onDelete": { - "type": "string", - "description": "Constraints option", - "default": "restrict", - "x-example": "cascade", - "enum": [ - "cascade", - "restrict", - "setNull" - ], - "x-enum-name": "RelationMutate", - "x-enum-keys": [ - "cascade", - "restrict", - "setNull" - ] - } - }, - "required": [ - "relatedCollectionId", - "type" + "lengths": { + "type": "array", + "description": "Length of index. Maximum of 100", + "default": [], + "x-example": null, + "items": { + "type": "integer" + } + } + }, + "required": [ + "key", + "type", + "attributes" ] } } @@ -19844,21 +19540,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship\/{key}": { - "patch": { - "summary": "Update relationship attribute", - "operationId": "databasesUpdateRelationshipAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}": { + "get": { + "summary": "Get index", + "operationId": "databasesGetIndex", "tags": [ "databases" ], - "description": "Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n", + "description": "Get an index by its unique ID.", "responses": { "200": { - "description": "AttributeRelationship", + "description": "Index", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeRelationship" + "$ref": "#\/components\/schemas\/index" } } } @@ -19866,25 +19562,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateRelationshipAttribute", - "group": "attributes", + "method": "getIndex", + "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/update-relationship-attribute.md", + "demo": "databases\/get-index.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "collections.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateRelationshipColumn" + "replaceWith": "tablesDB.getIndex" }, "auth": { "Project": [] @@ -19909,7 +19605,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -19919,76 +19615,34 @@ }, { "name": "key", - "description": "Attribute Key.", + "description": "Index Key.", "required": true, "schema": { "type": "string" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "onDelete": { - "type": "string", - "description": "Constraints option", - "x-example": "cascade", - "enum": [ - "cascade", - "restrict", - "setNull" - ], - "x-enum-name": "RelationMutate", - "x-enum-keys": [ - "cascade", - "restrict", - "setNull" - ] - }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true - } - } - } - } - } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string": { - "post": { - "summary": "Create string attribute", - "operationId": "databasesCreateStringAttribute", + ] + }, + "delete": { + "summary": "Delete index", + "operationId": "databasesDeleteIndex", "tags": [ "databases" ], - "description": "Create a string attribute.\n", + "description": "Delete an index.", "responses": { - "202": { - "description": "AttributeString", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributeString" - } - } - } + "204": { + "description": "No content" } }, "deprecated": true, "x-appwrite": { - "method": "createStringAttribute", - "group": "attributes", + "method": "deleteIndex", + "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/create-string-attribute.md", + "demo": "databases\/delete-index.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -19999,10 +19653,10 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createStringColumn" + "replaceWith": "tablesDB.deleteIndex" }, "auth": { "Project": [] @@ -20027,82 +19681,41 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new table using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" + }, + { + "name": "key", + "description": "Index Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "size": { - "type": "integer", - "description": "Attribute size for text attributes, in number of characters.", - "x-example": 1, - "format": "int32" - }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true - }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false - }, - "encrypt": { - "type": "boolean", - "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", - "default": false, - "x-example": false - } - }, - "required": [ - "key", - "size", - "required" - ] - } - } - } - } + ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}": { - "patch": { - "summary": "Update string attribute", - "operationId": "databasesUpdateStringAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/usage": { + "get": { + "summary": "Get collection usage stats", + "operationId": "databasesGetCollectionUsage", "tags": [ "databases" ], - "description": "Update a string attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Get usage metrics and statistics for a collection. Returning the total number of documents. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", "responses": { "200": { - "description": "AttributeString", + "description": "UsageCollection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeString" + "$ref": "#\/components\/schemas\/usageCollection" } } } @@ -20110,25 +19723,24 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateStringAttribute", - "group": "attributes", + "method": "getCollectionUsage", + "group": null, "cookies": false, "type": "", - "demo": "databases\/update-string-attribute.md", + "demo": "databases\/get-collection-usage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "collections.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-usage.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateStringColumn" + "replaceWith": "tablesDB.getTableUsage" }, "auth": { "Project": [] @@ -20136,8 +19748,7 @@ }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ @@ -20152,81 +19763,55 @@ "in": "path" }, { - "name": "collectionId", - "description": "Collection ID. You can create a new table using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", - "required": true, + "name": "range", + "description": "Date range.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "24h", + "enum": [ + "24h", + "30d", + "90d" + ], + "x-enum-name": "UsageRange", + "x-enum-keys": [ + "Twenty Four Hours", + "Thirty Days", + "Ninety Days" + ], + "default": "30d" }, - "in": "path" + "in": "query" }, { - "name": "key", - "description": "Attribute Key.", + "name": "collectionId", + "description": "Collection ID.", "required": true, "schema": { - "type": "string" + "type": "string", + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true - }, - "size": { - "type": "integer", - "description": "Maximum size of the string attribute.", - "x-example": 1, - "format": "int32", - "x-nullable": true - }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true - } - }, - "required": [ - "required", - "default" - ] - } - } - } - } + ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/text": { - "post": { - "summary": "Create text attribute", - "operationId": "databasesCreateTextAttribute", + "\/databases\/{databaseId}\/usage": { + "get": { + "summary": "Get database usage stats", + "operationId": "databasesGetUsage", "tags": [ "databases" ], - "description": "Create a text attribute.\n", + "description": "Get usage metrics and statistics for a database. You can view the total number of collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", "responses": { - "202": { - "description": "AttributeText", + "200": { + "description": "UsageDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeText" + "$ref": "#\/components\/schemas\/usageDatabase" } } } @@ -20234,34 +19819,62 @@ }, "deprecated": true, "x-appwrite": { - "method": "createTextAttribute", - "group": "attributes", + "method": "getUsage", + "group": null, "cookies": false, "type": "", - "demo": "databases\/create-text-attribute.md", + "demo": "databases\/get-usage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "collections.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-text-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-database-usage.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createTextColumn" + "replaceWith": "tablesDB.getUsage" }, + "methods": [ + { + "name": "getUsage", + "namespace": "databases", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "range" + ], + "required": [ + "databaseId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/usageDatabase" + } + ], + "description": "Get usage metrics and statistics for a database. You can view the total number of collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "demo": "databases\/get-usage.md", + "public": true, + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.getUsage" + } + } + ], "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ @@ -20276,103 +19889,68 @@ "in": "path" }, { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", - "required": true, + "name": "range", + "description": "Date range.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "24h", + "enum": [ + "24h", + "30d", + "90d" + ], + "x-enum-name": "UsageRange", + "x-enum-keys": [ + "Twenty Four Hours", + "Thirty Days", + "Ninety Days" + ], + "default": "30d" }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true - }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false - }, - "encrypt": { - "type": "boolean", - "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", - "default": false, - "x-example": false - } - }, - "required": [ - "key", - "required" - ] - } - } + "in": "query" } - } + ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/text\/{key}": { - "patch": { - "summary": "Update text attribute", - "operationId": "databasesUpdateTextAttribute", + "\/documentsdb": { + "get": { + "summary": "List databases", + "operationId": "documentsDBList", "tags": [ - "databases" + "documentsDB" ], - "description": "Update a text attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.", "responses": { "200": { - "description": "AttributeText", + "description": "Databases List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeText" + "$ref": "#\/components\/schemas\/databaseList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateTextAttribute", - "group": "attributes", + "method": "list", + "group": "documentsdb", "cookies": false, "type": "", - "demo": "databases\/update-text-attribute.md", + "demo": "documentsdb\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "databases.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-text-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateTextColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list.md", "auth": { "Project": [] } @@ -20385,111 +19963,68 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following columns: name", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" + "in": "query" }, { - "name": "key", - "description": "Attribute Key.", - "required": true, + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, "schema": { - "type": "string" + "type": "boolean", + "x-example": false, + "default": true }, - "in": "path" + "in": "query" } + ] + }, + "post": { + "summary": "Create database", + "operationId": "documentsDBCreate", + "tags": [ + "documentsDB" ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true - }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true - } - }, - "required": [ - "required", - "default" - ] - } - } - } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url": { - "post": { - "summary": "Create URL attribute", - "operationId": "databasesCreateUrlAttribute", - "tags": [ - "databases" - ], - "description": "Create a URL attribute.\n", + "description": "Create a new Database.\n", "responses": { - "202": { - "description": "AttributeURL", + "201": { + "description": "Database", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeUrl" + "$ref": "#\/components\/schemas\/database" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createUrlAttribute", - "group": "attributes", + "method": "create", + "group": "documentsdb", "cookies": false, "type": "", - "demo": "databases\/create-url-attribute.md", + "demo": "documentsdb\/create.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "databases.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createUrlColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create.md", "auth": { "Project": [] } @@ -20500,61 +20035,44 @@ "Key": [] } ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "key": { + "databaseId": { "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false + "description": "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.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } }, - "default": { + "name": { "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "https:\/\/example.com", - "format": "url", - "x-nullable": true + "description": "Database name. Max length: 128 chars.", + "x-example": "" }, - "array": { + "enabled": { "type": "boolean", - "description": "Is attribute an array?", - "default": false, + "description": "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.", + "default": true, "x-example": false + }, + "dedicatedDatabaseId": { + "type": "string", + "description": "Optional dedicated database (compute) ID to attach this database to. Leave empty to create a database on the shared pool.", + "default": "", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } } }, "required": [ - "key", - "required" + "databaseId", + "name" ] } } @@ -20562,48 +20080,45 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}": { - "patch": { - "summary": "Update URL attribute", - "operationId": "databasesUpdateUrlAttribute", + "\/documentsdb\/transactions": { + "get": { + "summary": "List transactions", + "operationId": "documentsDBListTransactions", "tags": [ - "databases" + "documentsDB" ], - "description": "Update an url attribute. Changing the `default` value will not update already existing documents.\n", + "description": "List transactions across all databases.", "responses": { "200": { - "description": "AttributeURL", + "description": "Transaction List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeUrl" + "$ref": "#\/components\/schemas\/transactionList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateUrlAttribute", - "group": "attributes", + "method": "listTransactions", + "group": "transactions", "cookies": false, "type": "", - "demo": "databases\/update-url-attribute.md", + "demo": "documentsdb\/list-transactions.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "documents.read", "platforms": [ "console", - "server" + "server", + "client" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateUrlColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-transactions.md", "auth": { "Project": [] } @@ -20611,38 +20126,75 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries).", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" - }, + "in": "query" + } + ] + }, + "post": { + "summary": "Create transaction", + "operationId": "documentsDBCreateTransaction", + "tags": [ + "documentsDB" + ], + "description": "Create a new transaction.", + "responses": { + "201": { + "description": "Transaction", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/transaction" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createTransaction", + "group": "transactions", + "cookies": false, + "type": "", + "demo": "documentsdb\/create-transaction.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "documents.write", + "platforms": [ + "console", + "server", + "client" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-transaction.md", + "auth": { + "Project": [] + } + }, + "security": [ { - "name": "key", - "description": "Attribute Key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" + "Project": [], + "Key": [], + "Session": [], + "JWT": [] } ], "requestBody": { @@ -20651,77 +20203,59 @@ "schema": { "type": "object", "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "https:\/\/example.com", - "format": "url", - "x-nullable": true - }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true + "ttl": { + "type": "integer", + "description": "Seconds before the transaction expires.", + "default": 300, + "x-example": 60, + "format": "int32" } - }, - "required": [ - "required", - "default" - ] + } } } } } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/varchar": { - "post": { - "summary": "Create varchar attribute", - "operationId": "databasesCreateVarcharAttribute", + "\/documentsdb\/transactions\/{transactionId}": { + "get": { + "summary": "Get transaction", + "operationId": "documentsDBGetTransaction", "tags": [ - "databases" + "documentsDB" ], - "description": "Create a varchar attribute.\n", + "description": "Get a transaction by its unique ID.", "responses": { - "202": { - "description": "AttributeVarchar", + "200": { + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeVarchar" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createVarcharAttribute", - "group": "attributes", + "method": "getTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "databases\/create-varchar-attribute.md", + "demo": "documentsdb\/get-transaction.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "documents.read", "platforms": [ "console", - "server" + "server", + "client" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-varchar-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createVarcharColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-transaction.md", "auth": { "Project": [] } @@ -20729,27 +20263,82 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "transactionId", + "description": "Transaction ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, + } + ] + }, + "patch": { + "summary": "Update transaction", + "operationId": "documentsDBUpdateTransaction", + "tags": [ + "documentsDB" + ], + "description": "Update a transaction, to either commit or roll back its operations.", + "responses": { + "200": { + "description": "Transaction", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/transaction" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateTransaction", + "group": "transactions", + "cookies": false, + "type": "", + "demo": "documentsdb\/update-transaction.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "documents.write", + "platforms": [ + "console", + "server", + "client" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-transaction.md", + "auth": { + "Project": [] + } + }, + "security": [ { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "Project": [], + "Key": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "transactionId", + "description": "Transaction ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } @@ -20760,94 +20349,55 @@ "schema": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "size": { - "type": "integer", - "description": "Attribute size for varchar attributes, in number of characters. Maximum size is 16381.", - "x-example": 1, - "format": "int32" - }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true - }, - "array": { + "commit": { "type": "boolean", - "description": "Is attribute an array?", + "description": "Commit transaction?", "default": false, "x-example": false }, - "encrypt": { + "rollback": { "type": "boolean", - "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.", + "description": "Rollback transaction?", "default": false, "x-example": false } - }, - "required": [ - "key", - "size", - "required" - ] + } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/varchar\/{key}": { - "patch": { - "summary": "Update varchar attribute", - "operationId": "databasesUpdateVarcharAttribute", + }, + "delete": { + "summary": "Delete transaction", + "operationId": "documentsDBDeleteTransaction", "tags": [ - "databases" + "documentsDB" ], - "description": "Update a varchar attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Delete a transaction by its unique ID.", "responses": { - "200": { - "description": "AttributeVarchar", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributeVarchar" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateVarcharAttribute", - "group": "attributes", + "method": "deleteTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "databases\/update-varchar-attribute.md", + "demo": "documentsdb\/delete-transaction.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "documents.write", "platforms": [ "console", - "server" + "server", + "client" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-varchar-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateVarcharColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-transaction.md", "auth": { "Project": [] } @@ -20855,205 +20405,158 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "name": "transactionId", + "description": "Transaction ID.", "required": true, "schema": { "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "key", - "description": "Attribute Key.", - "required": true, - "schema": { - "type": "string" + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { - "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true - }, - "size": { - "type": "integer", - "description": "Maximum size of the varchar attribute.", - "x-example": 1, - "format": "int32", - "x-nullable": true - }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true - } - }, - "required": [ - "required", - "default" - ] - } - } - } - } + ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}": { + "\/documentsdb\/usage": { "get": { - "summary": "Get attribute", - "operationId": "databasesGetAttribute", + "summary": "Get DocumentsDB usage stats", + "operationId": "documentsDBListUsage", "tags": [ - "databases" + "documentsDB" ], - "description": "Get attribute by ID.", + "description": "List usage metrics and statistics for all databases in the project. You can view the total number of databases, collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", "responses": { "200": { - "description": "AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString", + "description": "UsageDocumentsDBs", "content": { "application\/json": { "schema": { - "oneOf": [ - { - "$ref": "#\/components\/schemas\/attributeBoolean" - }, - { - "$ref": "#\/components\/schemas\/attributeInteger" - }, - { - "$ref": "#\/components\/schemas\/attributeFloat" - }, - { - "$ref": "#\/components\/schemas\/attributeEmail" - }, - { - "$ref": "#\/components\/schemas\/attributeEnum" - }, - { - "$ref": "#\/components\/schemas\/attributeUrl" - }, - { - "$ref": "#\/components\/schemas\/attributeIp" - }, - { - "$ref": "#\/components\/schemas\/attributeDatetime" - }, - { - "$ref": "#\/components\/schemas\/attributeRelationship" - }, - { - "$ref": "#\/components\/schemas\/attributeString" - } - ], - "discriminator": { - "propertyName": "type", - "mapping": { - "boolean": "#\/components\/schemas\/attributeBoolean", - "integer": "#\/components\/schemas\/attributeInteger", - "double": "#\/components\/schemas\/attributeFloat", - "string": "#\/components\/schemas\/attributeString", - "datetime": "#\/components\/schemas\/attributeDatetime", - "relationship": "#\/components\/schemas\/attributeRelationship" - }, - "x-propertyNames": [ - "type", - "format" - ], - "x-mapping": { - "#\/components\/schemas\/attributeBoolean": { - "type": "boolean" - }, - "#\/components\/schemas\/attributeInteger": { - "type": "integer" - }, - "#\/components\/schemas\/attributeFloat": { - "type": "double" - }, - "#\/components\/schemas\/attributeEmail": { - "type": "string", - "format": "email" - }, - "#\/components\/schemas\/attributeEnum": { - "type": "string", - "format": "enum" - }, - "#\/components\/schemas\/attributeUrl": { - "type": "string", - "format": "url" - }, - "#\/components\/schemas\/attributeIp": { - "type": "string", - "format": "ip" - }, - "#\/components\/schemas\/attributeDatetime": { - "type": "datetime" - }, - "#\/components\/schemas\/attributeRelationship": { - "type": "relationship" - }, - "#\/components\/schemas\/attributeString": { - "type": "string" - } - } - } + "$ref": "#\/components\/schemas\/usageDocumentsDBs" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "getAttribute", - "group": "attributes", + "method": "listUsage", + "group": null, "cookies": false, "type": "", - "demo": "databases\/get-attribute.md", + "demo": "documentsdb\/list-usage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "collections.read", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-usage.md", + "methods": [ + { + "name": "listUsage", + "namespace": "documentsDB", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "range" + ], + "required": [], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/usageDocumentsDBs" + } + ], + "description": "List usage metrics and statistics for all databases in the project. You can view the total number of databases, collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "demo": "documentsdb\/list-usage.md", + "public": true + } + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "range", + "description": "Date range.", + "required": false, + "schema": { + "type": "string", + "x-example": "24h", + "enum": [ + "24h", + "30d", + "90d" + ], + "x-enum-name": "UsageRange", + "x-enum-keys": [ + "Twenty Four Hours", + "Thirty Days", + "Ninety Days" + ], + "default": "30d" + }, + "in": "query" + } + ] + } + }, + "\/documentsdb\/{databaseId}": { + "get": { + "summary": "Get database", + "operationId": "documentsDBGet", + "tags": [ + "documentsDB" + ], + "description": "Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.", + "responses": { + "200": { + "description": "Database", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/database" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "get", + "group": "documentsdb", + "cookies": false, + "type": "", + "demo": "documentsdb\/get.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.getColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get.md", "auth": { "Project": [] } @@ -21074,62 +20577,124 @@ "x-example": "" }, "in": "path" - }, + } + ] + }, + "put": { + "summary": "Update database", + "operationId": "documentsDBUpdate", + "tags": [ + "documentsDB" + ], + "description": "Update a database by its unique ID.", + "responses": { + "200": { + "description": "Database", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/database" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "update", + "group": "documentsdb", + "cookies": false, + "type": "", + "demo": "documentsdb\/update.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update.md", + "auth": { + "Project": [] + } + }, + "security": [ { - "name": "collectionId", - "description": "Collection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, + "Project": [], + "Key": [] + } + ], + "parameters": [ { - "name": "key", - "description": "Attribute Key.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { - "type": "string" + "type": "string", + "x-example": "" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Database name. Max length: 128 chars.", + "x-example": "" + }, + "enabled": { + "type": "boolean", + "description": "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.", + "default": true, + "x-example": false + } + }, + "required": [ + "name" + ] + } + } + } + } }, "delete": { - "summary": "Delete attribute", - "operationId": "databasesDeleteAttribute", + "summary": "Delete database", + "operationId": "documentsDBDelete", "tags": [ - "databases" + "documentsDB" ], - "description": "Deletes an attribute.", + "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", "responses": { "204": { "description": "No content" } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "deleteAttribute", - "group": "attributes", + "method": "delete", + "group": "documentsdb", "cookies": false, "type": "", - "demo": "databases\/delete-attribute.md", + "demo": "documentsdb\/delete.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "databases.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.deleteColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete.md", "auth": { "Project": [] } @@ -21150,72 +20715,48 @@ "x-example": "" }, "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "key", - "description": "Attribute Key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" } ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents": { + "\/documentsdb\/{databaseId}\/collections": { "get": { - "summary": "List documents", - "operationId": "databasesListDocuments", + "summary": "List collections", + "operationId": "documentsDBListCollections", "tags": [ - "databases" + "documentsDB" ], - "description": "Get a list of all the user's documents in a given collection. You can use the query params to filter your results.", + "description": "Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.", "responses": { "200": { - "description": "Documents List", + "description": "Collections List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/collectionList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "listDocuments", - "group": "documents", + "method": "listCollections", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/list-documents.md", + "demo": "documentsdb\/list-collections.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.read", + "scope": "collections.read", "platforms": [ "console", - "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.listRows" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-collections.md", "auth": { "Project": [] } @@ -21223,9 +20764,7 @@ "security": [ { "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Key": [] } ], "parameters": [ @@ -21239,19 +20778,9 @@ }, "in": "path" }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, { "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity", "required": false, "schema": { "type": "array", @@ -21263,12 +20792,13 @@ "in": "query" }, { - "name": "transactionId", - "description": "Transaction ID to read uncommitted changes within the transaction.", + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "" }, "in": "query" }, @@ -21282,132 +20812,46 @@ "default": true }, "in": "query" - }, - { - "name": "ttl", - "description": "TTL (seconds) for caching list responses. Responses are stored in an in-memory key-value cache, keyed per project, collection, schema version (attributes and indexes), caller authorization roles, and the exact query \u2014 so users with different permissions never share cached entries. Schema changes invalidate cached entries automatically; document 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).", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "x-example": 0, - "default": 0 - }, - "in": "query" } ] }, "post": { - "summary": "Create document", - "operationId": "databasesCreateDocument", + "summary": "Create collection", + "operationId": "documentsDBCreateCollection", "tags": [ - "databases" + "documentsDB" ], - "description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", + "description": "Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", "responses": { "201": { - "description": "Document", + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createDocument", - "group": "documents", + "method": "createCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/create-document.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "documentsdb\/create-collection.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "collections.write", "platforms": [ "console", - "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createRow" - }, - "methods": [ - { - "name": "createDocument", - "namespace": "databases", - "desc": "Create document", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "collectionId", - "documentId", - "data", - "permissions", - "transactionId" - ], - "required": [ - "databaseId", - "collectionId", - "documentId", - "data" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/document" - } - ], - "description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", - "demo": "databases\/create-document.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createRow" - } - }, - { - "name": "createDocuments", - "namespace": "databases", - "desc": "Create documents", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "collectionId", - "documents", - "transactionId" - ], - "required": [ - "databaseId", - "collectionId", - "documents" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/documentList" - } - ], - "description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", - "demo": "databases\/create-documents.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createRows" - } - } - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-collection.md", "auth": { "Project": [] } @@ -21415,9 +20859,7 @@ "security": [ { "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Key": [] } ], "parameters": [ @@ -21430,16 +20872,6 @@ "x-example": "" }, "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" } ], "requestBody": { @@ -21448,126 +20880,107 @@ "schema": { "type": "object", "properties": { - "documentId": { + "collectionId": { "type": "string", - "description": "Document 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.", - "default": "", - "x-example": "", + "description": "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.", + "x-example": "", "x-appwrite": { "idGenerator": "ID.unique" } }, - "data": { - "type": "object", - "description": "Document data as JSON object.", - "default": [], - "x-example": "{\"username\":\"walter.obrien\",\"email\":\"walter.obrien@example.com\",\"fullName\":\"Walter O'Brien\",\"age\":30,\"isAdmin\":false}" + "name": { + "type": "string", + "description": "Collection name. Max length: 128 chars.", + "x-example": "" }, "permissions": { "type": "array", - "description": "An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "description": "An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", "x-example": "[\"read(\"any\")\"]", "items": { "type": "string" }, "x-nullable": true }, - "documents": { + "documentSecurity": { + "type": "boolean", + "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "default": false, + "x-example": false + }, + "enabled": { + "type": "boolean", + "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.", + "default": true, + "x-example": false + }, + "attributes": { "type": "array", - "description": "Array of documents data as JSON objects.", + "description": "Array of attribute definitions to create. Each attribute should contain: key (string), type (string: string, integer, float, boolean, datetime, relationship), size (integer, required for string type), required (boolean, optional), default (mixed, optional), array (boolean, optional), and type-specific options.", "default": [], "x-example": null, "items": { "type": "object" } }, - "transactionId": { - "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "indexes": { + "type": "array", + "description": "Array of index definitions to create. Each index should contain: key (string), type (string: key, fulltext, unique, spatial), attributes (array of attribute keys), orders (array of ASC\/DESC, optional), and lengths (array of integers, optional).", + "default": [], + "x-example": null, + "items": { + "type": "object" + } } - } + }, + "required": [ + "collectionId", + "name" + ] } } } } - }, - "put": { - "summary": "Upsert documents", - "operationId": "databasesUpsertDocuments", + } + }, + "\/documentsdb\/{databaseId}\/collections\/{collectionId}": { + "get": { + "summary": "Get collection", + "operationId": "documentsDBGetCollection", "tags": [ - "databases" + "documentsDB" ], - "description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n", + "description": "Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.", "responses": { - "201": { - "description": "Documents List", + "200": { + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "upsertDocuments", - "group": "documents", + "method": "getCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/upsert-documents.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "documentsdb\/get-collection.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "collections.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/upsert-documents.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.upsertRows" - }, - "methods": [ - { - "name": "upsertDocuments", - "namespace": "databases", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "collectionId", - "documents", - "transactionId" - ], - "required": [ - "databaseId", - "collectionId", - "documents" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/documentList" - } - ], - "description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n", - "demo": "databases\/upsert-documents.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.upsertRows" - } - } - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-collection.md", "auth": { "Project": [] } @@ -21599,77 +21012,45 @@ }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "documents": { - "type": "array", - "description": "Array of document data as JSON objects. May contain partial documents.", - "x-example": null, - "items": { - "type": "object" - } - }, - "transactionId": { - "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true - } - }, - "required": [ - "documents" - ] - } - } - } - } + ] }, - "patch": { - "summary": "Update documents", - "operationId": "databasesUpdateDocuments", + "put": { + "summary": "Update collection", + "operationId": "documentsDBUpdateCollection", "tags": [ - "databases" + "documentsDB" ], - "description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.", + "description": "Update a collection by its unique ID.", "responses": { "200": { - "description": "Documents List", + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateDocuments", - "group": "documents", + "method": "updateCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/update-documents.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "documentsdb\/update-collection.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "collections.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-documents.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateRows" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-collection.md", "auth": { "Project": [] } @@ -21708,74 +21089,76 @@ "schema": { "type": "object", "properties": { - "data": { - "type": "object", - "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", - "default": [], - "x-example": "{\"username\":\"walter.obrien\",\"email\":\"walter.obrien@example.com\",\"fullName\":\"Walter O'Brien\",\"age\":33,\"isAdmin\":false}" + "name": { + "type": "string", + "description": "Collection name. Max length: 128 chars.", + "x-example": "" }, - "queries": { + "permissions": { "type": "array", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", - "default": [], - "x-example": null, + "description": "An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", "items": { "type": "string" } }, - "transactionId": { - "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "documentSecurity": { + "type": "boolean", + "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "default": false, + "x-example": false + }, + "enabled": { + "type": "boolean", + "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.", + "default": true, + "x-example": false + }, + "purge": { + "type": "boolean", + "description": "When true, purge all cached list responses for this collection as part of the update. Use this to force readers to see fresh data immediately instead of waiting for the cache TTL to expire.", + "default": false, + "x-example": false } - } + }, + "required": [ + "name" + ] } } } } }, "delete": { - "summary": "Delete documents", - "operationId": "databasesDeleteDocuments", + "summary": "Delete collection", + "operationId": "documentsDBDeleteCollection", "tags": [ - "databases" + "documentsDB" ], - "description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.", + "description": "Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.", "responses": { - "200": { - "description": "Documents List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/documentList" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "deleteDocuments", - "group": "documents", + "method": "deleteCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/delete-documents.md", - "rate-limit": 60, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "documentsdb\/delete-collection.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "collections.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-documents.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.deleteRows" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-collection.md", "auth": { "Project": [] } @@ -21799,67 +21182,44 @@ }, { "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "description": "Collection ID.", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "transactionId", - "description": "Transaction ID for staging the operation.", - "required": false, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "query" } ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents": { "get": { - "summary": "Get document", - "operationId": "databasesGetDocument", + "summary": "List documents", + "operationId": "documentsDBListDocuments", "tags": [ - "databases" + "documentsDB" ], - "description": "Get a document by its unique ID. This endpoint response returns a JSON object with the document data.", + "description": "Get a list of all the user's documents in a given collection. You can use the query params to filter your results.", "responses": { "200": { - "description": "Document", + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/documentList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "getDocument", + "method": "listDocuments", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/get-document.md", + "demo": "documentsdb\/list-documents.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -21871,11 +21231,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.getRow" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-documents.md", "auth": { "Project": [] } @@ -21909,16 +21265,6 @@ }, "in": "path" }, - { - "name": "documentId", - "description": "Document ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, { "name": "queries", "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", @@ -21941,16 +21287,39 @@ "x-example": "" }, "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + }, + { + "name": "ttl", + "description": "TTL (seconds) for cached responses when caching is enabled for select queries. Must be between 0 and 86400 (24 hours).", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" } ] }, - "put": { - "summary": "Upsert a document", - "operationId": "databasesUpsertDocument", + "post": { + "summary": "Create document", + "operationId": "documentsDBCreateDocument", "tags": [ - "databases" + "documentsDB" ], - "description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", + "description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", "responses": { "201": { "description": "Document", @@ -21963,13 +21332,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "upsertDocument", + "method": "createDocument", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/upsert-document.md", + "demo": "documentsdb\/create-document.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -21981,16 +21350,12 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/upsert-document.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.upsertRow" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-document.md", "methods": [ { - "name": "upsertDocument", - "namespace": "databases", - "desc": "", + "name": "createDocument", + "namespace": "documentsDB", + "desc": "Create document", "auth": { "Project": [] }, @@ -21999,13 +21364,13 @@ "collectionId", "documentId", "data", - "permissions", - "transactionId" + "permissions" ], "required": [ "databaseId", "collectionId", - "documentId" + "documentId", + "data" ], "responses": [ { @@ -22013,13 +21378,36 @@ "model": "#\/components\/schemas\/document" } ], - "description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.", - "demo": "databases\/upsert-document.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.upsertRow" - } + "description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", + "demo": "documentsdb\/create-document.md", + "public": true + }, + { + "name": "createDocuments", + "namespace": "documentsDB", + "desc": "Create documents", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "collectionId", + "documents" + ], + "required": [ + "databaseId", + "collectionId", + "documents" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/documentList" + } + ], + "description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", + "demo": "documentsdb\/create-documents.md", + "public": true } ], "auth": { @@ -22047,26 +21435,13 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.", "required": true, "schema": { "type": "string", "x-example": "" }, "in": "path" - }, - { - "name": "documentId", - "description": "Document ID.", - "required": true, - "schema": { - "type": "string", - "x-appwrite": { - "idGenerator": "ID.unique" - }, - "x-example": "" - }, - "in": "path" } ], "requestBody": { @@ -22075,26 +21450,42 @@ "schema": { "type": "object", "properties": { + "documentId": { + "type": "string", + "description": "Document 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.", + "default": "", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, "data": { "type": "object", - "description": "Document data as JSON object. Include all required attributes of the document to be created or updated.", + "description": "Document data as JSON object.", "default": [], "x-example": "{\"username\":\"walter.obrien\",\"email\":\"walter.obrien@example.com\",\"fullName\":\"Walter O'Brien\",\"age\":30,\"isAdmin\":false}" }, "permissions": { "type": "array", - "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "description": "An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", "x-example": "[\"read(\"any\")\"]", "items": { "type": "string" - }, - "x-nullable": true + } + }, + "documents": { + "type": "array", + "description": "Array of documents data as JSON objects.", + "default": [], + "x-example": null, + "items": { + "type": "object" + } }, "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } @@ -22102,48 +21493,73 @@ } } }, - "patch": { - "summary": "Update document", - "operationId": "databasesUpdateDocument", + "put": { + "summary": "Upsert documents", + "operationId": "documentsDBUpsertDocuments", "tags": [ - "databases" + "documentsDB" ], - "description": "Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.", + "description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.\n", "responses": { - "200": { - "description": "Document", + "201": { + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/documentList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateDocument", + "method": "upsertDocuments", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-document.md", + "demo": "documentsdb\/upsert-documents.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", "scope": "documents.write", "platforms": [ "console", - "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateRow" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/upsert-documents.md", + "methods": [ + { + "name": "upsertDocuments", + "namespace": "documentsDB", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "collectionId", + "documents", + "transactionId" + ], + "required": [ + "databaseId", + "collectionId", + "documents" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/documentList" + } + ], + "description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.\n", + "demo": "documentsdb\/upsert-documents.md", + "public": true + } + ], "auth": { "Project": [] } @@ -22151,9 +21567,7 @@ "security": [ { "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Key": [] } ], "parameters": [ @@ -22176,14 +21590,101 @@ "x-example": "" }, "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "documents": { + "type": "array", + "description": "Array of document data as JSON objects. May contain partial documents.", + "x-example": null, + "items": { + "type": "object" + } + }, + "transactionId": { + "type": "string", + "description": "Transaction ID for staging the operation.", + "x-example": "" + } + }, + "required": [ + "documents" + ] + } + } + } + } + }, + "patch": { + "summary": "Update documents", + "operationId": "documentsDBUpdateDocuments", + "tags": [ + "documentsDB" + ], + "description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.", + "responses": { + "200": { + "description": "Documents List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/documentList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateDocuments", + "group": "documents", + "cookies": false, + "type": "", + "demo": "documentsdb\/update-documents.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-documents.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" }, { - "name": "documentId", - "description": "Document ID.", + "name": "collectionId", + "description": "Collection ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } @@ -22198,22 +21699,21 @@ "type": "object", "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", "default": [], - "x-example": "{\"username\":\"walter.obrien\",\"email\":\"walter.obrien@example.com\",\"fullName\":\"Walter O'Brien\",\"age\":33,\"isAdmin\":false}" + "x-example": "{}" }, - "permissions": { + "queries": { "type": "array", - "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "x-example": "[\"read(\"any\")\"]", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "default": [], + "x-example": null, "items": { "type": "string" - }, - "x-nullable": true + } }, "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } @@ -22222,40 +21722,42 @@ } }, "delete": { - "summary": "Delete document", - "operationId": "databasesDeleteDocument", + "summary": "Delete documents", + "operationId": "documentsDBDeleteDocuments", "tags": [ - "databases" + "documentsDB" ], - "description": "Delete a document by its unique ID.", + "description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Documents List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/documentList" + } + } + } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "deleteDocument", + "method": "deleteDocuments", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/delete-document.md", + "demo": "documentsdb\/delete-documents.md", "rate-limit": 60, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", "scope": "documents.write", "platforms": [ "console", - "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.deleteRow" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-documents.md", "auth": { "Project": [] } @@ -22263,9 +21765,7 @@ "security": [ { "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Key": [] } ], "parameters": [ @@ -22290,14 +21790,17 @@ "in": "path" }, { - "name": "documentId", - "description": "Document ID.", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" + "in": "query" }, { "name": "transactionId", @@ -22312,54 +21815,55 @@ ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs": { + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { "get": { - "summary": "List document logs", - "operationId": "databasesListDocumentLogs", + "summary": "Get document", + "operationId": "documentsDBGetDocument", "tags": [ - "databases" + "documentsDB" ], - "description": "Get the document activity logs list by its unique ID.", + "description": "Get a document by its unique ID. This endpoint response returns a JSON object with the document data.", "responses": { "200": { - "description": "Logs List", + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/document" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "listDocumentLogs", - "group": "logs", + "method": "getDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/list-document-logs.md", + "demo": "documentsdb\/get-document.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "documents.read", "platforms": [ - "console" + "console", + "client", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.listRowLogs" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-document.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -22375,7 +21879,7 @@ }, { "name": "collectionId", - "description": "Collection ID.", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", "required": true, "schema": { "type": "string", @@ -22395,7 +21899,7 @@ }, { "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", "required": false, "schema": { "type": "array", @@ -22405,20 +21909,28 @@ "default": [] }, "in": "query" + }, + { + "name": "transactionId", + "description": "Transaction ID to read uncommitted changes within the transaction.", + "required": false, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "query" } ] - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/decrement": { - "patch": { - "summary": "Decrement document attribute", - "operationId": "databasesDecrementDocumentAttribute", + }, + "put": { + "summary": "Upsert a document", + "operationId": "documentsDBUpsertDocument", "tags": [ - "databases" + "documentsDB" ], - "description": "Decrement a specific attribute of a document by a given value.", + "description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", "responses": { - "200": { + "201": { "description": "Document", "content": { "application\/json": { @@ -22429,29 +21941,57 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "decrementDocumentAttribute", + "method": "upsertDocument", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/decrement-document-attribute.md", + "demo": "documentsdb\/upsert-document.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", "scope": "documents.write", "platforms": [ + "console", "client", - "server", - "console" + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/decrement-document-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.decrementRowColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/upsert-document.md", + "methods": [ + { + "name": "upsertDocument", + "namespace": "documentsDB", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "collectionId", + "documentId", + "data", + "permissions", + "transactionId" + ], + "required": [ + "databaseId", + "collectionId", + "documentId" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/document" + } + ], + "description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", + "demo": "documentsdb\/upsert-document.md", + "public": true + } + ], "auth": { "Project": [] } @@ -22460,8 +22000,8 @@ { "Project": [], "Session": [], - "JWT": [], - "Key": [] + "Key": [], + "JWT": [] } ], "parameters": [ @@ -22494,15 +22034,6 @@ "x-example": "" }, "in": "path" - }, - { - "name": "attribute", - "description": "Attribute key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" } ], "requestBody": { @@ -22511,41 +22042,38 @@ "schema": { "type": "object", "properties": { - "value": { - "type": "number", - "description": "Value to increment the attribute by. The value must be a number.", - "default": 1, - "x-example": null, - "format": "float" + "data": { + "type": "object", + "description": "Document data as JSON object. Include all required fields of the document to be created or updated.", + "default": [], + "x-example": "{}" }, - "min": { - "type": "number", - "description": "Minimum value for the attribute. If the current value is lesser than this value, an exception will be thrown.", - "x-example": null, - "format": "float", - "x-nullable": true + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + } }, "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/increment": { + }, "patch": { - "summary": "Increment document attribute", - "operationId": "databasesIncrementDocumentAttribute", + "summary": "Update document", + "operationId": "documentsDBUpdateDocument", "tags": [ - "databases" + "documentsDB" ], - "description": "Increment a specific attribute of a document by a given value.", + "description": "Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.", "responses": { "200": { "description": "Document", @@ -22558,29 +22086,25 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "incrementDocumentAttribute", + "method": "updateDocument", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/increment-document-attribute.md", + "demo": "documentsdb\/update-document.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", "scope": "documents.write", "platforms": [ + "console", "client", - "server", - "console" + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/increment-document-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.incrementRowColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-document.md", "auth": { "Project": [] } @@ -22589,8 +22113,8 @@ { "Project": [], "Session": [], - "JWT": [], - "Key": [] + "Key": [], + "JWT": [] } ], "parameters": [ @@ -22623,15 +22147,6 @@ "x-example": "" }, "in": "path" - }, - { - "name": "attribute", - "description": "Attribute key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" } ], "requestBody": { @@ -22640,75 +22155,62 @@ "schema": { "type": "object", "properties": { - "value": { - "type": "number", - "description": "Value to increment the attribute by. The value must be a number.", - "default": 1, - "x-example": null, - "format": "float" + "data": { + "type": "object", + "description": "Document data as JSON object. Include only fields and value pairs to be updated.", + "default": [], + "x-example": "{}" }, - "max": { - "type": "number", - "description": "Maximum value for the attribute. If the current value is greater than this value, an error will be thrown.", - "x-example": null, - "format": "float", - "x-nullable": true + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + } }, "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/indexes": { - "get": { - "summary": "List indexes", - "operationId": "databasesListIndexes", + }, + "delete": { + "summary": "Delete document", + "operationId": "documentsDBDeleteDocument", "tags": [ - "databases" + "documentsDB" ], - "description": "List indexes in the collection.", + "description": "Delete a document by its unique ID.", "responses": { - "200": { - "description": "Indexes List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/indexList" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "listIndexes", - "group": "indexes", + "method": "deleteDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/list-indexes.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "demo": "documentsdb\/delete-document.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.listIndexes" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-document.md", "auth": { "Project": [] } @@ -22716,7 +22218,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -22741,72 +22245,406 @@ "in": "path" }, { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error", - "required": false, + "name": "documentId", + "description": "Document ID.", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "name": "transactionId", + "description": "Transaction ID for staging the operation.", "required": false, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "" }, "in": "query" } ] - }, - "post": { - "summary": "Create index", - "operationId": "databasesCreateIndex", + } + }, + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/decrement": { + "patch": { + "summary": "Decrement document attribute", + "operationId": "documentsDBDecrementDocumentAttribute", "tags": [ - "databases" + "documentsDB" ], - "description": "Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request.\nAttributes can be `key`, `fulltext`, and `unique`.", + "description": "Decrement a specific column of a row by a given value.", "responses": { - "202": { - "description": "Index", + "200": { + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/index" + "$ref": "#\/components\/schemas\/document" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createIndex", - "group": "indexes", + "method": "decrementDocumentAttribute", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-index.md", + "demo": "documentsdb\/decrement-document-attribute.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", + "platforms": [ + "client", + "server", + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/decrement-document-attribute.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "JWT": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "documentId", + "description": "Document ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "attribute", + "description": "Attribute key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "number", + "description": "Value to decrement the attribute by. The value must be a number.", + "default": 1, + "x-example": null, + "format": "float" + }, + "min": { + "type": "number", + "description": "Minimum value for the attribute. If the current value is lesser than this value, an exception will be thrown.", + "x-example": null, + "format": "float" + }, + "transactionId": { + "type": "string", + "description": "Transaction ID for staging the operation.", + "x-example": "" + } + } + } + } + } + } + } + }, + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/increment": { + "patch": { + "summary": "Increment document attribute", + "operationId": "documentsDBIncrementDocumentAttribute", + "tags": [ + "documentsDB" + ], + "description": "Increment a specific column of a row by a given value.", + "responses": { + "200": { + "description": "Document", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/document" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "incrementDocumentAttribute", + "group": "documents", + "cookies": false, + "type": "", + "demo": "documentsdb\/increment-document-attribute.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", + "platforms": [ + "client", + "server", + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/increment-document-attribute.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "JWT": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "documentId", + "description": "Document ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "attribute", + "description": "Attribute key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "value": { + "type": "number", + "description": "Value to increment the attribute by. The value must be a number.", + "default": 1, + "x-example": null, + "format": "float" + }, + "max": { + "type": "number", + "description": "Maximum value for the attribute. If the current value is greater than this value, an error will be thrown.", + "x-example": null, + "format": "float" + }, + "transactionId": { + "type": "string", + "description": "Transaction ID for staging the operation.", + "x-example": "" + } + } + } + } + } + } + } + }, + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/indexes": { + "get": { + "summary": "List indexes", + "operationId": "documentsDBListIndexes", + "tags": [ + "documentsDB" + ], + "description": "List indexes in the collection.", + "responses": { + "200": { + "description": "Indexes List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/indexList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listIndexes", + "group": "indexes", + "cookies": false, + "type": "", + "demo": "documentsdb\/list-indexes.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "collections.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createIndex" + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-indexes.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + } + ] + }, + "post": { + "summary": "Create index", + "operationId": "documentsDBCreateIndex", + "tags": [ + "documentsDB" + ], + "description": "Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request.\nAttributes can be `key`, `fulltext`, and `unique`.", + "responses": { + "202": { + "description": "Index", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/index" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createIndex", + "group": "indexes", + "cookies": false, + "type": "", + "demo": "documentsdb\/create-index.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "collections.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-index.md", "auth": { "Project": [] } @@ -22857,15 +22695,13 @@ "enum": [ "key", "fulltext", - "unique", - "spatial" + "unique" ], - "x-enum-name": "DatabasesIndexType", + "x-enum-name": "DocumentsDBIndexType", "x-enum-keys": [ "key", "fulltext", - "unique", - "spatial" + "unique" ] }, "attributes": { @@ -22915,14 +22751,14 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}": { + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}": { "get": { "summary": "Get index", - "operationId": "databasesGetIndex", + "operationId": "documentsDBGetIndex", "tags": [ - "databases" + "documentsDB" ], - "description": "Get an index by its unique ID.", + "description": "Get index by ID.", "responses": { "200": { "description": "Index", @@ -22935,13 +22771,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "getIndex", "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/get-index.md", + "demo": "documentsdb\/get-index.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -22952,11 +22788,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.getIndex" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-index.md", "auth": { "Project": [] } @@ -23001,9 +22833,9 @@ }, "delete": { "summary": "Delete index", - "operationId": "databasesDeleteIndex", + "operationId": "documentsDBDeleteIndex", "tags": [ - "databases" + "documentsDB" ], "description": "Delete an index.", "responses": { @@ -23011,13 +22843,13 @@ "description": "No content" } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "deleteIndex", "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/delete-index.md", + "demo": "documentsdb\/delete-index.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -23028,11 +22860,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.deleteIndex" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-index.md", "auth": { "Project": [] } @@ -23076,33 +22904,33 @@ ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/logs": { + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/usage": { "get": { - "summary": "List collection logs", - "operationId": "databasesListCollectionLogs", + "summary": "Get collection usage stats", + "operationId": "documentsDBGetCollectionUsage", "tags": [ - "databases" + "documentsDB" ], - "description": "Get the collection activity logs list by its unique ID.", + "description": "Get usage metrics and statistics for a collection. Returning the total number of documents. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", "responses": { "200": { - "description": "Logs List", + "description": "UsageCollection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/usageCollection" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "listCollectionLogs", - "group": "collections", + "method": "getCollectionUsage", + "group": null, "cookies": false, "type": "", - "demo": "databases\/list-collection-logs.md", + "demo": "documentsdb\/get-collection-usage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -23112,11 +22940,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.listTableLogs" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-collection-usage.md", "auth": { "Project": [] } @@ -23137,6 +22961,28 @@ }, "in": "path" }, + { + "name": "range", + "description": "Date range.", + "required": false, + "schema": { + "type": "string", + "x-example": "24h", + "enum": [ + "24h", + "30d", + "90d" + ], + "x-enum-name": "UsageRange", + "x-enum-keys": [ + "Twenty Four Hours", + "Thirty Days", + "Ninety Days" + ], + "default": "30d" + }, + "in": "query" + }, { "name": "collectionId", "description": "Collection ID.", @@ -23146,50 +22992,37 @@ "x-example": "" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" } ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/usage": { + "\/documentsdb\/{databaseId}\/usage": { "get": { - "summary": "Get collection usage stats", - "operationId": "databasesGetCollectionUsage", + "summary": "Get DocumentsDB usage stats", + "operationId": "documentsDBGetUsage", "tags": [ - "databases" + "documentsDB" ], - "description": "Get usage metrics and statistics for a collection. Returning the total number of documents. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "description": "Get usage metrics and statistics for a database. You can view the total number of collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", "responses": { "200": { - "description": "UsageCollection", + "description": "UsageDocumentsDB", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageCollection" + "$ref": "#\/components\/schemas\/usageDocumentsDB" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "getCollectionUsage", + "method": "getUsage", "group": null, "cookies": false, "type": "", - "demo": "databases\/get-collection-usage.md", + "demo": "documentsdb\/get-usage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -23199,11 +23032,33 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-usage.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.getTableUsage" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-database-usage.md", + "methods": [ + { + "name": "getUsage", + "namespace": "documentsDB", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "databaseId", + "range" + ], + "required": [ + "databaseId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/usageDocumentsDB" + } + ], + "description": "Get usage metrics and statistics for a database. You can view the total number of collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "demo": "documentsdb\/get-usage.md", + "public": true + } + ], "auth": { "Project": [] } @@ -23245,91 +23100,46 @@ "default": "30d" }, "in": "query" - }, - { - "name": "collectionId", - "description": "Collection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" } ] } }, - "\/databases\/{databaseId}\/logs": { + "\/domains": { "get": { - "summary": "List database logs", - "operationId": "databasesListLogs", + "summary": "List domains", + "operationId": "domainsList", "tags": [ - "databases" + "domains" ], - "description": "Get the database activity logs list by its unique ID.", + "description": "List all domains registered for this project. This endpoint supports pagination.", "responses": { "200": { - "description": "Logs List", + "description": "Domains list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/domainsList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "listLogs", - "group": "logs", + "method": "list", + "group": null, "cookies": false, "type": "", - "demo": "databases\/list-logs.md", + "demo": "domains\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "domains.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.listDatabaseLogs" - }, - "methods": [ - { - "name": "listLogs", - "namespace": "databases", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "queries" - ], - "required": [ - "databaseId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/logList" - } - ], - "description": "Get the database activity logs list by its unique ID.", - "demo": "databases\/list-logs.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.listDatabaseLogs" - } - } - ], "auth": { "Project": [] } @@ -23340,19 +23150,9 @@ } ], "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, { "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on attributes such as domain name, teamInternalId, expiration, etc.", "required": false, "schema": { "type": "array", @@ -23362,81 +23162,55 @@ "default": [] }, "in": "query" + }, + { + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "in": "query" } ] - } - }, - "\/databases\/{databaseId}\/usage": { - "get": { - "summary": "Get database usage stats", - "operationId": "databasesGetUsage", + }, + "post": { + "summary": "Create a new domain.", + "operationId": "domainsCreate", "tags": [ - "databases" + "domains" ], - "description": "Get usage metrics and statistics for a database. You can view the total number of collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "description": "Create a new domain. Before creating a domain, you need to ensure that your DNS provider is properly configured. After creating the domain, you can use the verification endpoint to check if the domain is ready to be used.", "responses": { - "200": { - "description": "UsageDatabase", + "201": { + "description": "Domain", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageDatabase" + "$ref": "#\/components\/schemas\/domain" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "getUsage", + "method": "create", "group": null, "cookies": false, "type": "", - "demo": "databases\/get-usage.md", + "demo": "domains\/create.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "domains.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-database-usage.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.getUsage" - }, - "methods": [ - { - "name": "getUsage", - "namespace": "databases", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "range" - ], - "required": [ - "databaseId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/usageDatabase" - } - ], - "description": "Get usage metrics and statistics for a database. You can view the total number of collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", - "demo": "databases\/get-usage.md", - "public": true, - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.getUsage" - } - } - ], "auth": { "Project": [] } @@ -23446,57 +23220,48 @@ "Project": [] } ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "range", - "description": "Date range.", - "required": false, - "schema": { - "type": "string", - "x-example": "24h", - "enum": [ - "24h", - "30d", - "90d" - ], - "x-enum-name": "UsageRange", - "x-enum-keys": [ - "Twenty Four Hours", - "Thirty Days", - "Ninety Days" - ], - "default": "30d" - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "teamId": { + "type": "string", + "description": "Team unique ID.", + "x-example": "" + }, + "domain": { + "type": "string", + "description": "Domain name (e.g. \"example.com\").", + "x-example": null + } + }, + "required": [ + "teamId", + "domain" + ] + } + } } - ] + } } }, - "\/documentsdb": { + "\/domains\/price": { "get": { - "summary": "List databases", - "operationId": "documentsDBList", + "summary": "Get domain price", + "operationId": "domainsGetPrice", "tags": [ - "documentsDB" + "domains" ], - "description": "Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.", + "description": "Get the registration price for a domain name.", "responses": { "200": { - "description": "Databases List", + "description": "DomainPrice", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/databaseList" + "$ref": "#\/components\/schemas\/domainPrice" } } } @@ -23504,73 +23269,92 @@ }, "deprecated": false, "x-appwrite": { - "method": "list", - "group": "documentsdb", + "method": "getPrice", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list.md", + "demo": "domains\/get-price.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "domains.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following columns: name", + "name": "domain", + "description": "Domain name to get price for.", + "required": true, + "schema": { + "type": "string" + }, + "in": "query" + }, + { + "name": "periodYears", + "description": "Number of years to calculate the domain price for. Must be at least 1.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "integer", + "format": "uint32", + "default": 1 }, "in": "query" }, { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "name": "registrationType", + "description": "Type of registration pricing to fetch. Allowed values: new, transfer, renewal, trade.", "required": false, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "new", + "enum": [ + "new", + "transfer", + "renewal", + "trade" + ], + "x-enum-name": "DomainRegistrationType", + "x-enum-keys": [ + "new", + "transfer", + "renewal", + "trade" + ], + "default": "new" }, "in": "query" } ] - }, + } + }, + "\/domains\/purchases": { "post": { - "summary": "Create database", - "operationId": "documentsDBCreate", + "summary": "Create a domain purchase", + "operationId": "domainsCreatePurchase", "tags": [ - "documentsDB" + "domains" ], - "description": "Create a new Database.\n", + "description": "Initiate a domain purchase by providing registrant details and a payment method. Authorizes the payment and returns a `clientSecret`. If 3D Secure is required, use the `clientSecret` on the client to complete the authentication challenge. Once authentication is complete (or if none is needed), call the Update Purchase endpoint to capture the payment and finalize the purchase.", "responses": { "201": { - "description": "Database", + "description": "DomainPurchase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/database" + "$ref": "#\/components\/schemas\/domainPurchase" } } } @@ -23578,30 +23362,27 @@ }, "deprecated": false, "x-appwrite": { - "method": "create", - "group": "documentsdb", + "method": "createPurchase", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/create.md", + "demo": "domains\/create-purchase.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "billing.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "requestBody": { @@ -23610,38 +23391,83 @@ "schema": { "type": "object", "properties": { - "databaseId": { + "domain": { "type": "string", - "description": "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.", - "x-example": "", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Fully qualified domain name to purchase (for example, example.com).", + "x-example": null }, - "name": { + "organizationId": { "type": "string", - "description": "Database name. Max length: 128 chars.", - "x-example": "" + "description": "Team ID that will own the domain.", + "x-example": "" }, - "enabled": { + "firstName": { + "type": "string", + "description": "Registrant first name used for domain registration.", + "x-example": "" + }, + "lastName": { + "type": "string", + "description": "Registrant last name used for domain registration.", + "x-example": "" + }, + "email": { + "type": "string", + "description": "Registrant email address for registration and notices.", + "x-example": "email@example.com", + "format": "email" + }, + "phone": { + "type": "string", + "description": "Registrant phone number in E.164 format (for example, +15555551234).", + "x-example": "+12065550100", + "format": "phone" + }, + "billingAddressId": { + "type": "string", + "description": "Billing address ID used for registration contact details.", + "x-example": "" + }, + "addressLine3": { + "type": "string", + "description": "Additional address line for the registrant (line 3).", + "default": "", + "x-example": "" + }, + "companyName": { + "type": "string", + "description": "Company or organization name for the registrant.", + "default": "", + "x-example": "" + }, + "periodYears": { + "type": "integer", + "description": "Registration term in years (1-10).", + "default": 1, + "x-example": 1, + "format": "int32" + }, + "autoRenewal": { "type": "boolean", - "description": "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.", + "description": "Whether the domain should renew automatically after purchase.", "default": true, "x-example": false }, - "dedicatedDatabaseId": { + "paymentMethodId": { "type": "string", - "description": "Optional dedicated database (compute) ID to attach this database to. Leave empty to create a database on the shared pool.", - "default": "", - "x-example": "", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Payment method ID to authorize and capture the purchase.", + "x-example": "" } }, "required": [ - "databaseId", - "name" + "domain", + "organizationId", + "firstName", + "lastName", + "email", + "phone", + "billingAddressId", + "paymentMethodId" ] } } @@ -23649,21 +23475,21 @@ } } }, - "\/documentsdb\/transactions": { - "get": { - "summary": "List transactions", - "operationId": "documentsDBListTransactions", + "\/domains\/purchases\/{invoiceId}": { + "patch": { + "summary": "Confirm a domain purchase", + "operationId": "domainsUpdatePurchase", "tags": [ - "documentsDB" + "domains" ], - "description": "List transactions across all databases.", + "description": "Finalize a domain purchase initiated with Create Purchase. Verifies that any required 3D Secure authentication is complete, registers the domain, captures the payment, and provisions default DNS records. Returns a 402 error if authentication is still pending.", "responses": { "200": { - "description": "Transaction List", + "description": "DomainPurchase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transactionList" + "$ref": "#\/components\/schemas\/domainPurchase" } } } @@ -23671,99 +23497,39 @@ }, "deprecated": false, "x-appwrite": { - "method": "listTransactions", - "group": "transactions", + "method": "updatePurchase", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-transactions.md", + "demo": "domains\/update-purchase.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.read", + "scope": "billing.write", "platforms": [ - "console", - "server", - "client" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-transactions.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries).", - "required": false, + "name": "invoiceId", + "description": "Invoice ID.", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "" }, - "in": "query" - } - ] - }, - "post": { - "summary": "Create transaction", - "operationId": "documentsDBCreateTransaction", - "tags": [ - "documentsDB" - ], - "description": "Create a new transaction.", - "responses": { - "201": { - "description": "Transaction", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/transaction" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createTransaction", - "group": "transactions", - "cookies": false, - "type": "", - "demo": "documentsdb\/create-transaction.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "documents.write", - "platforms": [ - "console", - "server", - "client" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-transaction.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "in": "path" } ], "requestBody": { @@ -23772,35 +23538,36 @@ "schema": { "type": "object", "properties": { - "ttl": { - "type": "integer", - "description": "Seconds before the transaction expires.", - "default": 300, - "x-example": 60, - "format": "int32" + "organizationId": { + "type": "string", + "description": "Team ID that owns the domain.", + "x-example": "" } - } + }, + "required": [ + "organizationId" + ] } } } } } }, - "\/documentsdb\/transactions\/{transactionId}": { + "\/domains\/suggestions": { "get": { - "summary": "Get transaction", - "operationId": "documentsDBGetTransaction", + "summary": "List domain suggestions", + "operationId": "domainsListSuggestions", "tags": [ - "documentsDB" + "domains" ], - "description": "Get a transaction by its unique ID.", + "description": "List domain suggestions.", "responses": { "200": { - "description": "Transaction", + "description": "Domain suggestions list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/domainSuggestionsList" } } } @@ -23808,62 +23575,120 @@ }, "deprecated": false, "x-appwrite": { - "method": "getTransaction", - "group": "transactions", + "method": "listSuggestions", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-transaction.md", - "rate-limit": 0, + "demo": "domains\/list-suggestions.md", + "rate-limit": 50, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.read", + "scope": "public", "platforms": [ - "console", - "server", - "client" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-transaction.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "transactionId", - "description": "Transaction ID.", + "name": "query", + "description": "Query to find available domains and suggestions. Max length: 256 chars.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "path" + "in": "query" + }, + { + "name": "tlds", + "description": "TLDs to suggest.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of suggestions to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + }, + "in": "query" + }, + { + "name": "filterType", + "description": "Filter type: premium, suggestion.", + "required": false, + "schema": { + "type": "string", + "x-example": "premium", + "enum": [ + "premium", + "suggestion" + ], + "x-enum-name": "DomainSuggestionType", + "x-enum-keys": [ + "premium", + "suggestion" + ] + }, + "in": "query" + }, + { + "name": "priceMax", + "description": "Filter premium domains by maximum price. Only premium domains at or below this price will be returned. Does not affect regular domain suggestions.", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + }, + "in": "query" + }, + { + "name": "priceMin", + "description": "Filter premium domains by minimum price. Only premium domains at or above this price will be returned. Does not affect regular domain suggestions.", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + }, + "in": "query" } ] - }, - "patch": { - "summary": "Update transaction", - "operationId": "documentsDBUpdateTransaction", + } + }, + "\/domains\/transfers\/in": { + "post": { + "summary": "Create a domain transfer in.", + "operationId": "domainsCreateTransferIn", "tags": [ - "documentsDB" + "domains" ], - "description": "Update a transaction, to either commit or roll back its operations.", + "description": "Initiate a domain transfer-in by providing an authorization code, registrant details, and a payment method. Authorizes the payment and returns a `clientSecret`. If 3D Secure is required, use the `clientSecret` on the client to complete the authentication challenge. Once authentication is complete (or if none is needed), call the Update Transfer In endpoint to capture the payment and submit the transfer.", "responses": { - "200": { - "description": "Transaction", + "201": { + "description": "DomainPurchase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/domainPurchase" } } } @@ -23871,45 +23696,27 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTransaction", - "group": "transactions", + "method": "createTransferIn", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/update-transaction.md", + "demo": "domains\/create-transfer-in.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.write", + "scope": "billing.write", "platforms": [ - "console", - "server", - "client" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-transaction.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "transactionId", - "description": "Transaction ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "Project": [] } ], "requestBody": { @@ -23918,96 +23725,138 @@ "schema": { "type": "object", "properties": { - "commit": { - "type": "boolean", - "description": "Commit transaction?", - "default": false, - "x-example": false + "domain": { + "type": "string", + "description": "Domain name to transfer in.", + "x-example": null }, - "rollback": { + "organizationId": { + "type": "string", + "description": "Organization ID that this domain will belong to.", + "x-example": "" + }, + "authCode": { + "type": "string", + "description": "Authorization code for the domain transfer.", + "x-example": "" + }, + "autoRenewal": { "type": "boolean", - "description": "Rollback transaction?", - "default": false, + "description": "Whether the domain should renew automatically after transfer.", + "default": true, "x-example": false + }, + "paymentMethodId": { + "type": "string", + "description": "Payment method ID to authorize and capture the transfer.", + "x-example": "" } - } + }, + "required": [ + "domain", + "organizationId", + "authCode", + "paymentMethodId" + ] } } } } - }, - "delete": { - "summary": "Delete transaction", - "operationId": "documentsDBDeleteTransaction", + } + }, + "\/domains\/transfers\/in\/{invoiceId}": { + "patch": { + "summary": "Confirm a domain transfer in", + "operationId": "domainsUpdateTransferIn", "tags": [ - "documentsDB" + "domains" ], - "description": "Delete a transaction by its unique ID.", + "description": "Finalize a domain transfer-in initiated with Create Transfer In. Verifies that any required 3D Secure authentication is complete, submits the transfer with the authorization code, captures the payment, and sends a confirmation email. Returns a 402 error if authentication is still pending.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "DomainPurchase", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/domainPurchase" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteTransaction", - "group": "transactions", + "method": "updateTransferIn", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/delete-transaction.md", + "demo": "domains\/update-transfer-in.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.write", + "scope": "billing.write", "platforms": [ - "console", - "server", - "client" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-transaction.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "transactionId", - "description": "Transaction ID.", + "name": "invoiceId", + "description": "Invoice ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "organizationId": { + "type": "string", + "description": "Team ID that owns the domain.", + "x-example": "" + } + }, + "required": [ + "organizationId" + ] + } + } + } + } } }, - "\/documentsdb\/usage": { - "get": { - "summary": "Get DocumentsDB usage stats", - "operationId": "documentsDBListUsage", + "\/domains\/transfers\/out": { + "post": { + "summary": "Create a domain transfer out.", + "operationId": "domainsCreateTransferOut", "tags": [ - "documentsDB" + "domains" ], - "description": "List usage metrics and statistics for all databases in the project. You can view the total number of databases, collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "description": "Initiate a domain transfer-out by generating an authorization code for the specified domain. The returned `authCode` should be provided to the gaining provider to complete the transfer. If the domain has auto-renewal enabled, it will be automatically disabled as part of this operation.", "responses": { - "200": { - "description": "UsageDatabases", + "202": { + "description": "domainTransferOut", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageDatabases" + "$ref": "#\/components\/schemas\/domainTransferOut" } } } @@ -24015,44 +23864,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "listUsage", + "method": "createTransferOut", "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-usage.md", + "demo": "domains\/create-transfer-out.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "billing.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-usage.md", - "methods": [ - { - "name": "listUsage", - "namespace": "documentsDB", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "range" - ], - "required": [], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/usageDatabases" - } - ], - "description": "List usage metrics and statistics for all databases in the project. You can view the total number of databases, collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", - "demo": "documentsdb\/list-usage.md", - "public": true - } - ], "auth": { "Project": [] } @@ -24062,47 +23887,48 @@ "Project": [] } ], - "parameters": [ - { - "name": "range", - "description": "Date range.", - "required": false, - "schema": { - "type": "string", - "x-example": "24h", - "enum": [ - "24h", - "30d", - "90d" - ], - "x-enum-name": "UsageRange", - "x-enum-keys": [ - "Twenty Four Hours", - "Thirty Days", - "Ninety Days" - ], - "default": "30d" - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "domainId": { + "type": "string", + "description": "Domain unique ID.", + "x-example": "" + }, + "organizationId": { + "type": "string", + "description": "Organization ID that this domain belongs to.", + "x-example": "" + } + }, + "required": [ + "domainId", + "organizationId" + ] + } + } } - ] + } } }, - "\/documentsdb\/{databaseId}": { + "\/domains\/{domainId}": { "get": { - "summary": "Get database", - "operationId": "documentsDBGet", + "summary": "Get a single domain by its unique ID.", + "operationId": "domainsGet", "tags": [ - "documentsDB" + "domains" ], - "description": "Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.", + "description": "Get a domain by its unique ID.", "responses": { "200": { - "description": "Database", + "description": "Domain", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/database" + "$ref": "#\/components\/schemas\/domain" } } } @@ -24111,58 +23937,110 @@ "deprecated": false, "x-appwrite": { "method": "get", - "group": "documentsdb", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get.md", + "demo": "domains\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "domains.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } ] }, - "put": { - "summary": "Update database", - "operationId": "documentsDBUpdate", + "delete": { + "summary": "Delete a domain by its unique ID.", + "operationId": "domainsDelete", "tags": [ - "documentsDB" + "domains" ], - "description": "Update a database by its unique ID.", + "description": "Delete a domain by its unique ID. This endpoint can be used to delete a domain from your project.\nOnce deleted, the domain will no longer be available for use and all associated resources will be removed.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "delete", + "group": null, + "cookies": false, + "type": "", + "demo": "domains\/delete.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "produces": [ + "application\/json" + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "domainId", + "description": "Domain unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/domains\/{domainId}\/auto-renewal": { + "patch": { + "summary": "Update domain auto-renewal setting.", + "operationId": "domainsUpdateAutoRenewal", + "tags": [ + "domains" + ], + "description": "Enable or disable auto-renewal for a domain.", "responses": { "200": { - "description": "Database", + "description": "Domain", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/database" + "$ref": "#\/components\/schemas\/domain" } } } @@ -24170,40 +24048,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "update", - "group": "documentsdb", + "method": "updateAutoRenewal", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/update.md", + "demo": "domains\/update-auto-renewal.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } @@ -24214,95 +24089,115 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Database name. Max length: 128 chars.", - "x-example": "" - }, - "enabled": { + "autoRenewal": { "type": "boolean", - "description": "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.", - "default": true, + "description": "Whether the domain should renew automatically.", "x-example": false } }, "required": [ - "name" + "autoRenewal" ] } } } } - }, - "delete": { - "summary": "Delete database", - "operationId": "documentsDBDelete", + } + }, + "\/domains\/{domainId}\/nameservers": { + "patch": { + "summary": "Update the registrar nameservers for the given domain.", + "operationId": "domainsUpdateNameservers", "tags": [ - "documentsDB" + "domains" ], - "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", + "description": "Update the registrar nameservers for the given domain. When nameservers are not provided,\nthe domain will be updated to use Appwrite nameservers.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Domain", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/domain" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", - "group": "documentsdb", + "method": "updateNameservers", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/delete.md", + "demo": "domains\/update-nameservers.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ] - } - }, - "\/documentsdb\/{databaseId}\/collections": { - "get": { - "summary": "List collections", - "operationId": "documentsDBListCollections", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "nameservers": { + "type": "array", + "description": "Nameservers to set for the domain. Defaults to Appwrite nameservers when omitted.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "\/domains\/{domainId}\/nameservers\/verification": { + "patch": { + "summary": "Verify which NS records are used and update the domain accordingly.", + "operationId": "domainsVerifyNameservers", "tags": [ - "documentsDB" + "domains" ], - "description": "Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.", + "description": "Verify which NS records are used and update the domain accordingly. This will check the domain's\nnameservers and update the domain's status based on whether the nameservers match the expected\nAppwrite nameservers.", "responses": { "200": { - "description": "Collections List", + "description": "Domain", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collectionList" + "$ref": "#\/components\/schemas\/domain" } } } @@ -24310,94 +24205,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCollections", - "group": "collections", + "method": "verifyNameservers", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-collections.md", + "demo": "domains\/verify-nameservers.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-collections.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, - "schema": { - "type": "string", - "x-example": "", - "default": "" - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" } ] - }, - "post": { - "summary": "Create collection", - "operationId": "documentsDBCreateCollection", + } + }, + "\/domains\/{domainId}\/presets\/google-workspace": { + "get": { + "summary": "Get Google Workspace preset (Records)", + "operationId": "domainsGetPresetGoogleWorkspace", "tags": [ - "documentsDB" + "domains" ], - "description": "Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", + "description": "List Google Workspace DNS records.", "responses": { "201": { - "description": "Collection", + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24405,128 +24264,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "createCollection", - "group": "collections", + "method": "getPresetGoogleWorkspace", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/create-collection.md", + "demo": "domains\/get-preset-google-workspace.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-collection.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "collectionId": { - "type": "string", - "description": "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.", - "x-example": "", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Collection name. Max length: 128 chars.", - "x-example": "" - }, - "permissions": { - "type": "array", - "description": "An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "x-example": "[\"read(\"any\")\"]", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "documentSecurity": { - "type": "boolean", - "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "default": false, - "x-example": false - }, - "enabled": { - "type": "boolean", - "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.", - "default": true, - "x-example": false - }, - "attributes": { - "type": "array", - "description": "Array of attribute definitions to create. Each attribute should contain: key (string), type (string: string, integer, float, boolean, datetime, relationship), size (integer, required for string type), required (boolean, optional), default (mixed, optional), array (boolean, optional), and type-specific options.", - "default": [], - "x-example": null, - "items": { - "type": "object" - } - }, - "indexes": { - "type": "array", - "description": "Array of index definitions to create. Each index should contain: key (string), type (string: key, fulltext, unique, spatial), attributes (array of attribute keys), orders (array of ASC\/DESC, optional), and lengths (array of integers, optional).", - "default": [], - "x-example": null, - "items": { - "type": "object" - } - } - }, - "required": [ - "collectionId", - "name" - ] - } - } - } - } - } - }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}": { - "get": { - "summary": "Get collection", - "operationId": "documentsDBGetCollection", + ] + }, + "post": { + "summary": "Create Google Workspace preset (Records)", + "operationId": "domainsCreatePresetGoogleWorkspace", "tags": [ - "documentsDB" + "domains" ], - "description": "Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.", + "description": "Add Google Workspace DNS records to the domain. This will create the required MX records \nfor Google Workspace email hosting.", "responses": { - "200": { - "description": "Collection", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24534,69 +24321,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "getCollection", - "group": "collections", + "method": "createPresetGoogleWorkspace", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-collection.md", + "demo": "domains\/create-preset-google-workspace.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-collection.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } ] - }, - "put": { - "summary": "Update collection", - "operationId": "documentsDBUpdateCollection", + } + }, + "\/domains\/{domainId}\/presets\/icloud": { + "get": { + "summary": "Get iCloud preset (Records)", + "operationId": "domainsGetPresetICloud", "tags": [ - "documentsDB" + "domains" ], - "description": "Update a collection by its unique ID.", + "description": "List iCloud DNS records.", "responses": { - "200": { - "description": "Collection", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24604,179 +24380,115 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateCollection", - "group": "collections", + "method": "getPresetICloud", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/update-collection.md", + "demo": "domains\/get-preset-i-cloud.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-collection.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Collection name. Max length: 128 chars.", - "x-example": "" - }, - "permissions": { - "type": "array", - "description": "An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "x-example": "[\"read(\"any\")\"]", - "items": { - "type": "string" - } - }, - "documentSecurity": { - "type": "boolean", - "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "default": false, - "x-example": false - }, - "enabled": { - "type": "boolean", - "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.", - "default": true, - "x-example": false - }, - "purge": { - "type": "boolean", - "description": "When true, purge all cached list responses for this collection as part of the update. Use this to force readers to see fresh data immediately instead of waiting for the cache TTL to expire.", - "default": false, - "x-example": false - } - }, - "required": [ - "name" - ] - } - } - } - } + ] }, - "delete": { - "summary": "Delete collection", - "operationId": "documentsDBDeleteCollection", + "post": { + "summary": "Create iCloud preset (Records)", + "operationId": "domainsCreatePresetICloud", "tags": [ - "documentsDB" + "domains" ], - "description": "Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.", + "description": "Add iCloud DNS records to the domain. This will create the required MX and SPF records\nfor using iCloud email services with your domain.", "responses": { - "204": { - "description": "No content" + "201": { + "description": "DNS records list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dnsRecordsList" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteCollection", - "group": "collections", + "method": "createPresetICloud", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/delete-collection.md", + "demo": "domains\/create-preset-i-cloud.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-collection.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } ] } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents": { + "\/domains\/{domainId}\/presets\/mailgun": { "get": { - "summary": "List documents", - "operationId": "documentsDBListDocuments", + "summary": "Get Mailgun preset (Records)", + "operationId": "domainsGetPresetMailgun", "tags": [ - "documentsDB" + "domains" ], - "description": "Get a list of all the user's documents in a given collection. You can use the query params to filter your results.", + "description": "List Mailgun DNS records.", "responses": { - "200": { - "description": "Documents List", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24784,118 +24496,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDocuments", - "group": "documents", + "method": "getPresetMailgun", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-documents.md", + "demo": "domains\/get-preset-mailgun.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.read", + "scope": "domains.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-documents.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "transactionId", - "description": "Transaction ID to read uncommitted changes within the transaction.", - "required": false, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - }, - { - "name": "ttl", - "description": "TTL (seconds) for cached responses when caching is enabled for select queries. Must be between 0 and 86400 (24 hours).", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "x-example": 0, - "default": 0 - }, - "in": "query" } ] }, "post": { - "summary": "Create document", - "operationId": "documentsDBCreateDocument", + "summary": "Create Mailgun preset (Records)", + "operationId": "domainsCreatePresetMailgun", "tags": [ - "documentsDB" + "domains" ], - "description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", + "description": "Add Mailgun DNS records to the domain. This endpoint will create the required DNS records \nfor Mailgun in the specified domain.", "responses": { "201": { - "description": "Document", + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24903,179 +24553,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDocument", - "group": "documents", + "method": "createPresetMailgun", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/create-document.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", - "platforms": [ - "console", - "client", - "server" + "demo": "domains\/create-preset-mailgun.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.write", + "platforms": [ + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-document.md", - "methods": [ - { - "name": "createDocument", - "namespace": "documentsDB", - "desc": "Create document", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "collectionId", - "documentId", - "data", - "permissions" - ], - "required": [ - "databaseId", - "collectionId", - "documentId", - "data" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/document" - } - ], - "description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", - "demo": "documentsdb\/create-document.md", - "public": true - }, - { - "name": "createDocuments", - "namespace": "documentsDB", - "desc": "Create documents", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "collectionId", - "documents" - ], - "required": [ - "databaseId", - "collectionId", - "documents" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/documentList" - } - ], - "description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", - "demo": "documentsdb\/create-documents.md", - "public": true - } - ], "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "documentId": { - "type": "string", - "description": "Document 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.", - "default": "", - "x-example": "", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "data": { - "type": "object", - "description": "Document data as JSON object.", - "default": [], - "x-example": "{\"username\":\"walter.obrien\",\"email\":\"walter.obrien@example.com\",\"fullName\":\"Walter O'Brien\",\"age\":30,\"isAdmin\":false}" - }, - "permissions": { - "type": "array", - "description": "An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "x-example": "[\"read(\"any\")\"]", - "items": { - "type": "string" - } - }, - "documents": { - "type": "array", - "description": "Array of documents data as JSON objects.", - "default": [], - "x-example": null, - "items": { - "type": "object" - } - }, - "transactionId": { - "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "" - } - } - } - } - } - } - }, - "put": { - "summary": "Upsert documents", - "operationId": "documentsDBUpsertDocuments", + ] + } + }, + "\/domains\/{domainId}\/presets\/outlook": { + "get": { + "summary": "Get Outlook preset (Records)", + "operationId": "domainsGetPresetOutlook", "tags": [ - "documentsDB" + "domains" ], - "description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.\n", + "description": "List Outlook DNS records.", "responses": { "201": { - "description": "Documents List", + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -25083,126 +24612,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "upsertDocuments", - "group": "documents", + "method": "getPresetOutlook", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/upsert-documents.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "domains\/get-preset-outlook.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/upsert-documents.md", - "methods": [ - { - "name": "upsertDocuments", - "namespace": "documentsDB", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "collectionId", - "documents", - "transactionId" - ], - "required": [ - "databaseId", - "collectionId", - "documents" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/documentList" - } - ], - "description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.\n", - "demo": "documentsdb\/upsert-documents.md", - "public": true - } - ], "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "documents": { - "type": "array", - "description": "Array of document data as JSON objects. May contain partial documents.", - "x-example": null, - "items": { - "type": "object" - } - }, - "transactionId": { - "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "" - } - }, - "required": [ - "documents" - ] - } - } - } - } + ] }, - "patch": { - "summary": "Update documents", - "operationId": "documentsDBUpdateDocuments", + "post": { + "summary": "Create Outlook preset (Records)", + "operationId": "domainsCreatePresetOutlook", "tags": [ - "documentsDB" + "domains" ], - "description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.", + "description": "Add Outlook DNS records to the domain. This will create the required MX records\nfor setting up Outlook email hosting for your domain.", "responses": { - "200": { - "description": "Documents List", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -25210,100 +24669,115 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateDocuments", - "group": "documents", + "method": "createPresetOutlook", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/update-documents.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "domains\/create-preset-outlook.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-documents.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, + } + ] + } + }, + "\/domains\/{domainId}\/presets\/proton-mail": { + "get": { + "summary": "Get ProtonMail preset (Records)", + "operationId": "domainsGetPresetProtonMail", + "tags": [ + "domains" + ], + "description": "List ProtonMail DNS records.", + "responses": { + "201": { + "description": "DNS records list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dnsRecordsList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getPresetProtonMail", + "group": null, + "cookies": false, + "type": "", + "demo": "domains\/get-preset-proton-mail.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ { - "name": "collectionId", - "description": "Collection ID.", + "Project": [] + } + ], + "parameters": [ + { + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", - "default": [], - "x-example": "{}" - }, - "queries": { - "type": "array", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "transactionId": { - "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "" - } - } - } - } - } - } + ] }, - "delete": { - "summary": "Delete documents", - "operationId": "documentsDBDeleteDocuments", + "post": { + "summary": "Create ProtonMail preset (Records)", + "operationId": "domainsCreatePresetProtonMail", "tags": [ - "documentsDB" + "domains" ], - "description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.", + "description": "Add ProtonMail DNS records to the domain. This will create the required MX records\nfor using ProtonMail with your custom domain.", "responses": { - "200": { - "description": "Documents List", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -25311,94 +24785,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteDocuments", - "group": "documents", + "method": "createPresetProtonMail", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/delete-documents.md", - "rate-limit": 60, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "domains\/create-preset-proton-mail.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-documents.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "transactionId", - "description": "Transaction ID for staging the operation.", - "required": false, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "query" } ] } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { + "\/domains\/{domainId}\/presets\/zoho": { "get": { - "summary": "Get document", - "operationId": "documentsDBGetDocument", + "summary": "Get Zoho preset (Records)", + "operationId": "domainsGetPresetZoho", "tags": [ - "documentsDB" + "domains" ], - "description": "Get a document by its unique ID. This endpoint response returns a JSON object with the document data.", + "description": "List Zoho DNS records.", "responses": { - "200": { - "description": "Document", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -25406,105 +24844,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDocument", - "group": "documents", + "method": "getPresetZoho", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-document.md", + "demo": "domains\/get-preset-zoho.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.read", + "scope": "domains.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-document.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "documentId", - "description": "Document ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "transactionId", - "description": "Transaction ID to read uncommitted changes within the transaction.", - "required": false, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "query" } ] }, - "put": { - "summary": "Upsert a document", - "operationId": "documentsDBUpsertDocument", + "post": { + "summary": "Create Zoho Mail preset (Records)", + "operationId": "domainsCreatePresetZoho", "tags": [ - "documentsDB" + "domains" ], - "description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", + "description": "Add Zoho Mail DNS records to the domain. This will create the required MX records\nfor setting up Zoho Mail on your domain.", "responses": { "201": { - "description": "Document", + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -25512,144 +24901,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "upsertDocument", - "group": "documents", + "method": "createPresetZoho", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/upsert-document.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "domains\/create-preset-zoho.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/upsert-document.md", - "methods": [ - { - "name": "upsertDocument", - "namespace": "documentsDB", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "collectionId", - "documentId", - "data", - "permissions", - "transactionId" - ], - "required": [ - "databaseId", - "collectionId", - "documentId" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/document" - } - ], - "description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#documentsDBCreateCollection) API or directly from your database console.", - "demo": "documentsdb\/upsert-document.md", - "public": true - } - ], "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "documentId", - "description": "Document ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "description": "Document data as JSON object. Include all required fields of the document to be created or updated.", - "default": [], - "x-example": "{}" - }, - "permissions": { - "type": "array", - "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "x-example": "[\"read(\"any\")\"]", - "items": { - "type": "string" - } - }, - "transactionId": { - "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "" - } - } - } - } - } - } - }, - "patch": { - "summary": "Update document", - "operationId": "documentsDBUpdateDocument", + ] + } + }, + "\/domains\/{domainId}\/records": { + "get": { + "summary": "List DNS records for a given domain.", + "operationId": "domainsListRecords", "tags": [ - "documentsDB" + "domains" ], - "description": "Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.", + "description": "List DNS records for a given domain. You can use this endpoint to list all the DNS records\nassociated with your domain.", "responses": { "200": { - "description": "Document", + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -25657,200 +24960,71 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateDocument", - "group": "documents", + "method": "listRecords", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/update-document.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "domains\/list-records.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-document.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "documentId", - "description": "Document ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "description": "Document data as JSON object. Include only fields and value pairs to be updated.", - "default": [], - "x-example": "{}" - }, - "permissions": { - "type": "array", - "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", - "x-example": "[\"read(\"any\")\"]", - "items": { - "type": "string" - } - }, - "transactionId": { - "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "" - } - } - } - } - } - } - }, - "delete": { - "summary": "Delete document", - "operationId": "documentsDBDeleteDocument", - "tags": [ - "documentsDB" - ], - "description": "Delete a document by its unique ID.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteDocument", - "group": "documents", - "cookies": false, - "type": "", - "demo": "documentsdb\/delete-document.md", - "rate-limit": 60, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", - "platforms": [ - "console", - "client", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-document.md", - "auth": { "Project": [] } - }, - "security": [ - { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] - } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. You may filter on attributes such as type, name, value, etc. Maximum of 100 queries are allowed, each 4096 characters long.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" + "in": "query" }, { - "name": "documentId", - "description": "Document ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, - { - "name": "transactionId", - "description": "Transaction ID for staging the operation.", - "required": false, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "query" } ] } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/decrement": { - "patch": { - "summary": "Decrement document attribute", - "operationId": "documentsDBDecrementDocumentAttribute", + "\/domains\/{domainId}\/records\/a": { + "post": { + "summary": "Create a new A record for the given domain.", + "operationId": "domainsCreateRecordA", "tags": [ - "documentsDB" + "domains" ], - "description": "Decrement a specific column of a row by a given value.", + "description": "Create a new A record for the given domain. A records are used to point a domain name \nto an IPv4 address. The record value should be a valid IPv4 address.", "responses": { - "200": { - "description": "Document", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -25858,72 +25032,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "decrementDocumentAttribute", - "group": "documents", + "method": "createRecordA", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/decrement-document-attribute.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "domains\/create-record-a.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.write", "platforms": [ - "client", - "server", "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/decrement-document-attribute.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "JWT": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "documentId", - "description": "Document ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "attribute", - "description": "Attribute key.", - "required": true, - "schema": { - "type": "string" + "x-example": "" }, "in": "path" } @@ -25934,46 +25073,55 @@ "schema": { "type": "object", "properties": { + "name": { + "type": "string", + "description": "Record name (subdomain).", + "x-example": null + }, "value": { - "type": "number", - "description": "Value to decrement the attribute by. The value must be a number.", - "default": 1, - "x-example": null, - "format": "float" + "type": "string", + "description": "IPv4 address for this A record.", + "x-example": null }, - "min": { - "type": "number", - "description": "Minimum value for the attribute. If the current value is lesser than this value, an exception will be thrown.", - "x-example": null, - "format": "float" + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" }, - "transactionId": { + "comment": { "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "" + "description": "A comment explaining what this record is for.", + "default": "", + "x-example": "" } - } + }, + "required": [ + "name", + "value", + "ttl" + ] } } } } } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/increment": { - "patch": { - "summary": "Increment document attribute", - "operationId": "documentsDBIncrementDocumentAttribute", + "\/domains\/{domainId}\/records\/a\/{recordId}": { + "put": { + "summary": "Update an existing A record for the given domain.", + "operationId": "domainsUpdateRecordA", "tags": [ - "documentsDB" + "domains" ], - "description": "Increment a specific column of a row by a given value.", + "description": "Update an existing A record for the given domain. This endpoint allows you to modify \nthe properties of an A record including its name (subdomain), IPv4 address, TTL, \nand optional comment.", "responses": { "200": { - "description": "Document", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -25981,72 +25129,47 @@ }, "deprecated": false, "x-appwrite": { - "method": "incrementDocumentAttribute", - "group": "documents", + "method": "updateRecordA", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/increment-document-attribute.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", - "scope": "documents.write", + "demo": "domains\/update-record-a.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "domains.write", "platforms": [ - "client", - "server", "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/increment-document-attribute.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "JWT": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" }, { - "name": "collectionId", - "description": "Collection ID.", + "name": "recordId", + "description": "DNS record unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "documentId", - "description": "Document ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "attribute", - "description": "Attribute key.", - "required": true, - "schema": { - "type": "string" + "x-example": "" }, "in": "path" } @@ -26057,46 +25180,55 @@ "schema": { "type": "object", "properties": { + "name": { + "type": "string", + "description": "Record name (subdomain).", + "x-example": null + }, "value": { - "type": "number", - "description": "Value to increment the attribute by. The value must be a number.", - "default": 1, - "x-example": null, - "format": "float" + "type": "string", + "description": "IPv4 address for this A record.", + "x-example": null }, - "max": { - "type": "number", - "description": "Maximum value for the attribute. If the current value is greater than this value, an error will be thrown.", - "x-example": null, - "format": "float" + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" }, - "transactionId": { + "comment": { "type": "string", - "description": "Transaction ID for staging the operation.", - "x-example": "" + "description": "A comment explaining what this record is for.", + "default": "", + "x-example": "" } - } + }, + "required": [ + "name", + "value", + "ttl" + ] } } } } } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/indexes": { - "get": { - "summary": "List indexes", - "operationId": "documentsDBListIndexes", + "\/domains\/{domainId}\/records\/aaaa": { + "post": { + "summary": "Create a new AAAA record for the given domain.", + "operationId": "domainsCreateRecordAAAA", "tags": [ - "documentsDB" + "domains" ], - "description": "List indexes in the collection.", + "description": "Create a new AAAA record for the given domain. This endpoint allows you to add a new IPv6 DNS record \nto your domain. The record will be used to point a hostname to an IPv6 address.", "responses": { - "200": { - "description": "Indexes List", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/indexList" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26104,93 +25236,96 @@ }, "deprecated": false, "x-appwrite": { - "method": "listIndexes", - "group": "indexes", + "method": "createRecordAAAA", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-indexes.md", + "demo": "domains\/create-record-aaaa.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-indexes.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" } - ] - }, - "post": { - "summary": "Create index", - "operationId": "documentsDBCreateIndex", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name (subdomain).", + "x-example": null + }, + "value": { + "type": "string", + "description": "IPv6 address for this AAAA record.", + "x-example": null + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment explaining what this record is for.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl" + ] + } + } + } + } + } + }, + "\/domains\/{domainId}\/records\/aaaa\/{recordId}": { + "put": { + "summary": "Update an existing AAAA record for the given domain.", + "operationId": "domainsUpdateRecordAAAA", "tags": [ - "documentsDB" + "domains" ], - "description": "Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request.\nAttributes can be `key`, `fulltext`, and `unique`.", + "description": "Update an existing AAAA record for the given domain. This endpoint allows you to modify\nthe properties of an existing AAAA record, including its name (subdomain), IPv6 address,\nTTL, and optional comment.", "responses": { - "202": { - "description": "Index", + "200": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/index" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26198,50 +25333,47 @@ }, "deprecated": false, "x-appwrite": { - "method": "createIndex", - "group": "indexes", + "method": "updateRecordAAAA", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/create-index.md", + "demo": "domains\/update-record-aaaa.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-index.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" }, { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "name": "recordId", + "description": "DNS record unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } @@ -26252,67 +25384,33 @@ "schema": { "type": "object", "properties": { - "key": { + "name": { "type": "string", - "description": "Index Key.", + "description": "Record name (subdomain).", "x-example": null }, - "type": { + "value": { "type": "string", - "description": "Index type.", - "x-example": "key", - "enum": [ - "key", - "fulltext", - "unique" - ], - "x-enum-name": "DocumentsDBIndexType", - "x-enum-keys": [ - "key", - "fulltext", - "unique" - ] - }, - "attributes": { - "type": "array", - "description": "Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.", - "x-example": null, - "items": { - "type": "string" - } + "description": "IPv6 address for this AAAA record.", + "x-example": null }, - "orders": { - "type": "array", - "description": "Array of index orders. Maximum of 100 orders are allowed.", - "default": [], - "x-example": null, - "items": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "x-enum-name": "OrderBy", - "x-enum-keys": [ - "asc", - "desc" - ] - } + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" }, - "lengths": { - "type": "array", - "description": "Length of index. Maximum of 100", - "default": [], - "x-example": null, - "items": { - "type": "integer" - } + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" } }, "required": [ - "key", - "type", - "attributes" + "name", + "value", + "ttl" ] } } @@ -26320,21 +25418,21 @@ } } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}": { - "get": { - "summary": "Get index", - "operationId": "documentsDBGetIndex", + "\/domains\/{domainId}\/records\/alias": { + "post": { + "summary": "Create a new ALIAS record for the given domain.", + "operationId": "domainsCreateRecordAlias", "tags": [ - "documentsDB" + "domains" ], - "description": "Get index by ID.", + "description": "Create a new ALIAS record for the given domain. This record type can be used to point your domain \nto another domain name that will serve as an alias. This is particularly useful when you want to \nmap your domain to a target domain that may change its IP address.", "responses": { - "200": { - "description": "Index", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/index" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26342,152 +25440,203 @@ }, "deprecated": false, "x-appwrite": { - "method": "getIndex", - "group": "indexes", + "method": "createRecordAlias", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-index.md", + "demo": "domains\/create-record-alias.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-index.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "key", - "description": "Index Key.", - "required": true, - "schema": { - "type": "string" + "x-example": "" }, "in": "path" } - ] - }, - "delete": { - "summary": "Delete index", - "operationId": "documentsDBDeleteIndex", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name.", + "x-example": null + }, + "value": { + "type": "string", + "description": "Target domain for this ALIAS record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl" + ] + } + } + } + } + } + }, + "\/domains\/{domainId}\/records\/alias\/{recordId}": { + "put": { + "summary": "Update an existing ALIAS record for the given domain.", + "operationId": "domainsUpdateRecordAlias", "tags": [ - "documentsDB" + "domains" ], - "description": "Delete an index.", + "description": "Update an existing ALIAS record for the specified domain. This endpoint allows you to modify\nthe properties of an existing ALIAS record including its name, target domain, TTL, and comment.\n \nThe ALIAS record type is similar to a CNAME record but can be used at the zone apex (root domain).\nIt provides a way to map one domain name to another.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "DNSRecord", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dnsRecord" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteIndex", - "group": "indexes", + "method": "updateRecordAlias", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/delete-index.md", + "demo": "domains\/update-record-alias.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.write", + "scope": "domains.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-index.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" }, { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "name": "recordId", + "description": "DNS record unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "key", - "description": "Index Key.", - "required": true, - "schema": { - "type": "string" + "x-example": "" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name.", + "x-example": null + }, + "value": { + "type": "string", + "description": "Target domain for this ALIAS record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl" + ] + } + } + } + } } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/usage": { - "get": { - "summary": "Get collection usage stats", - "operationId": "documentsDBGetCollectionUsage", + "\/domains\/{domainId}\/records\/caa": { + "post": { + "summary": "Create a new CAA record for the given domain.", + "operationId": "domainsCreateRecordCAA", "tags": [ - "documentsDB" + "domains" ], - "description": "Get usage metrics and statistics for a collection. Returning the total number of documents. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "description": "Create a new CAA record for the given domain. CAA records are used to specify which \nCertificate Authorities (CAs) are allowed to issue SSL\/TLS certificates for your domain.", "responses": { - "200": { - "description": "UsageCollection", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageCollection" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26495,21 +25644,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getCollectionUsage", + "method": "createRecordCAA", "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-collection-usage.md", + "demo": "domains\/create-record-caa.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "domains.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-collection-usage.md", "auth": { "Project": [] } @@ -26521,65 +25669,71 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "range", - "description": "Date range.", - "required": false, - "schema": { - "type": "string", - "x-example": "24h", - "enum": [ - "24h", - "30d", - "90d" - ], - "x-enum-name": "UsageRange", - "x-enum-keys": [ - "Twenty Four Hours", - "Thirty Days", - "Ninety Days" - ], - "default": "30d" - }, - "in": "query" - }, - { - "name": "collectionId", - "description": "Collection ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name.", + "x-example": null + }, + "value": { + "type": "string", + "description": "CAA value (e.g. issuer domain).", + "x-example": null + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl" + ] + } + } + } + } } }, - "\/documentsdb\/{databaseId}\/usage": { - "get": { - "summary": "Get DocumentsDB usage stats", - "operationId": "documentsDBGetUsage", + "\/domains\/{domainId}\/records\/caa\/{recordId}": { + "put": { + "summary": "Update an existing CAA record for the given domain.", + "operationId": "domainsUpdateRecordCAA", "tags": [ - "documentsDB" + "domains" ], - "description": "Get usage metrics and statistics for a database. You can view the total number of collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", + "description": "Update an existing CAA record for the given domain. A CAA (Certification Authority Authorization) \nrecord is used to specify which certificate authorities (CAs) are authorized to issue certificates \nfor a domain.", "responses": { "200": { - "description": "UsageDocumentsDB", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageDocumentsDB" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26587,47 +25741,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getUsage", + "method": "updateRecordCAA", "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-usage.md", + "demo": "domains\/update-record-caa.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "domains.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-database-usage.md", - "methods": [ - { - "name": "getUsage", - "namespace": "documentsDB", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "range" - ], - "required": [ - "databaseId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/usageDocumentsDB" - } - ], - "description": "Get usage metrics and statistics for a database. You can view the total number of collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.", - "demo": "documentsdb\/get-usage.md", - "public": true - } - ], "auth": { "Project": [] } @@ -26639,55 +25766,81 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" }, { - "name": "range", - "description": "Date range.", - "required": false, + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, "schema": { "type": "string", - "x-example": "24h", - "enum": [ - "24h", - "30d", - "90d" - ], - "x-enum-name": "UsageRange", - "x-enum-keys": [ - "Twenty Four Hours", - "Thirty Days", - "Ninety Days" - ], - "default": "30d" + "x-example": "" }, - "in": "query" + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name.", + "x-example": null + }, + "value": { + "type": "string", + "description": "CAA value (e.g. issuer domain).", + "x-example": null + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl" + ] + } + } + } + } } }, - "\/domains": { - "get": { - "summary": "List domains", - "operationId": "domainsList", + "\/domains\/{domainId}\/records\/cname": { + "post": { + "summary": "Create a new CNAME record for the given domain.", + "operationId": "domainsCreateRecordCNAME", "tags": [ "domains" ], - "description": "List all domains registered for this project. This endpoint supports pagination.", + "description": "Create a new CNAME record for the given domain.\n \nA CNAME record maps a subdomain to another domain name, allowing you to create aliases \nfor your domain. For example, you can create a CNAME record to point 'blog.example.com' \nto 'example.wordpress.com'.", "responses": { - "200": { - "description": "Domains list", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainsList" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26695,15 +25848,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "list", + "method": "createRecordCNAME", "group": null, "cookies": false, "type": "", - "demo": "domains\/list.md", + "demo": "domains\/create-record-cname.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "domains.write", "platforms": [ "console" ], @@ -26720,45 +25873,71 @@ ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on attributes such as domain name, teamInternalId, expiration, etc.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, + "name": "domainId", + "description": "Domain unique ID.", + "required": true, "schema": { "type": "string", - "x-example": "", - "default": "" + "x-example": "" }, - "in": "query" + "in": "path" } - ] - }, - "post": { - "summary": "Create a new domain.", - "operationId": "domainsCreate", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name (subdomain).", + "x-example": null + }, + "value": { + "type": "string", + "description": "Canonical target for this CNAME record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl" + ] + } + } + } + } + } + }, + "\/domains\/{domainId}\/records\/cname\/{recordId}": { + "put": { + "summary": "Update an existing CNAME record for the given domain.", + "operationId": "domainsUpdateRecordCNAME", "tags": [ "domains" ], - "description": "Create a new domain. Before creating a domain, you need to ensure that your DNS provider is properly configured. After creating the domain, you can use the verification endpoint to check if the domain is ready to be used.", + "description": "Update an existing CNAME record for the given domain.", "responses": { - "201": { - "description": "Domain", + "200": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26766,11 +25945,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "create", + "method": "updateRecordCNAME", "group": null, "cookies": false, "type": "", - "demo": "domains\/create.md", + "demo": "domains\/update-record-cname.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -26789,26 +25968,61 @@ "Project": [] } ], + "parameters": [ + { + "name": "domainId", + "description": "Domain unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "teamId": { + "name": { "type": "string", - "description": "Team unique ID.", - "x-example": "" + "description": "Record name (subdomain).", + "x-example": null }, - "domain": { + "value": { "type": "string", - "description": "Domain name (e.g. \"example.com\").", - "x-example": null + "description": "Canonical target for this CNAME record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" } }, "required": [ - "teamId", - "domain" + "name", + "value", + "ttl" ] } } @@ -26816,21 +26030,21 @@ } } }, - "\/domains\/price": { - "get": { - "summary": "Get domain price", - "operationId": "domainsGetPrice", + "\/domains\/{domainId}\/records\/https": { + "post": { + "summary": "Create a new HTTPS record for the given domain.", + "operationId": "domainsCreateRecordHTTPS", "tags": [ "domains" ], - "description": "Get the registration price for a domain name.", + "description": "Create a new HTTPS record for the given domain. This record is used to configure HTTPS \nsettings for your domain, enabling secure communication over SSL\/TLS.", "responses": { - "200": { - "description": "DomainPrice", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPrice" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26838,15 +26052,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPrice", + "method": "createRecordHTTPS", "group": null, "cookies": false, "type": "", - "demo": "domains\/get-price.md", + "demo": "domains\/create-record-https.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "domains.write", "platforms": [ "console" ], @@ -26863,67 +26077,71 @@ ], "parameters": [ { - "name": "domain", - "description": "Domain name to get price for.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, - "schema": { - "type": "string" - }, - "in": "query" - }, - { - "name": "periodYears", - "description": "Number of years to calculate the domain price for. Must be at least 1.", - "required": false, - "schema": { - "type": "integer", - "format": "uint32", - "default": 1 - }, - "in": "query" - }, - { - "name": "registrationType", - "description": "Type of registration pricing to fetch. Allowed values: new, transfer, renewal, trade.", - "required": false, "schema": { "type": "string", - "x-example": "new", - "enum": [ - "new", - "transfer", - "renewal", - "trade" - ], - "x-enum-name": "DomainRegistrationType", - "x-enum-keys": [ - "new", - "transfer", - "renewal", - "trade" - ], - "default": "new" + "x-example": "" }, - "in": "query" + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name (subdomain).", + "x-example": null + }, + "value": { + "type": "string", + "description": "Target for the HTTPS record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl" + ] + } + } + } + } } }, - "\/domains\/purchases": { - "post": { - "summary": "Create a domain purchase", - "operationId": "domainsCreatePurchase", + "\/domains\/{domainId}\/records\/https\/{recordId}": { + "put": { + "summary": "Update an existing HTTPS record for the given domain.", + "operationId": "domainsUpdateRecordHTTPS", "tags": [ "domains" ], - "description": "Initiate a domain purchase by providing registrant details and a payment method. Authorizes the payment and returns a `clientSecret`. If 3D Secure is required, use the `clientSecret` on the client to complete the authentication challenge. Once authentication is complete (or if none is needed), call the Update Purchase endpoint to capture the payment and finalize the purchase.", + "description": "Update an existing HTTPS record for the given domain. This endpoint allows you to modify \nthe properties of an HTTPS record associated with your domain, including the name (subdomain), \ntarget value, TTL, and optional comment.", "responses": { - "201": { - "description": "DomainPurchase", + "200": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPurchase" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26931,15 +26149,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPurchase", + "method": "updateRecordHTTPS", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-purchase.md", + "demo": "domains\/update-record-https.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "domains.write", "platforms": [ "console" ], @@ -26954,89 +26172,61 @@ "Project": [] } ], + "parameters": [ + { + "name": "domainId", + "description": "Domain unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "domain": { + "name": { "type": "string", - "description": "Fully qualified domain name to purchase (for example, example.com).", + "description": "Record name (subdomain).", "x-example": null }, - "organizationId": { + "value": { "type": "string", - "description": "Team ID that will own the domain.", - "x-example": "" + "description": "Target for the HTTPS record.", + "x-example": "" }, - "firstName": { - "type": "string", - "description": "Registrant first name used for domain registration.", - "x-example": "" - }, - "lastName": { - "type": "string", - "description": "Registrant last name used for domain registration.", - "x-example": "" - }, - "email": { - "type": "string", - "description": "Registrant email address for registration and notices.", - "x-example": "email@example.com", - "format": "email" - }, - "phone": { - "type": "string", - "description": "Registrant phone number in E.164 format (for example, +15555551234).", - "x-example": "+12065550100", - "format": "phone" - }, - "billingAddressId": { - "type": "string", - "description": "Billing address ID used for registration contact details.", - "x-example": "" - }, - "addressLine3": { - "type": "string", - "description": "Additional address line for the registrant (line 3).", - "default": "", - "x-example": "" - }, - "companyName": { - "type": "string", - "description": "Company or organization name for the registrant.", - "default": "", - "x-example": "" - }, - "periodYears": { + "ttl": { "type": "integer", - "description": "Registration term in years (1-10).", - "default": 1, + "description": "Time to live, in seconds. Must be greater than 0.", "x-example": 1, "format": "int32" }, - "autoRenewal": { - "type": "boolean", - "description": "Whether the domain should renew automatically after purchase.", - "default": true, - "x-example": false - }, - "paymentMethodId": { + "comment": { "type": "string", - "description": "Payment method ID to authorize and capture the purchase.", - "x-example": "" + "description": "A comment for this record.", + "default": "", + "x-example": "" } }, "required": [ - "domain", - "organizationId", - "firstName", - "lastName", - "email", - "phone", - "billingAddressId", - "paymentMethodId" + "name", + "value", + "ttl" ] } } @@ -27044,21 +26234,21 @@ } } }, - "\/domains\/purchases\/{invoiceId}": { - "patch": { - "summary": "Confirm a domain purchase", - "operationId": "domainsUpdatePurchase", + "\/domains\/{domainId}\/records\/mx": { + "post": { + "summary": "Create a new MX record for the given domain.", + "operationId": "domainsCreateRecordMX", "tags": [ "domains" ], - "description": "Finalize a domain purchase initiated with Create Purchase. Verifies that any required 3D Secure authentication is complete, registers the domain, captures the payment, and provisions default DNS records. Returns a 402 error if authentication is still pending.", + "description": "Create a new MX record for the given domain. MX records are used to define the mail servers responsible \nfor accepting email messages for the domain. Multiple MX records can be created with different priorities.\nThe priority parameter determines the order in which mail servers are used, with lower values indicating \nhigher priority.", "responses": { - "200": { - "description": "DomainPurchase", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPurchase" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27066,15 +26256,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "updatePurchase", + "method": "createRecordMX", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-purchase.md", + "demo": "domains\/create-record-mx.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "domains.write", "platforms": [ "console" ], @@ -27091,12 +26281,12 @@ ], "parameters": [ { - "name": "invoiceId", - "description": "Invoice ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } @@ -27107,14 +26297,40 @@ "schema": { "type": "object", "properties": { - "organizationId": { + "name": { "type": "string", - "description": "Team ID that owns the domain.", - "x-example": "" + "description": "Record name (subdomain).", + "x-example": null + }, + "value": { + "type": "string", + "description": "Mail server domain for this MX record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "priority": { + "type": "integer", + "description": "MX priority.", + "x-example": null, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" } }, "required": [ - "organizationId" + "name", + "value", + "ttl", + "priority" ] } } @@ -27122,21 +26338,21 @@ } } }, - "\/domains\/suggestions": { - "get": { - "summary": "List domain suggestions", - "operationId": "domainsListSuggestions", + "\/domains\/{domainId}\/records\/mx\/{recordId}": { + "put": { + "summary": "Update an existing MX record for the given domain.", + "operationId": "domainsUpdateRecordMX", "tags": [ "domains" ], - "description": "List domain suggestions.", + "description": "Update an existing MX record for the given domain.", "responses": { "200": { - "description": "Domain suggestions list", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainSuggestionsList" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27144,15 +26360,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "listSuggestions", + "method": "updateRecordMX", "group": null, "cookies": false, "type": "", - "demo": "domains\/list-suggestions.md", - "rate-limit": 50, + "demo": "domains\/update-record-mx.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "domains.write", "platforms": [ "console" ], @@ -27169,95 +26385,88 @@ ], "parameters": [ { - "name": "query", - "description": "Query to find available domains and suggestions. Max length: 256 chars.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" - }, - "in": "query" - }, - { - "name": "tlds", - "description": "TLDs to suggest.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "limit", - "description": "Maximum number of suggestions to return.", - "required": false, - "schema": { - "type": "integer", - "format": "int32" + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "filterType", - "description": "Filter type: premium, suggestion.", - "required": false, + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, "schema": { "type": "string", - "x-example": "premium", - "enum": [ - "premium", - "suggestion" - ], - "x-enum-name": "DomainSuggestionType", - "x-enum-keys": [ - "premium", - "suggestion" - ] - }, - "in": "query" - }, - { - "name": "priceMax", - "description": "Filter premium domains by maximum price. Only premium domains at or below this price will be returned. Does not affect regular domain suggestions.", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - }, - "in": "query" - }, - { - "name": "priceMin", - "description": "Filter premium domains by minimum price. Only premium domains at or above this price will be returned. Does not affect regular domain suggestions.", - "required": false, - "schema": { - "type": "integer", - "format": "int32" + "x-example": "" }, - "in": "query" + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name (subdomain).", + "x-example": null + }, + "value": { + "type": "string", + "description": "Mail server domain for this MX record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "priority": { + "type": "integer", + "description": "MX priority.", + "x-example": null, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl", + "priority" + ] + } + } + } + } } }, - "\/domains\/transfers\/in": { + "\/domains\/{domainId}\/records\/ns": { "post": { - "summary": "Create a domain transfer in.", - "operationId": "domainsCreateTransferIn", + "summary": "Create a new NS record for the given domain.", + "operationId": "domainsCreateRecordNS", "tags": [ "domains" ], - "description": "Initiate a domain transfer-in by providing an authorization code, registrant details, and a payment method. Authorizes the payment and returns a `clientSecret`. If 3D Secure is required, use the `clientSecret` on the client to complete the authentication challenge. Once authentication is complete (or if none is needed), call the Update Transfer In endpoint to capture the payment and submit the transfer.", + "description": "Create a new NS record for the given domain. NS records specify the nameservers that are used \nto resolve the domain name to IP addresses. Each domain can have multiple NS records.", "responses": { "201": { - "description": "DomainPurchase", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPurchase" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27265,15 +26474,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTransferIn", + "method": "createRecordNS", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-transfer-in.md", + "demo": "domains\/create-record-ns.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "domains.write", "platforms": [ "console" ], @@ -27288,44 +26497,51 @@ "Project": [] } ], + "parameters": [ + { + "name": "domainId", + "description": "Domain unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "domain": { + "name": { "type": "string", - "description": "Domain name to transfer in.", + "description": "Record name (subdomain).", "x-example": null }, - "organizationId": { - "type": "string", - "description": "Organization ID that this domain will belong to.", - "x-example": "" - }, - "authCode": { + "value": { "type": "string", - "description": "Authorization code for the domain transfer.", - "x-example": "" + "description": "Nameserver target for this NS record.", + "x-example": "" }, - "autoRenewal": { - "type": "boolean", - "description": "Whether the domain should renew automatically after transfer.", - "default": true, - "x-example": false + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" }, - "paymentMethodId": { + "comment": { "type": "string", - "description": "Payment method ID to authorize and capture the transfer.", - "x-example": "" + "description": "A comment for this record.", + "default": "", + "x-example": "" } }, "required": [ - "domain", - "organizationId", - "authCode", - "paymentMethodId" + "name", + "value", + "ttl" ] } } @@ -27333,21 +26549,21 @@ } } }, - "\/domains\/transfers\/in\/{invoiceId}": { - "patch": { - "summary": "Confirm a domain transfer in", - "operationId": "domainsUpdateTransferIn", + "\/domains\/{domainId}\/records\/ns\/{recordId}": { + "put": { + "summary": "Update an existing NS record for the given domain.", + "operationId": "domainsUpdateRecordNS", "tags": [ "domains" ], - "description": "Finalize a domain transfer-in initiated with Create Transfer In. Verifies that any required 3D Secure authentication is complete, submits the transfer with the authorization code, captures the payment, and sends a confirmation email. Returns a 402 error if authentication is still pending.", + "description": "Update an existing NS record for the given domain. This endpoint allows you to modify \nthe properties of an NS (nameserver) record associated with your domain. You can update \nthe record name (subdomain), target nameserver value, TTL, and add or modify comments \nfor better record management.", "responses": { "200": { - "description": "DomainPurchase", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPurchase" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27355,15 +26571,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTransferIn", + "method": "updateRecordNS", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-transfer-in.md", + "demo": "domains\/update-record-ns.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "domains.write", "platforms": [ "console" ], @@ -27380,12 +26596,22 @@ ], "parameters": [ { - "name": "invoiceId", - "description": "Invoice ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" + }, + "in": "path" + }, + { + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" }, "in": "path" } @@ -27396,14 +26622,33 @@ "schema": { "type": "object", "properties": { - "organizationId": { + "name": { "type": "string", - "description": "Team ID that owns the domain.", - "x-example": "" + "description": "Record name (subdomain).", + "x-example": null + }, + "value": { + "type": "string", + "description": "Nameserver target for this NS record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" } }, "required": [ - "organizationId" + "name", + "value", + "ttl" ] } } @@ -27411,21 +26656,21 @@ } } }, - "\/domains\/transfers\/out": { + "\/domains\/{domainId}\/records\/srv": { "post": { - "summary": "Create a domain transfer out.", - "operationId": "domainsCreateTransferOut", + "summary": "Create a new SRV record for the given domain.", + "operationId": "domainsCreateRecordSRV", "tags": [ "domains" ], - "description": "Initiate a domain transfer-out by generating an authorization code for the specified domain. The returned `authCode` should be provided to the gaining provider to complete the transfer. If the domain has auto-renewal enabled, it will be automatically disabled as part of this operation.", + "description": "Create a new SRV record for the given domain. SRV records are used to define the location \nof servers for specific services. For example, they can be used to specify which server \nhandles a specific service like SIP or XMPP for the domain.", "responses": { - "202": { - "description": "domainTransferOut", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainTransferOut" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27433,15 +26678,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTransferOut", + "method": "createRecordSRV", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-transfer-out.md", + "demo": "domains\/create-record-srv.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "domains.write", "platforms": [ "console" ], @@ -27456,26 +26701,72 @@ "Project": [] } ], + "parameters": [ + { + "name": "domainId", + "description": "Domain unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "domainId": { + "name": { "type": "string", - "description": "Domain unique ID.", - "x-example": "" + "description": "Record name (service name).", + "x-example": null }, - "organizationId": { + "value": { "type": "string", - "description": "Organization ID that this domain belongs to.", - "x-example": "" + "description": "Target hostname for this SRV record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "priority": { + "type": "integer", + "description": "Record priority.", + "x-example": null, + "format": "int32" + }, + "weight": { + "type": "integer", + "description": "Record weight.", + "x-example": null, + "format": "int32" + }, + "port": { + "type": "integer", + "description": "Port number for the service.", + "x-example": null, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" } }, "required": [ - "domainId", - "organizationId" + "name", + "value", + "ttl", + "priority", + "weight", + "port" ] } } @@ -27483,21 +26774,21 @@ } } }, - "\/domains\/{domainId}": { - "get": { - "summary": "Get a single domain by its unique ID.", - "operationId": "domainsGet", + "\/domains\/{domainId}\/records\/srv\/{recordId}": { + "put": { + "summary": "Update an existing SRV record for the given domain.", + "operationId": "domainsUpdateRecordSRV", "tags": [ "domains" ], - "description": "Get a domain by its unique ID.", + "description": "Update an existing SRV record for the given domain.\n \nRequired parameters:\n- domainId: Domain unique ID\n- recordId: DNS record unique ID\n- name: Record name (service name)\n- value: Target hostname for this SRV record\n- ttl: Time to live, in seconds\n- priority: Record priority\n- weight: Record weight\n- port: Port number for the service\n \nOptional parameters:\n- comment: A comment for this record", "responses": { "200": { - "description": "Domain", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27505,15 +26796,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "get", + "method": "updateRecordSRV", "group": null, "cookies": false, "type": "", - "demo": "domains\/get.md", + "demo": "domains\/update-record-srv.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "domains.write", "platforms": [ "console" ], @@ -27538,78 +26829,94 @@ "x-example": "" }, "in": "path" + }, + { + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } - ] - }, - "delete": { - "summary": "Delete a domain by its unique ID.", - "operationId": "domainsDelete", - "tags": [ - "domains" - ], - "description": "Delete a domain by its unique ID. This endpoint can be used to delete a domain from your project.\nOnce deleted, the domain will no longer be available for use and all associated resources will be removed.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "delete", - "group": null, - "cookies": false, - "type": "", - "demo": "domains\/delete.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "produces": [ - "application\/json" - ], - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name (service name).", + "x-example": null + }, + "value": { + "type": "string", + "description": "Target hostname for this SRV record.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "priority": { + "type": "integer", + "description": "Record priority.", + "x-example": null, + "format": "int32" + }, + "weight": { + "type": "integer", + "description": "Record weight.", + "x-example": null, + "format": "int32" + }, + "port": { + "type": "integer", + "description": "Port number for the service.", + "x-example": null, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl", + "priority", + "weight", + "port" + ] + } + } } - ] + } } }, - "\/domains\/{domainId}\/auto-renewal": { - "patch": { - "summary": "Update domain auto-renewal setting.", - "operationId": "domainsUpdateAutoRenewal", + "\/domains\/{domainId}\/records\/txt": { + "post": { + "summary": "Create a new TXT record for the given domain.", + "operationId": "domainsCreateRecordTXT", "tags": [ "domains" ], - "description": "Enable or disable auto-renewal for a domain.", + "description": "Create a new TXT record for the given domain. TXT records can be used \nto provide additional information about your domain, such as domain \nverification records, SPF records, or DKIM records.", "responses": { - "200": { - "description": "Domain", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27617,11 +26924,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateAutoRenewal", + "method": "createRecordTXT", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-auto-renewal.md", + "demo": "domains\/create-record-txt.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -27658,14 +26965,33 @@ "schema": { "type": "object", "properties": { - "autoRenewal": { - "type": "boolean", - "description": "Whether the domain should renew automatically.", - "x-example": false + "name": { + "type": "string", + "description": "Record name (subdomain) for the TXT record.", + "x-example": null + }, + "value": { + "type": "string", + "description": "TXT record value.", + "default": "", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" } }, "required": [ - "autoRenewal" + "name", + "ttl" ] } } @@ -27673,21 +26999,21 @@ } } }, - "\/domains\/{domainId}\/nameservers": { - "patch": { - "summary": "Verify which NS records are used and update the domain accordingly.", - "operationId": "domainsUpdateNameservers", + "\/domains\/{domainId}\/records\/txt\/{recordId}": { + "put": { + "summary": "Update an existing TXT record for the given domain.", + "operationId": "domainsUpdateRecordTXT", "tags": [ "domains" ], - "description": "Verify which NS records are used and update the domain accordingly. This will check the domain's\nnameservers and update the domain's status based on whether the nameservers match the expected\nAppwrite nameservers.", + "description": "Update an existing TXT record for the given domain.\n \nUpdate the TXT record details for a specific domain by providing the domain ID,\nrecord ID, and the new record configuration including name, value, TTL, and an optional comment.", "responses": { "200": { - "description": "Domain", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27695,11 +27021,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateNameservers", + "method": "updateRecordTXT", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-nameservers.md", + "demo": "domains\/update-record-txt.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -27728,25 +27054,73 @@ "x-example": "" }, "in": "path" + }, + { + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Record name (subdomain) for the TXT record.", + "x-example": null + }, + "value": { + "type": "string", + "description": "TXT record value.", + "x-example": "" + }, + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl" + ] + } + } + } + } } }, - "\/domains\/{domainId}\/presets\/google-workspace": { + "\/domains\/{domainId}\/records\/{recordId}": { "get": { - "summary": "Get Google Workspace preset (Records)", - "operationId": "domainsGetPresetGoogleWorkspace", + "summary": "Get a single DNS record for a given domain by record ID.", + "operationId": "domainsGetRecord", "tags": [ "domains" ], - "description": "List Google Workspace DNS records.", + "description": "Get a single DNS record for a given domain by record ID.\n \nThis endpoint allows you to retrieve a specific DNS record associated with a domain\nusing its unique identifier. The record contains information about the DNS configuration\nsuch as type, value, and TTL settings.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27754,15 +27128,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetGoogleWorkspace", + "method": "getRecord", "group": null, "cookies": false, "type": "", - "demo": "domains\/get-preset-google-workspace.md", + "demo": "domains\/get-record.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "domains.read", "platforms": [ "console" ], @@ -27787,35 +27161,38 @@ "x-example": "" }, "in": "path" + }, + { + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } ] }, - "post": { - "summary": "Create Google Workspace preset (Records)", - "operationId": "domainsCreatePresetGoogleWorkspace", + "delete": { + "summary": "Delete a DNS record for the given domain.", + "operationId": "domainsDeleteRecord", "tags": [ "domains" ], - "description": "Add Google Workspace DNS records to the domain. This will create the required MX records \nfor Google Workspace email hosting.", + "description": "Delete a DNS record for the given domain. This endpoint allows you to delete an existing DNS record \nfrom a specific domain.", "responses": { - "201": { - "description": "DNS records list", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "createPresetGoogleWorkspace", + "method": "deleteRecord", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-preset-google-workspace.md", + "demo": "domains\/delete-record.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -27825,6 +27202,9 @@ ], "packaging": false, "public": true, + "produces": [ + "application\/json" + ], "auth": { "Project": [] } @@ -27844,25 +27224,35 @@ "x-example": "" }, "in": "path" + }, + { + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } ] } }, - "\/domains\/{domainId}\/presets\/icloud": { - "get": { - "summary": "Get iCloud preset (Records)", - "operationId": "domainsGetPresetICloud", + "\/domains\/{domainId}\/team": { + "patch": { + "summary": "Update domain team.", + "operationId": "domainsUpdateTeam", "tags": [ "domains" ], - "description": "List iCloud DNS records.", + "description": "Update the team ID for a specific domain. This endpoint requires admin access.\n \nUpdating the team ID will transfer ownership and access control of the domain\nand all its DNS records to the new team.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Domain", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/domain" } } } @@ -27870,11 +27260,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetICloud", + "method": "updateTeam", "group": null, "cookies": false, "type": "", - "demo": "domains\/get-preset-i-cloud.md", + "demo": "domains\/update-team.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -27904,22 +27294,43 @@ }, "in": "path" } - ] - }, - "post": { - "summary": "Create iCloud preset (Records)", - "operationId": "domainsCreatePresetICloud", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "teamId": { + "type": "string", + "description": "New team unique ID.", + "x-example": "" + } + }, + "required": [ + "teamId" + ] + } + } + } + } + } + }, + "\/domains\/{domainId}\/transfers\/status": { + "get": { + "summary": "Get domain transfer status.", + "operationId": "domainsGetTransferStatus", "tags": [ "domains" ], - "description": "Add iCloud DNS records to the domain. This will create the required MX and SPF records\nfor using iCloud email services with your domain.", + "description": "Retrieve the current transfer status for a domain. Returns the status, an optional reason, and a timestamp of the last status change.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "domainTransferStatus", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/domainTransferStatus" } } } @@ -27927,15 +27338,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetICloud", + "method": "getTransferStatus", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-preset-i-cloud.md", + "demo": "domains\/get-transfer-status.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "domains.read", "platforms": [ "console" ], @@ -27964,21 +27375,21 @@ ] } }, - "\/domains\/{domainId}\/presets\/mailgun": { + "\/domains\/{domainId}\/zone": { "get": { - "summary": "Get Mailgun preset (Records)", - "operationId": "domainsGetPresetMailgun", + "summary": "Retrieve the DNS zone file for the given domain.", + "operationId": "domainsGetZone", "tags": [ "domains" ], - "description": "List Mailgun DNS records.", + "description": "Retrieve the DNS zone file for the given domain. This endpoint will return the DNS\nzone file in a standardized format that can be used to configure DNS servers.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Text", "content": { - "application\/json": { + "text\/plain": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "type": "string" } } } @@ -27986,15 +27397,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetMailgun", + "method": "getZone", "group": null, "cookies": false, "type": "", - "demo": "domains\/get-preset-mailgun.md", + "demo": "domains\/get-zone.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "domains.read", "platforms": [ "console" ], @@ -28022,20 +27433,20 @@ } ] }, - "post": { - "summary": "Create Mailgun preset (Records)", - "operationId": "domainsCreatePresetMailgun", + "put": { + "summary": "Update the DNS zone for the given domain using the provided zone file content. All parsed records are imported and then the main domain document is returned.", + "operationId": "domainsUpdateZone", "tags": [ "domains" ], - "description": "Add Mailgun DNS records to the domain. This endpoint will create the required DNS records \nfor Mailgun in the specified domain.", + "description": "Update the DNS zone for the given domain using the provided zone file content.\nAll parsed records are imported and then the main domain document is returned.", "responses": { "201": { - "description": "DNS records list", + "description": "Domain", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/domain" } } } @@ -28043,11 +27454,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetMailgun", + "method": "updateZone", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-preset-mailgun.md", + "demo": "domains\/update-zone.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -28077,24 +27488,43 @@ }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "DNS zone file content as a string.", + "x-example": "" + } + }, + "required": [ + "content" + ] + } + } + } + } } }, - "\/domains\/{domainId}\/presets\/outlook": { + "\/functions": { "get": { - "summary": "Get Outlook preset (Records)", - "operationId": "domainsGetPresetOutlook", + "summary": "List functions", + "operationId": "functionsList", "tags": [ - "domains" + "functions" ], - "description": "List Outlook DNS records.", + "description": "Get a list of all the project's functions. You can use the query params to filter your results.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Functions List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/functionList" } } } @@ -28102,17 +27532,18 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetOutlook", - "group": null, + "method": "list", + "group": "functions", "cookies": false, "type": "", - "demo": "domains\/get-preset-outlook.md", + "demo": "functions\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "functions.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, @@ -28122,36 +27553,62 @@ }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deploymentId, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "" }, - "in": "path" + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" } ] }, "post": { - "summary": "Create Outlook preset (Records)", - "operationId": "domainsCreatePresetOutlook", + "summary": "Create function", + "operationId": "functionsCreate", "tags": [ - "domains" + "functions" ], - "description": "Add Outlook DNS records to the domain. This will create the required MX records\nfor setting up Outlook email hosting for your domain.", + "description": "Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.", "responses": { "201": { - "description": "DNS records list", + "description": "Function", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/function" } } } @@ -28159,17 +27616,18 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetOutlook", - "group": null, + "method": "create", + "group": "functions", "cookies": false, "type": "", - "demo": "domains\/create-preset-outlook.md", + "demo": "functions\/create.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "functions.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, @@ -28179,38 +27637,4455 @@ }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "functionId": { + "type": "string", + "description": "Function 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.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Function name. Max length: 128 chars.", + "x-example": "" + }, + "runtime": { + "type": "string", + "description": "Execution runtime.", + "x-example": "node-14.5", + "enum": [ + "node-14.5", + "node-16.0", + "node-18.0", + "node-19.0", + "node-20.0", + "node-21.0", + "node-22", + "node-23", + "node-24", + "node-25", + "php-8.0", + "php-8.1", + "php-8.2", + "php-8.3", + "php-8.4", + "ruby-3.0", + "ruby-3.1", + "ruby-3.2", + "ruby-3.3", + "ruby-3.4", + "ruby-4.0", + "python-3.8", + "python-3.9", + "python-3.10", + "python-3.11", + "python-3.12", + "python-3.13", + "python-3.14", + "python-ml-3.11", + "python-ml-3.12", + "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", + "deno-1.40", + "deno-1.46", + "deno-2.0", + "deno-2.5", + "deno-2.6", + "dart-2.15", + "dart-2.16", + "dart-2.17", + "dart-2.18", + "dart-2.19", + "dart-3.0", + "dart-3.1", + "dart-3.3", + "dart-3.5", + "dart-3.8", + "dart-3.9", + "dart-3.10", + "dart-3.11", + "dart-3.12", + "dotnet-6.0", + "dotnet-7.0", + "dotnet-8.0", + "dotnet-10", + "java-8.0", + "java-11.0", + "java-17.0", + "java-18.0", + "java-21.0", + "java-22", + "java-25", + "swift-5.5", + "swift-5.8", + "swift-5.9", + "swift-5.10", + "swift-6.2", + "kotlin-1.6", + "kotlin-1.8", + "kotlin-1.9", + "kotlin-2.0", + "kotlin-2.3", + "cpp-17", + "cpp-20", + "bun-1.0", + "bun-1.1", + "bun-1.2", + "bun-1.3", + "go-1.23", + "go-1.24", + "go-1.25", + "go-1.26", + "rust-1.83", + "static-1", + "flutter-3.24", + "flutter-3.27", + "flutter-3.29", + "flutter-3.32", + "flutter-3.35", + "flutter-3.38", + "flutter-3.41", + "flutter-3.44" + ], + "x-enum-name": "Runtime", + "x-enum-keys": [ + "node-14.5", + "node-16.0", + "node-18.0", + "node-19.0", + "node-20.0", + "node-21.0", + "node-22", + "node-23", + "node-24", + "node-25", + "php-8.0", + "php-8.1", + "php-8.2", + "php-8.3", + "php-8.4", + "ruby-3.0", + "ruby-3.1", + "ruby-3.2", + "ruby-3.3", + "ruby-3.4", + "ruby-4.0", + "python-3.8", + "python-3.9", + "python-3.10", + "python-3.11", + "python-3.12", + "python-3.13", + "python-3.14", + "python-ml-3.11", + "python-ml-3.12", + "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", + "deno-1.40", + "deno-1.46", + "deno-2.0", + "deno-2.5", + "deno-2.6", + "dart-2.15", + "dart-2.16", + "dart-2.17", + "dart-2.18", + "dart-2.19", + "dart-3.0", + "dart-3.1", + "dart-3.3", + "dart-3.5", + "dart-3.8", + "dart-3.9", + "dart-3.10", + "dart-3.11", + "dart-3.12", + "dotnet-6.0", + "dotnet-7.0", + "dotnet-8.0", + "dotnet-10", + "java-8.0", + "java-11.0", + "java-17.0", + "java-18.0", + "java-21.0", + "java-22", + "java-25", + "swift-5.5", + "swift-5.8", + "swift-5.9", + "swift-5.10", + "swift-6.2", + "kotlin-1.6", + "kotlin-1.8", + "kotlin-1.9", + "kotlin-2.0", + "kotlin-2.3", + "cpp-17", + "cpp-20", + "bun-1.0", + "bun-1.1", + "bun-1.2", + "bun-1.3", + "go-1.23", + "go-1.24", + "go-1.25", + "go-1.26", + "rust-1.83", + "static-1", + "flutter-3.24", + "flutter-3.27", + "flutter-3.29", + "flutter-3.32", + "flutter-3.35", + "flutter-3.38", + "flutter-3.41", + "flutter-3.44" + ] + }, + "execute": { + "type": "array", + "description": "An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", + "default": [], + "x-example": "[\"any\"]", + "items": { + "type": "string" + } + }, + "events": { + "type": "array", + "description": "Events list. Maximum of 100 events are allowed.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "schedule": { + "type": "string", + "description": "Schedule CRON syntax.", + "default": "", + "x-example": null + }, + "timeout": { + "type": "integer", + "description": "Function maximum execution time in seconds.", + "default": 15, + "x-example": 1, + "format": "int32" + }, + "enabled": { + "type": "boolean", + "description": "Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.", + "default": true, + "x-example": false + }, + "logging": { + "type": "boolean", + "description": "When disabled, executions will exclude logs and errors, and will be slightly faster.", + "default": true, + "x-example": false + }, + "entrypoint": { + "type": "string", + "description": "Entrypoint File. This path is relative to the \"providerRootDirectory\".", + "default": "", + "x-example": "" + }, + "commands": { + "type": "string", + "description": "Build Commands.", + "default": "", + "x-example": "" + }, + "scopes": { + "type": "array", + "description": "List of scopes allowed for API key auto-generated for every execution. Maximum of 100 scopes are allowed.", + "default": [], + "x-example": null, + "items": { + "type": "string", + "enum": [ + "project.read", + "project.write", + "keys.read", + "keys.write", + "platforms.read", + "platforms.write", + "mocks.read", + "mocks.write", + "policies.read", + "policies.write", + "project.policies.read", + "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", + "templates.read", + "templates.write", + "stages.read", + "stages.write", + "oauth2.read", + "oauth2.write", + "users.read", + "users.write", + "sessions.read", + "sessions.write", + "teams.read", + "teams.write", + "databases.read", + "databases.write", + "tables.read", + "tables.write", + "columns.read", + "columns.write", + "indexes.read", + "indexes.write", + "rows.read", + "rows.write", + "collections.read", + "collections.write", + "attributes.read", + "attributes.write", + "documents.read", + "documents.write", + "buckets.read", + "buckets.write", + "files.read", + "files.write", + "tokens.read", + "tokens.write", + "functions.read", + "functions.write", + "executions.read", + "executions.write", + "execution.read", + "execution.write", + "sites.read", + "sites.write", + "log.read", + "log.write", + "providers.read", + "providers.write", + "topics.read", + "topics.write", + "subscribers.read", + "subscribers.write", + "targets.read", + "targets.write", + "messages.read", + "messages.write", + "rules.read", + "rules.write", + "webhooks.read", + "webhooks.write", + "locale.read", + "avatars.read", + "health.read", + "assistant.read", + "migrations.read", + "migrations.write", + "schedules.read", + "schedules.write", + "vcs.read", + "vcs.write", + "insights.read", + "insights.write", + "reports.read", + "reports.write", + "presences.read", + "presences.write", + "backups.policies.read", + "backups.policies.write", + "archives.read", + "archives.write", + "restorations.read", + "restorations.write", + "dedicatedDatabases.execute", + "domains.read", + "domains.write", + "events.read", + "apps.read", + "apps.write", + "usage.read" + ], + "x-enum-name": "ProjectKeyScopes", + "x-enum-keys": [ + "project.read", + "project.write", + "keys.read", + "keys.write", + "platforms.read", + "platforms.write", + "mocks.read", + "mocks.write", + "policies.read", + "policies.write", + "project.policies.read", + "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", + "templates.read", + "templates.write", + "stages.read", + "stages.write", + "oauth2.read", + "oauth2.write", + "users.read", + "users.write", + "sessions.read", + "sessions.write", + "teams.read", + "teams.write", + "databases.read", + "databases.write", + "tables.read", + "tables.write", + "columns.read", + "columns.write", + "indexes.read", + "indexes.write", + "rows.read", + "rows.write", + "collections.read", + "collections.write", + "attributes.read", + "attributes.write", + "documents.read", + "documents.write", + "buckets.read", + "buckets.write", + "files.read", + "files.write", + "tokens.read", + "tokens.write", + "functions.read", + "functions.write", + "executions.read", + "executions.write", + "execution.read", + "execution.write", + "sites.read", + "sites.write", + "log.read", + "log.write", + "providers.read", + "providers.write", + "topics.read", + "topics.write", + "subscribers.read", + "subscribers.write", + "targets.read", + "targets.write", + "messages.read", + "messages.write", + "rules.read", + "rules.write", + "webhooks.read", + "webhooks.write", + "locale.read", + "avatars.read", + "health.read", + "assistant.read", + "migrations.read", + "migrations.write", + "schedules.read", + "schedules.write", + "vcs.read", + "vcs.write", + "insights.read", + "insights.write", + "reports.read", + "reports.write", + "presences.read", + "presences.write", + "backups.policies.read", + "backups.policies.write", + "archives.read", + "archives.write", + "restorations.read", + "restorations.write", + "dedicatedDatabases.execute", + "domains.read", + "domains.write", + "events.read", + "apps.read", + "apps.write", + "usage.read" + ] + } + }, + "installationId": { + "type": "string", + "description": "Appwrite Installation ID for VCS (Version Control System) deployment.", + "default": "", + "x-example": "" + }, + "providerRepositoryId": { + "type": "string", + "description": "Repository ID of the repo linked to the function.", + "default": "", + "x-example": "" + }, + "providerBranch": { + "type": "string", + "description": "Production branch for the repo linked to the function.", + "default": "", + "x-example": "" + }, + "providerSilentMode": { + "type": "boolean", + "description": "Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.", + "default": false, + "x-example": false + }, + "providerRootDirectory": { + "type": "string", + "description": "Path to function code in the linked repo.", + "default": "", + "x-example": "" + }, + "providerBranches": { + "type": "array", + "description": "List of branch name patterns to trigger automatic deployments. Supports wildcards. Leave empty to deploy on all branches.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "providerPaths": { + "type": "array", + "description": "List of file path patterns to trigger automatic deployments. Supports wildcards. Leave empty to deploy on all file changes.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "buildSpecification": { + "type": "string", + "description": "Build specification for the function deployments.", + "default": {}, + "x-example": null + }, + "runtimeSpecification": { + "type": "string", + "description": "Runtime specification for the function executions.", + "default": {}, + "x-example": null + }, + "deploymentRetention": { + "type": "integer", + "description": "Days to keep non-active deployments before deletion. Value 0 means all deployments will be kept.", + "default": 0, + "x-example": 0, + "format": "int32" + } + }, + "required": [ + "functionId", + "name", + "runtime" + ] + } + } + } + } + } + }, + "\/functions\/runtimes": { + "get": { + "summary": "List runtimes", + "operationId": "functionsListRuntimes", + "tags": [ + "functions" + ], + "description": "Get a list of all runtimes that are currently active on your instance.", + "responses": { + "200": { + "description": "Runtimes List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/runtimeList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listRuntimes", + "group": "runtimes", + "cookies": false, + "type": "", + "demo": "functions\/list-runtimes.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "public", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, + "\/functions\/specifications": { + "get": { + "summary": "List specifications", + "operationId": "functionsListSpecifications", + "tags": [ + "functions" + ], + "description": "List allowed function specifications for this instance.", + "responses": { + "200": { + "description": "Specifications List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/specificationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listSpecifications", + "group": "runtimes", + "cookies": false, + "type": "", + "demo": "functions\/list-specifications.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.read", + "platforms": [ + "server", + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "type", + "description": "Specification type to list. Can be one of: runtimes, builds.", + "required": false, + "schema": { + "type": "string", + "x-example": "runtimes", + "default": "runtimes" + }, + "in": "query" + } + ] + } + }, + "\/functions\/templates": { + "get": { + "summary": "List templates", + "operationId": "functionsListTemplates", + "tags": [ + "functions" + ], + "description": "List available function templates. You can use template details in [createFunction](\/docs\/references\/cloud\/server-nodejs\/functions#create) method.", + "responses": { + "200": { + "description": "Function Templates List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/templateFunctionList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listTemplates", + "group": "templates", + "cookies": false, + "type": "", + "demo": "functions\/list-templates.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "public", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "runtimes", + "description": "List of runtimes allowed for filtering function templates. Maximum of 100 runtimes are allowed.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "node-14.5", + "node-16.0", + "node-18.0", + "node-19.0", + "node-20.0", + "node-21.0", + "node-22", + "node-23", + "node-24", + "node-25", + "php-8.0", + "php-8.1", + "php-8.2", + "php-8.3", + "php-8.4", + "ruby-3.0", + "ruby-3.1", + "ruby-3.2", + "ruby-3.3", + "ruby-3.4", + "ruby-4.0", + "python-3.8", + "python-3.9", + "python-3.10", + "python-3.11", + "python-3.12", + "python-3.13", + "python-3.14", + "python-ml-3.11", + "python-ml-3.12", + "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", + "deno-1.40", + "deno-1.46", + "deno-2.0", + "deno-2.5", + "deno-2.6", + "dart-2.15", + "dart-2.16", + "dart-2.17", + "dart-2.18", + "dart-2.19", + "dart-3.0", + "dart-3.1", + "dart-3.3", + "dart-3.5", + "dart-3.8", + "dart-3.9", + "dart-3.10", + "dart-3.11", + "dart-3.12", + "dotnet-6.0", + "dotnet-7.0", + "dotnet-8.0", + "dotnet-10", + "java-8.0", + "java-11.0", + "java-17.0", + "java-18.0", + "java-21.0", + "java-22", + "java-25", + "swift-5.5", + "swift-5.8", + "swift-5.9", + "swift-5.10", + "swift-6.2", + "kotlin-1.6", + "kotlin-1.8", + "kotlin-1.9", + "kotlin-2.0", + "kotlin-2.3", + "cpp-17", + "cpp-20", + "bun-1.0", + "bun-1.1", + "bun-1.2", + "bun-1.3", + "go-1.23", + "go-1.24", + "go-1.25", + "go-1.26", + "rust-1.83", + "static-1", + "flutter-3.24", + "flutter-3.27", + "flutter-3.29", + "flutter-3.32", + "flutter-3.35", + "flutter-3.38", + "flutter-3.41", + "flutter-3.44" + ], + "x-enum-name": "Runtime", + "x-enum-keys": [ + "node-14.5", + "node-16.0", + "node-18.0", + "node-19.0", + "node-20.0", + "node-21.0", + "node-22", + "node-23", + "node-24", + "node-25", + "php-8.0", + "php-8.1", + "php-8.2", + "php-8.3", + "php-8.4", + "ruby-3.0", + "ruby-3.1", + "ruby-3.2", + "ruby-3.3", + "ruby-3.4", + "ruby-4.0", + "python-3.8", + "python-3.9", + "python-3.10", + "python-3.11", + "python-3.12", + "python-3.13", + "python-3.14", + "python-ml-3.11", + "python-ml-3.12", + "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", + "deno-1.40", + "deno-1.46", + "deno-2.0", + "deno-2.5", + "deno-2.6", + "dart-2.15", + "dart-2.16", + "dart-2.17", + "dart-2.18", + "dart-2.19", + "dart-3.0", + "dart-3.1", + "dart-3.3", + "dart-3.5", + "dart-3.8", + "dart-3.9", + "dart-3.10", + "dart-3.11", + "dart-3.12", + "dotnet-6.0", + "dotnet-7.0", + "dotnet-8.0", + "dotnet-10", + "java-8.0", + "java-11.0", + "java-17.0", + "java-18.0", + "java-21.0", + "java-22", + "java-25", + "swift-5.5", + "swift-5.8", + "swift-5.9", + "swift-5.10", + "swift-6.2", + "kotlin-1.6", + "kotlin-1.8", + "kotlin-1.9", + "kotlin-2.0", + "kotlin-2.3", + "cpp-17", + "cpp-20", + "bun-1.0", + "bun-1.1", + "bun-1.2", + "bun-1.3", + "go-1.23", + "go-1.24", + "go-1.25", + "go-1.26", + "rust-1.83", + "static-1", + "flutter-3.24", + "flutter-3.27", + "flutter-3.29", + "flutter-3.32", + "flutter-3.35", + "flutter-3.38", + "flutter-3.41", + "flutter-3.44" + ] + }, + "default": [] + }, + "in": "query" + }, + { + "name": "useCases", + "description": "List of use cases allowed for filtering function templates. Maximum of 100 use cases are allowed.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "starter", + "databases", + "ai", + "messaging", + "utilities", + "dev-tools", + "auth" + ], + "x-enum-name": "FunctionTemplateUseCase", + "x-enum-keys": [ + "starter", + "databases", + "ai", + "messaging", + "utilities", + "dev-tools", + "auth" + ] + }, + "default": [] + }, + "in": "query" + }, + { + "name": "limit", + "description": "Limit the number of templates returned in the response. Default limit is 25, and maximum limit is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Offset the list of returned templates. Maximum offset is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + } + ] + } + }, + "\/functions\/templates\/{templateId}": { + "get": { + "summary": "Get function template", + "operationId": "functionsGetTemplate", + "tags": [ + "functions" + ], + "description": "Get a function template using ID. You can use template details in [createFunction](\/docs\/references\/cloud\/server-nodejs\/functions#create) method.", + "responses": { + "200": { + "description": "Template Function", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/templateFunction" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getTemplate", + "group": "templates", + "cookies": false, + "type": "", + "demo": "functions\/get-template.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "public", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "templateId", + "description": "Template ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/functions\/usage": { + "get": { + "summary": "Get functions usage", + "operationId": "functionsListUsage", + "tags": [ + "functions" + ], + "description": "Get usage metrics and statistics for all functions in the project. View statistics including total deployments, builds, logs, storage usage, and compute time. The response includes both current totals and historical data for each metric. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, defaults to 30 days.", + "responses": { + "200": { + "description": "UsageFunctions", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/usageFunctions" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listUsage", + "group": null, + "cookies": false, + "type": "", + "demo": "functions\/list-usage.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.read", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "range", + "description": "Date range.", + "required": false, + "schema": { + "type": "string", + "x-example": "24h", + "enum": [ + "24h", + "30d", + "90d" + ], + "x-enum-name": "UsageRange", + "x-enum-keys": [ + "Twenty Four Hours", + "Thirty Days", + "Ninety Days" + ], + "default": "30d" + }, + "in": "query" + } + ] + } + }, + "\/functions\/{functionId}": { + "get": { + "summary": "Get function", + "operationId": "functionsGet", + "tags": [ + "functions" + ], + "description": "Get a function by its unique ID.", + "responses": { + "200": { + "description": "Function", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/function" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "get", + "group": "functions", + "cookies": false, + "type": "", + "demo": "functions\/get.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + }, + "put": { + "summary": "Update function", + "operationId": "functionsUpdate", + "tags": [ + "functions" + ], + "description": "Update function by its unique ID.", + "responses": { + "200": { + "description": "Function", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/function" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "update", + "group": "functions", + "cookies": false, + "type": "", + "demo": "functions\/update.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Function name. Max length: 128 chars.", + "x-example": "" + }, + "runtime": { + "type": "string", + "description": "Execution runtime.", + "x-example": "node-14.5", + "enum": [ + "node-14.5", + "node-16.0", + "node-18.0", + "node-19.0", + "node-20.0", + "node-21.0", + "node-22", + "node-23", + "node-24", + "node-25", + "php-8.0", + "php-8.1", + "php-8.2", + "php-8.3", + "php-8.4", + "ruby-3.0", + "ruby-3.1", + "ruby-3.2", + "ruby-3.3", + "ruby-3.4", + "ruby-4.0", + "python-3.8", + "python-3.9", + "python-3.10", + "python-3.11", + "python-3.12", + "python-3.13", + "python-3.14", + "python-ml-3.11", + "python-ml-3.12", + "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", + "deno-1.40", + "deno-1.46", + "deno-2.0", + "deno-2.5", + "deno-2.6", + "dart-2.15", + "dart-2.16", + "dart-2.17", + "dart-2.18", + "dart-2.19", + "dart-3.0", + "dart-3.1", + "dart-3.3", + "dart-3.5", + "dart-3.8", + "dart-3.9", + "dart-3.10", + "dart-3.11", + "dart-3.12", + "dotnet-6.0", + "dotnet-7.0", + "dotnet-8.0", + "dotnet-10", + "java-8.0", + "java-11.0", + "java-17.0", + "java-18.0", + "java-21.0", + "java-22", + "java-25", + "swift-5.5", + "swift-5.8", + "swift-5.9", + "swift-5.10", + "swift-6.2", + "kotlin-1.6", + "kotlin-1.8", + "kotlin-1.9", + "kotlin-2.0", + "kotlin-2.3", + "cpp-17", + "cpp-20", + "bun-1.0", + "bun-1.1", + "bun-1.2", + "bun-1.3", + "go-1.23", + "go-1.24", + "go-1.25", + "go-1.26", + "rust-1.83", + "static-1", + "flutter-3.24", + "flutter-3.27", + "flutter-3.29", + "flutter-3.32", + "flutter-3.35", + "flutter-3.38", + "flutter-3.41", + "flutter-3.44" + ], + "x-enum-name": "Runtime", + "x-enum-keys": [ + "node-14.5", + "node-16.0", + "node-18.0", + "node-19.0", + "node-20.0", + "node-21.0", + "node-22", + "node-23", + "node-24", + "node-25", + "php-8.0", + "php-8.1", + "php-8.2", + "php-8.3", + "php-8.4", + "ruby-3.0", + "ruby-3.1", + "ruby-3.2", + "ruby-3.3", + "ruby-3.4", + "ruby-4.0", + "python-3.8", + "python-3.9", + "python-3.10", + "python-3.11", + "python-3.12", + "python-3.13", + "python-3.14", + "python-ml-3.11", + "python-ml-3.12", + "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", + "deno-1.40", + "deno-1.46", + "deno-2.0", + "deno-2.5", + "deno-2.6", + "dart-2.15", + "dart-2.16", + "dart-2.17", + "dart-2.18", + "dart-2.19", + "dart-3.0", + "dart-3.1", + "dart-3.3", + "dart-3.5", + "dart-3.8", + "dart-3.9", + "dart-3.10", + "dart-3.11", + "dart-3.12", + "dotnet-6.0", + "dotnet-7.0", + "dotnet-8.0", + "dotnet-10", + "java-8.0", + "java-11.0", + "java-17.0", + "java-18.0", + "java-21.0", + "java-22", + "java-25", + "swift-5.5", + "swift-5.8", + "swift-5.9", + "swift-5.10", + "swift-6.2", + "kotlin-1.6", + "kotlin-1.8", + "kotlin-1.9", + "kotlin-2.0", + "kotlin-2.3", + "cpp-17", + "cpp-20", + "bun-1.0", + "bun-1.1", + "bun-1.2", + "bun-1.3", + "go-1.23", + "go-1.24", + "go-1.25", + "go-1.26", + "rust-1.83", + "static-1", + "flutter-3.24", + "flutter-3.27", + "flutter-3.29", + "flutter-3.32", + "flutter-3.35", + "flutter-3.38", + "flutter-3.41", + "flutter-3.44" + ] + }, + "execute": { + "type": "array", + "description": "An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", + "default": [], + "x-example": "[\"any\"]", + "items": { + "type": "string" + } + }, + "events": { + "type": "array", + "description": "Events list. Maximum of 100 events are allowed.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "schedule": { + "type": "string", + "description": "Schedule CRON syntax.", + "default": "", + "x-example": null + }, + "timeout": { + "type": "integer", + "description": "Maximum execution time in seconds.", + "default": 15, + "x-example": 1, + "format": "int32" + }, + "enabled": { + "type": "boolean", + "description": "Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.", + "default": true, + "x-example": false + }, + "logging": { + "type": "boolean", + "description": "When disabled, executions will exclude logs and errors, and will be slightly faster.", + "default": true, + "x-example": false + }, + "entrypoint": { + "type": "string", + "description": "Entrypoint File. This path is relative to the \"providerRootDirectory\".", + "default": "", + "x-example": "" + }, + "commands": { + "type": "string", + "description": "Build Commands.", + "default": "", + "x-example": "" + }, + "scopes": { + "type": "array", + "description": "List of scopes allowed for API Key auto-generated for every execution. Maximum of 100 scopes are allowed.", + "default": [], + "x-example": null, + "items": { + "type": "string", + "enum": [ + "project.read", + "project.write", + "keys.read", + "keys.write", + "platforms.read", + "platforms.write", + "mocks.read", + "mocks.write", + "policies.read", + "policies.write", + "project.policies.read", + "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", + "templates.read", + "templates.write", + "stages.read", + "stages.write", + "oauth2.read", + "oauth2.write", + "users.read", + "users.write", + "sessions.read", + "sessions.write", + "teams.read", + "teams.write", + "databases.read", + "databases.write", + "tables.read", + "tables.write", + "columns.read", + "columns.write", + "indexes.read", + "indexes.write", + "rows.read", + "rows.write", + "collections.read", + "collections.write", + "attributes.read", + "attributes.write", + "documents.read", + "documents.write", + "buckets.read", + "buckets.write", + "files.read", + "files.write", + "tokens.read", + "tokens.write", + "functions.read", + "functions.write", + "executions.read", + "executions.write", + "execution.read", + "execution.write", + "sites.read", + "sites.write", + "log.read", + "log.write", + "providers.read", + "providers.write", + "topics.read", + "topics.write", + "subscribers.read", + "subscribers.write", + "targets.read", + "targets.write", + "messages.read", + "messages.write", + "rules.read", + "rules.write", + "webhooks.read", + "webhooks.write", + "locale.read", + "avatars.read", + "health.read", + "assistant.read", + "migrations.read", + "migrations.write", + "schedules.read", + "schedules.write", + "vcs.read", + "vcs.write", + "insights.read", + "insights.write", + "reports.read", + "reports.write", + "presences.read", + "presences.write", + "backups.policies.read", + "backups.policies.write", + "archives.read", + "archives.write", + "restorations.read", + "restorations.write", + "dedicatedDatabases.execute", + "domains.read", + "domains.write", + "events.read", + "apps.read", + "apps.write", + "usage.read" + ], + "x-enum-name": "ProjectKeyScopes", + "x-enum-keys": [ + "project.read", + "project.write", + "keys.read", + "keys.write", + "platforms.read", + "platforms.write", + "mocks.read", + "mocks.write", + "policies.read", + "policies.write", + "project.policies.read", + "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", + "templates.read", + "templates.write", + "stages.read", + "stages.write", + "oauth2.read", + "oauth2.write", + "users.read", + "users.write", + "sessions.read", + "sessions.write", + "teams.read", + "teams.write", + "databases.read", + "databases.write", + "tables.read", + "tables.write", + "columns.read", + "columns.write", + "indexes.read", + "indexes.write", + "rows.read", + "rows.write", + "collections.read", + "collections.write", + "attributes.read", + "attributes.write", + "documents.read", + "documents.write", + "buckets.read", + "buckets.write", + "files.read", + "files.write", + "tokens.read", + "tokens.write", + "functions.read", + "functions.write", + "executions.read", + "executions.write", + "execution.read", + "execution.write", + "sites.read", + "sites.write", + "log.read", + "log.write", + "providers.read", + "providers.write", + "topics.read", + "topics.write", + "subscribers.read", + "subscribers.write", + "targets.read", + "targets.write", + "messages.read", + "messages.write", + "rules.read", + "rules.write", + "webhooks.read", + "webhooks.write", + "locale.read", + "avatars.read", + "health.read", + "assistant.read", + "migrations.read", + "migrations.write", + "schedules.read", + "schedules.write", + "vcs.read", + "vcs.write", + "insights.read", + "insights.write", + "reports.read", + "reports.write", + "presences.read", + "presences.write", + "backups.policies.read", + "backups.policies.write", + "archives.read", + "archives.write", + "restorations.read", + "restorations.write", + "dedicatedDatabases.execute", + "domains.read", + "domains.write", + "events.read", + "apps.read", + "apps.write", + "usage.read" + ] + } + }, + "installationId": { + "type": "string", + "description": "Appwrite Installation ID for VCS (Version Controle System) deployment.", + "default": "", + "x-example": "" + }, + "providerRepositoryId": { + "type": "string", + "description": "Repository ID of the repo linked to the function", + "x-example": "", + "x-nullable": true + }, + "providerBranch": { + "type": "string", + "description": "Production branch for the repo linked to the function", + "default": "", + "x-example": "" + }, + "providerSilentMode": { + "type": "boolean", + "description": "Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.", + "default": false, + "x-example": false + }, + "providerRootDirectory": { + "type": "string", + "description": "Path to function code in the linked repo.", + "default": "", + "x-example": "" + }, + "providerBranches": { + "type": "array", + "description": "List of branch name patterns to trigger automatic deployments. Supports wildcards. Leave empty to deploy on all branches.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "providerPaths": { + "type": "array", + "description": "List of file path patterns to trigger automatic deployments. Supports wildcards. Leave empty to deploy on all file changes.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "buildSpecification": { + "type": "string", + "description": "Build specification for the function deployments.", + "x-example": null, + "x-nullable": true + }, + "runtimeSpecification": { + "type": "string", + "description": "Runtime specification for the function executions.", + "default": {}, + "x-example": null + }, + "deploymentRetention": { + "type": "integer", + "description": "Days to keep non-active deployments before deletion. Value 0 means all deployments will be kept.", + "default": 0, + "x-example": 0, + "format": "int32" + } + }, + "required": [ + "name" + ] + } + } + } + } + }, + "delete": { + "summary": "Delete function", + "operationId": "functionsDelete", + "tags": [ + "functions" + ], + "description": "Delete a function by its unique ID.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "delete", + "group": "functions", + "cookies": false, + "type": "", + "demo": "functions\/delete.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/functions\/{functionId}\/deployment": { + "patch": { + "summary": "Update function's deployment", + "operationId": "functionsUpdateFunctionDeployment", + "tags": [ + "functions" + ], + "description": "Update the function active deployment. Use this endpoint to switch the code deployment that should be used when visitor opens your function.", + "responses": { + "200": { + "description": "Function", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/function" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateFunctionDeployment", + "group": "functions", + "cookies": false, + "type": "", + "demo": "functions\/update-function-deployment.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "deploymentId": { + "type": "string", + "description": "Deployment ID.", + "x-example": "" + } + }, + "required": [ + "deploymentId" + ] + } + } + } + } + } + }, + "\/functions\/{functionId}\/deployments": { + "get": { + "summary": "List deployments", + "operationId": "functionsListDeployments", + "tags": [ + "functions" + ], + "description": "Get a list of all the function's code deployments. You can use the query params to filter your results.", + "responses": { + "200": { + "description": "Deployments List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/deploymentList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listDeployments", + "group": "deployments", + "cookies": false, + "type": "", + "demo": "functions\/list-deployments.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: buildSize, sourceSize, totalSize, buildDuration, status, activate, type", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + } + ] + }, + "post": { + "summary": "Create deployment", + "operationId": "functionsCreateDeployment", + "tags": [ + "functions" + ], + "description": "Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.", + "responses": { + "202": { + "description": "Deployment", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/deployment" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createDeployment", + "group": "deployments", + "cookies": false, + "type": "upload", + "demo": "functions\/create-deployment.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": true, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "multipart\/form-data": { + "schema": { + "type": "object", + "properties": { + "entrypoint": { + "type": "string", + "description": "Entrypoint File.", + "x-example": "", + "x-nullable": true + }, + "commands": { + "type": "string", + "description": "Build Commands.", + "x-example": "", + "x-nullable": true + }, + "code": { + "type": "string", + "description": "Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.", + "x-example": null, + "format": "binary" + }, + "activate": { + "type": "boolean", + "description": "Automatically activate the deployment when it is finished building.", + "x-example": false + } + }, + "required": [ + "code", + "activate" + ] + } + } + } + } + } + }, + "\/functions\/{functionId}\/deployments\/duplicate": { + "post": { + "summary": "Create duplicate deployment", + "operationId": "functionsCreateDuplicateDeployment", + "tags": [ + "functions" + ], + "description": "Create a new build for an existing function deployment. This endpoint allows you to rebuild a deployment with the updated function configuration, including its entrypoint and build commands if they have been modified. The build process will be queued and executed asynchronously. The original deployment's code will be preserved and used for the new build.", + "responses": { + "202": { + "description": "Deployment", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/deployment" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createDuplicateDeployment", + "group": "deployments", + "cookies": false, + "type": "", + "demo": "functions\/create-duplicate-deployment.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "deploymentId": { + "type": "string", + "description": "Deployment ID.", + "x-example": "" + }, + "buildId": { + "type": "string", + "description": "Build unique ID.", + "default": "", + "x-example": "" + } + }, + "required": [ + "deploymentId" + ] + } + } + } + } + } + }, + "\/functions\/{functionId}\/deployments\/template": { + "post": { + "summary": "Create template deployment", + "operationId": "functionsCreateTemplateDeployment", + "tags": [ + "functions" + ], + "description": "Create a deployment based on a template.\n\nUse this endpoint with combination of [listTemplates](https:\/\/appwrite.io\/docs\/products\/functions\/templates) to find the template details.", + "responses": { + "202": { + "description": "Deployment", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/deployment" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createTemplateDeployment", + "group": "deployments", + "cookies": false, + "type": "", + "demo": "functions\/create-template-deployment.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "repository": { + "type": "string", + "description": "Repository name of the template.", + "x-example": "" + }, + "owner": { + "type": "string", + "description": "The name of the owner of the template.", + "x-example": "" + }, + "rootDirectory": { + "type": "string", + "description": "Path to function code in the template repo.", + "x-example": "" + }, + "type": { + "type": "string", + "description": "Type for the reference provided. Can be commit, branch, or tag", + "x-example": "commit", + "enum": [ + "commit", + "branch", + "tag" + ], + "x-enum-name": "TemplateReferenceType", + "x-enum-keys": [ + "commit", + "branch", + "tag" + ] + }, + "reference": { + "type": "string", + "description": "Reference value, can be a commit hash, branch name, or release tag", + "x-example": "" + }, + "activate": { + "type": "boolean", + "description": "Automatically activate the deployment when it is finished building.", + "default": false, + "x-example": false + } + }, + "required": [ + "repository", + "owner", + "rootDirectory", + "type", + "reference" + ] + } + } + } + } + } + }, + "\/functions\/{functionId}\/deployments\/vcs": { + "post": { + "summary": "Create VCS deployment", + "operationId": "functionsCreateVcsDeployment", + "tags": [ + "functions" + ], + "description": "Create a deployment when a function is connected to VCS.\n\nThis endpoint lets you create deployment from a branch, commit, or a tag.", + "responses": { + "202": { + "description": "Deployment", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/deployment" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createVcsDeployment", + "group": "deployments", + "cookies": false, + "type": "", + "demo": "functions\/create-vcs-deployment.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of reference passed. Allowed values are: branch, commit", + "x-example": "branch", + "enum": [ + "branch", + "commit" + ], + "x-enum-name": "VCSReferenceType", + "x-enum-keys": [ + "branch", + "commit" + ] + }, + "reference": { + "type": "string", + "description": "VCS reference to create deployment from. Depending on type this can be: branch name, commit hash", + "x-example": "" + }, + "activate": { + "type": "boolean", + "description": "Automatically activate the deployment when it is finished building.", + "default": false, + "x-example": false + } + }, + "required": [ + "type", + "reference" + ] + } + } + } + } + } + }, + "\/functions\/{functionId}\/deployments\/{deploymentId}": { + "get": { + "summary": "Get deployment", + "operationId": "functionsGetDeployment", + "tags": [ + "functions" + ], + "description": "Get a function deployment by its unique ID.", + "responses": { + "200": { + "description": "Deployment", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/deployment" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getDeployment", + "group": "deployments", + "cookies": false, + "type": "", + "demo": "functions\/get-deployment.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "deploymentId", + "description": "Deployment ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + }, + "delete": { + "summary": "Delete deployment", + "operationId": "functionsDeleteDeployment", + "tags": [ + "functions" + ], + "description": "Delete a code deployment by its unique ID.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteDeployment", + "group": "deployments", + "cookies": false, + "type": "", + "demo": "functions\/delete-deployment.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "deploymentId", + "description": "Deployment ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/functions\/{functionId}\/deployments\/{deploymentId}\/download": { + "get": { + "summary": "Get deployment download", + "operationId": "functionsGetDeploymentDownload", + "tags": [ + "functions" + ], + "description": "Get a function deployment content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.", + "responses": { + "200": { + "description": "File", + "content": { + "*\/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getDeploymentDownload", + "group": "deployments", + "cookies": false, + "type": "location", + "demo": "functions\/get-deployment-download.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "ImpersonateUserId": [] + } + }, + "security": [ + { + "Project": [], + "Key": [], + "JWT": [], + "ImpersonateUserId": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "deploymentId", + "description": "Deployment ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "type", + "description": "Deployment file to download. Can be: \"source\", \"output\".", + "required": false, + "schema": { + "type": "string", + "x-example": "source", + "enum": [ + "source", + "output" + ], + "x-enum-name": "DeploymentDownloadType", + "x-enum-keys": [ + "source", + "output" + ], + "default": "source" + }, + "in": "query" + } + ] + } + }, + "\/functions\/{functionId}\/deployments\/{deploymentId}\/status": { + "patch": { + "summary": "Update deployment status", + "operationId": "functionsUpdateDeploymentStatus", + "tags": [ + "functions" + ], + "description": "Cancel an ongoing function deployment build. If the build is already in progress, it will be stopped and marked as canceled. If the build hasn't started yet, it will be marked as canceled without executing. You cannot cancel builds that have already completed (status 'ready') or failed. The response includes the final build status and details.", + "responses": { + "200": { + "description": "Deployment", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/deployment" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateDeploymentStatus", + "group": "deployments", + "cookies": false, + "type": "", + "demo": "functions\/update-deployment-status.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "deploymentId", + "description": "Deployment ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/functions\/{functionId}\/executions": { + "get": { + "summary": "List executions", + "operationId": "functionsListExecutions", + "tags": [ + "functions" + ], + "description": "Get a list of all the current user function execution logs. You can use the query params to filter your results.", + "responses": { + "200": { + "description": "Executions List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/executionList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listExecutions", + "group": "executions", + "cookies": false, + "type": "", + "demo": "functions\/list-executions.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": [ + "executions.read", + "execution.read" + ], + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration, requestMethod, requestPath, deploymentId", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + } + ] + }, + "post": { + "summary": "Create execution", + "operationId": "functionsCreateExecution", + "tags": [ + "functions" + ], + "description": "Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.", + "responses": { + "201": { + "description": "Execution", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/execution" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createExecution", + "group": "executions", + "cookies": false, + "type": "", + "demo": "functions\/create-execution.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": [ + "executions.write", + "execution.write" + ], + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "body": { + "type": "string", + "description": "HTTP body of execution. Default value is empty string.", + "default": "", + "x-example": "" + }, + "async": { + "type": "boolean", + "description": "Execute code in the background. Default value is false.", + "default": false, + "x-example": false + }, + "path": { + "type": "string", + "description": "HTTP path of execution. Path can include query params. Default value is \/", + "default": "\/", + "x-example": "" + }, + "method": { + "type": "string", + "description": "HTTP method of execution. Default value is POST.", + "default": "POST", + "x-example": "GET", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS", + "HEAD" + ], + "x-enum-name": "ExecutionMethod", + "x-enum-keys": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS", + "HEAD" + ] + }, + "headers": { + "type": "object", + "description": "HTTP headers of execution. Defaults to empty.", + "default": [], + "x-example": "{}" + }, + "scheduledAt": { + "type": "string", + "description": "Scheduled execution time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future with precision in minutes.", + "x-example": "", + "x-nullable": true + } + } + } + } + } + } + } + }, + "\/functions\/{functionId}\/executions\/{executionId}": { + "get": { + "summary": "Get execution", + "operationId": "functionsGetExecution", + "tags": [ + "functions" + ], + "description": "Get a function execution log by its unique ID.", + "responses": { + "200": { + "description": "Execution", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/execution" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getExecution", + "group": "executions", + "cookies": false, + "type": "", + "demo": "functions\/get-execution.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": [ + "executions.read", + "execution.read" + ], + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "executionId", + "description": "Execution ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + }, + "delete": { + "summary": "Delete execution", + "operationId": "functionsDeleteExecution", + "tags": [ + "functions" + ], + "description": "Delete a function execution by its unique ID.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteExecution", + "group": "executions", + "cookies": false, + "type": "", + "demo": "functions\/delete-execution.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": [ + "executions.write", + "execution.write" + ], + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "executionId", + "description": "Execution ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/functions\/{functionId}\/usage": { + "get": { + "summary": "Get function usage", + "operationId": "functionsGetUsage", + "tags": [ + "functions" + ], + "description": "Get usage metrics and statistics for a for a specific function. View statistics including total deployments, builds, executions, storage usage, and compute time. The response includes both current totals and historical data for each metric. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, defaults to 30 days.", + "responses": { + "200": { + "description": "UsageFunction", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/usageFunction" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getUsage", + "group": null, + "cookies": false, + "type": "", + "demo": "functions\/get-usage.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.read", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "range", + "description": "Date range.", + "required": false, + "schema": { + "type": "string", + "x-example": "24h", + "enum": [ + "24h", + "30d", + "90d" + ], + "x-enum-name": "UsageRange", + "x-enum-keys": [ + "Twenty Four Hours", + "Thirty Days", + "Ninety Days" + ], + "default": "30d" + }, + "in": "query" + } + ] + } + }, + "\/functions\/{functionId}\/variables": { + "get": { + "summary": "List variables", + "operationId": "functionsListVariables", + "tags": [ + "functions" + ], + "description": "Get a list of all variables of a specific function.", + "responses": { + "200": { + "description": "Variables List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/variableList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listVariables", + "group": "variables", + "cookies": false, + "type": "", + "demo": "functions\/list-variables.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, resourceType, resourceId, secret", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + } + ] + }, + "post": { + "summary": "Create variable", + "operationId": "functionsCreateVariable", + "tags": [ + "functions" + ], + "description": "Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.", + "responses": { + "201": { + "description": "Variable", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/variable" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createVariable", + "group": "variables", + "cookies": false, + "type": "", + "demo": "functions\/create-variable.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "variableId": { + "type": "string", + "description": "Variable 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.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "key": { + "type": "string", + "description": "Variable key. Max length: 255 chars.", + "x-example": "" + }, + "value": { + "type": "string", + "description": "Variable value. Max length: 8192 chars.", + "x-example": "" + }, + "secret": { + "type": "boolean", + "description": "Secret variables can be updated or deleted, but only functions can read them during build and runtime.", + "default": true, + "x-example": false + } + }, + "required": [ + "variableId", + "key", + "value" + ] + } + } + } + } + } + }, + "\/functions\/{functionId}\/variables\/{variableId}": { + "get": { + "summary": "Get variable", + "operationId": "functionsGetVariable", + "tags": [ + "functions" + ], + "description": "Get a variable by its unique ID.", + "responses": { + "200": { + "description": "Variable", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/variable" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getVariable", + "group": "variables", + "cookies": false, + "type": "", + "demo": "functions\/get-variable.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "variableId", + "description": "Variable unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + }, + "put": { + "summary": "Update variable", + "operationId": "functionsUpdateVariable", + "tags": [ + "functions" + ], + "description": "Update variable by its unique ID.", + "responses": { + "200": { + "description": "Variable", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/variable" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateVariable", + "group": "variables", + "cookies": false, + "type": "", + "demo": "functions\/update-variable.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "variableId", + "description": "Variable unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Variable key. Max length: 255 chars.", + "x-example": "", + "x-nullable": true + }, + "value": { + "type": "string", + "description": "Variable value. Max length: 8192 chars.", + "x-example": "", + "x-nullable": true + }, + "secret": { + "type": "boolean", + "description": "Secret variables can be updated or deleted, but only functions can read them during build and runtime.", + "x-example": false, + "x-nullable": true + } + } + } + } + } + } + }, + "delete": { + "summary": "Delete variable", + "operationId": "functionsDeleteVariable", + "tags": [ + "functions" + ], + "description": "Delete a variable by its unique ID.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteVariable", + "group": "variables", + "cookies": false, + "type": "", + "demo": "functions\/delete-variable.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "functions.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "functionId", + "description": "Function unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "variableId", + "description": "Variable unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/graphql": { + "post": { + "summary": "GraphQL endpoint", + "operationId": "graphqlQuery", + "tags": [ + "graphql" + ], + "description": "Execute a GraphQL mutation.", + "responses": { + "200": { + "description": "Any", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/any" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "query", + "group": "graphql", + "cookies": false, + "type": "graphql", + "demo": "graphql\/query.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "url:{url},ip:{ip}", + "scope": "graphql", + "platforms": [ + "console", + "server", + "client" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [], + "Session": [], + "JWT": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "object", + "description": "The query or queries to execute.", + "default": {}, + "x-example": "{}" + } + }, + "required": [ + "query" + ] + } + } + } + } + } + }, + "\/graphql\/mutation": { + "post": { + "summary": "GraphQL endpoint", + "operationId": "graphqlMutation", + "tags": [ + "graphql" + ], + "description": "Execute a GraphQL mutation.", + "responses": { + "200": { + "description": "Any", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/any" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "mutation", + "group": "graphql", + "cookies": false, + "type": "graphql", + "demo": "graphql\/mutation.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "url:{url},ip:{ip}", + "scope": "graphql", + "platforms": [ + "console", + "server", + "client" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [], + "Session": [], + "JWT": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "object", + "description": "The query or queries to execute.", + "default": {}, + "x-example": "{}" + } + }, + "required": [ + "query" + ] + } + } + } + } + } + }, + "\/health": { + "get": { + "summary": "Get HTTP", + "operationId": "healthGet", + "tags": [ + "health" + ], + "description": "Check the Appwrite HTTP server is up and responsive.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "get", + "group": "health", + "cookies": false, + "type": "", + "demo": "health\/get.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, + "\/health\/anti-virus": { + "get": { + "summary": "Get antivirus", + "operationId": "healthGetAntivirus", + "tags": [ + "health" + ], + "description": "Check the Appwrite Antivirus server is up and connection is successful.", + "responses": { + "200": { + "description": "Health Antivirus", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthAntivirus" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getAntivirus", + "group": "health", + "cookies": false, + "type": "", + "demo": "health\/get-antivirus.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, + "\/health\/audits-db": { + "get": { + "summary": "Get audits DB", + "operationId": "healthGetAuditsDB", + "tags": [ + "health" + ], + "description": "Check the database that backs the audit and activity store. When the connection is reachable the endpoint returns a passing status with its response time.\n", + "responses": { + "200": { + "description": "Status List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatusList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getAuditsDB", + "group": null, + "cookies": false, + "type": "", + "demo": "health\/get-audits-db.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-audits-db.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, + "\/health\/cache": { + "get": { + "summary": "Get cache", + "operationId": "healthGetCache", + "tags": [ + "health" + ], + "description": "Check the Appwrite in-memory cache servers are up and connection is successful.", + "responses": { + "200": { + "description": "Status List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatusList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getCache", + "group": "health", + "cookies": false, + "type": "", + "demo": "health\/get-cache.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, + "\/health\/certificate": { + "get": { + "summary": "Get the SSL certificate for a domain", + "operationId": "healthGetCertificate", + "tags": [ + "health" + ], + "description": "Get the SSL certificate for a domain", + "responses": { + "200": { + "description": "Health Certificate", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthCertificate" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getCertificate", + "group": "health", + "cookies": false, + "type": "", + "demo": "health\/get-certificate.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "domain", + "description": "string", + "required": false, + "schema": { + "type": "string" + }, + "in": "query" + } + ] + } + }, + "\/health\/console-pausing": { + "get": { + "summary": "Get console pausing health", + "operationId": "healthGetConsolePausing", + "tags": [ + "health" + ], + "description": "Get console pausing health status. Monitors projects approaching the pause threshold to detect potential issues with console access tracking.\n", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getConsolePausing", + "group": null, + "cookies": false, + "type": "", + "demo": "health\/get-console-pausing.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-console-pausing.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "threshold", + "description": "Percentage threshold of projects approaching pause. When hit (equal or higher), endpoint returns server error. Default value is 10.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + }, + "in": "query" + }, + { + "name": "inactivityDays", + "description": "Number of days of inactivity before a project is paused. Should match the plan's projectInactivityDays setting. Default value is 7.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 7 + }, + "in": "query" + } + ] + } + }, + "\/health\/db": { + "get": { + "summary": "Get DB", + "operationId": "healthGetDB", + "tags": [ + "health" + ], + "description": "Check the Appwrite database servers are up and connection is successful.", + "responses": { + "200": { + "description": "Status List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatusList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getDB", + "group": "health", + "cookies": false, + "type": "", + "demo": "health\/get-db.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, + "\/health\/pubsub": { + "get": { + "summary": "Get pubsub", + "operationId": "healthGetPubSub", + "tags": [ + "health" + ], + "description": "Check the Appwrite pub-sub servers are up and connection is successful.", + "responses": { + "200": { + "description": "Status List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatusList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getPubSub", + "group": "health", + "cookies": false, + "type": "", + "demo": "health\/get-pub-sub.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, + "\/health\/queue\/audits": { + "get": { + "summary": "Get audits queue", + "operationId": "healthGetQueueAudits", + "tags": [ + "health" + ], + "description": "Get the number of audit logs that are waiting to be processed in the Appwrite internal queue server.\n", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getQueueAudits", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-audits.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-audits.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 5000 + }, + "in": "query" + } + ] + } + }, + "\/health\/queue\/billing-project-aggregation": { + "get": { + "summary": "Get billing project aggregation queue", + "operationId": "healthGetQueueBillingProjectAggregation", + "tags": [ + "health" + ], + "description": "Get billing project aggregation queue.", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getQueueBillingProjectAggregation", + "group": null, + "cookies": false, + "type": "", + "demo": "health\/get-queue-billing-project-aggregation.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-queue-billing-project-aggregation.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 10000 + }, + "in": "query" + } + ] + } + }, + "\/health\/queue\/billing-team-aggregation": { + "get": { + "summary": "Get billing team aggregation queue", + "operationId": "healthGetQueueBillingTeamAggregation", + "tags": [ + "health" + ], + "description": "Get billing team aggregation queue.", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getQueueBillingTeamAggregation", + "group": null, + "cookies": false, + "type": "", + "demo": "health\/get-queue-billing-team-aggregation.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-queue-billing-team-aggregation.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 10000 + }, + "in": "query" + } + ] + } + }, + "\/health\/queue\/builds": { + "get": { + "summary": "Get builds queue", + "operationId": "healthGetQueueBuilds", + "tags": [ + "health" + ], + "description": "Get the number of builds that are waiting to be processed in the Appwrite internal queue server.", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getQueueBuilds", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-builds.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "default": 5000 }, - "in": "path" + "in": "query" } ] } }, - "\/domains\/{domainId}\/presets\/proton-mail": { + "\/health\/queue\/certificates": { "get": { - "summary": "Get ProtonMail preset (Records)", - "operationId": "domainsGetPresetProtonMail", + "summary": "Get certificates queue", + "operationId": "healthGetQueueCertificates", "tags": [ - "domains" + "health" ], - "description": "List ProtonMail DNS records.", + "description": "Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28218,56 +32093,136 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetProtonMail", - "group": null, + "method": "getQueueCertificates", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/get-preset-proton-mail.md", + "demo": "health\/get-queue-certificates.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md", "auth": { "Project": [] } }, "security": [ { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 5000 + }, + "in": "query" + } + ] + } + }, + "\/health\/queue\/databases": { + "get": { + "summary": "Get databases queue", + "operationId": "healthGetQueueDatabases", + "tags": [ + "health" + ], + "description": "Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getQueueDatabases", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-databases.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md", + "auth": { "Project": [] } + }, + "security": [ + { + "Project": [], + "Key": [] + } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "name", + "description": "Queue name for which to check the queue size", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "database_db_main" }, - "in": "path" + "in": "query" + }, + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 5000 + }, + "in": "query" } ] - }, - "post": { - "summary": "Create ProtonMail preset (Records)", - "operationId": "domainsCreatePresetProtonMail", + } + }, + "\/health\/queue\/deletes": { + "get": { + "summary": "Get deletes queue", + "operationId": "healthGetQueueDeletes", "tags": [ - "domains" + "health" ], - "description": "Add ProtonMail DNS records to the domain. This will create the required MX records\nfor using ProtonMail with your custom domain.", + "description": "Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28275,58 +32230,166 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetProtonMail", - "group": null, + "method": "getQueueDeletes", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/create-preset-proton-mail.md", + "demo": "health\/get-queue-deletes.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md", "auth": { "Project": [] } }, "security": [ { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 5000 + }, + "in": "query" + } + ] + } + }, + "\/health\/queue\/failed\/{name}": { + "get": { + "summary": "Get number of failed queue jobs", + "operationId": "healthGetFailedJobs", + "tags": [ + "health" + ], + "description": "Returns the amount of failed jobs in a given queue.\n", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getFailedJobs", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-failed-jobs.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md", + "auth": { "Project": [] } + }, + "security": [ + { + "Project": [], + "Key": [] + } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", + "name": "name", + "description": "The name of the queue", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "v1-database", + "enum": [ + "v1-database", + "v1-deletes", + "v1-audits", + "v1-mails", + "v1-functions", + "v1-stats-resources", + "v1-stats-usage", + "v1-webhooks", + "v1-certificates", + "v1-builds", + "v1-screenshots", + "v1-messaging", + "v1-migrations" + ], + "x-enum-name": "HealthQueueName", + "x-enum-keys": [ + "v1-database", + "v1-deletes", + "v1-audits", + "v1-mails", + "v1-functions", + "v1-stats-resources", + "v1-stats-usage", + "v1-webhooks", + "v1-certificates", + "v1-builds", + "v1-screenshots", + "v1-messaging", + "v1-migrations" + ] }, "in": "path" + }, + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 5000 + }, + "in": "query" } ] } }, - "\/domains\/{domainId}\/presets\/zoho": { + "\/health\/queue\/functions": { "get": { - "summary": "Get Zoho preset (Records)", - "operationId": "domainsGetPresetZoho", + "summary": "Get functions queue", + "operationId": "healthGetQueueFunctions", "tags": [ - "domains" + "health" ], - "description": "List Zoho DNS records.", + "description": "Get the number of function executions that are waiting to be processed in the Appwrite internal queue server.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28334,56 +32397,62 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetZoho", - "group": null, + "method": "getQueueFunctions", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/get-preset-zoho.md", + "demo": "health\/get-queue-functions.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "default": 5000 }, - "in": "path" + "in": "query" } ] - }, - "post": { - "summary": "Create Zoho Mail preset (Records)", - "operationId": "domainsCreatePresetZoho", + } + }, + "\/health\/queue\/logs": { + "get": { + "summary": "Get logs queue", + "operationId": "healthGetQueueLogs", "tags": [ - "domains" + "health" ], - "description": "Add Zoho Mail DNS records to the domain. This will create the required MX records\nfor setting up Zoho Mail on your domain.", + "description": "Get the number of logs that are waiting to be processed in the Appwrite internal queue server.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28391,58 +32460,188 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetZoho", - "group": null, + "method": "getQueueLogs", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/create-preset-zoho.md", + "demo": "health\/get-queue-logs.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md", "auth": { "Project": [] } }, "security": [ { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 5000 + }, + "in": "query" + } + ] + } + }, + "\/health\/queue\/mails": { + "get": { + "summary": "Get mails queue", + "operationId": "healthGetQueueMails", + "tags": [ + "health" + ], + "description": "Get the number of mails that are waiting to be processed in the Appwrite internal queue server.", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getQueueMails", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-mails.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md", + "auth": { "Project": [] } + }, + "security": [ + { + "Project": [], + "Key": [] + } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "default": 5000 }, - "in": "path" + "in": "query" } ] } }, - "\/domains\/{domainId}\/records": { + "\/health\/queue\/messaging": { "get": { - "summary": "List DNS records for a given domain.", - "operationId": "domainsListRecords", + "summary": "Get messaging queue", + "operationId": "healthGetQueueMessaging", + "tags": [ + "health" + ], + "description": "Get the number of messages that are waiting to be processed in the Appwrite internal queue server.", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getQueueMessaging", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-messaging.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 5000 + }, + "in": "query" + } + ] + } + }, + "\/health\/queue\/migrations": { + "get": { + "summary": "Get migrations queue", + "operationId": "healthGetQueueMigrations", "tags": [ - "domains" + "health" ], - "description": "List DNS records for a given domain. You can use this endpoint to list all the DNS records\nassociated with your domain.", + "description": "Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.", "responses": { "200": { - "description": "DNS records list", + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28450,71 +32649,62 @@ }, "deprecated": false, "x-appwrite": { - "method": "listRecords", - "group": null, + "method": "getQueueMigrations", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/list-records.md", + "demo": "health\/get-queue-migrations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. You may filter on attributes such as type, name, value, etc. Maximum of 100 queries are allowed, each 4096 characters long.", + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "integer", + "format": "int32", + "default": 5000 }, "in": "query" - }, - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" } ] } }, - "\/domains\/{domainId}\/records\/a": { - "post": { - "summary": "Create a new A record for the given domain.", - "operationId": "domainsCreateRecordA", + "\/health\/queue\/region-manager": { + "get": { + "summary": "Get region manager queue", + "operationId": "healthGetQueueRegionManager", "tags": [ - "domains" + "health" ], - "description": "Create a new A record for the given domain. A records are used to point a domain name \nto an IPv4 address. The record value should be a valid IPv4 address.", + "description": "Get region manager queue.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28522,96 +32712,62 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordA", + "method": "getQueueRegionManager", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-a.md", + "demo": "health\/get-queue-region-manager.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-queue-region-manager.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 100.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "default": 100 }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "IPv4 address for this A record.", - "x-example": null - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment explaining what this record is for.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "in": "query" } - } + ] } }, - "\/domains\/{domainId}\/records\/a\/{recordId}": { - "put": { - "summary": "Update an existing A record for the given domain.", - "operationId": "domainsUpdateRecordA", + "\/health\/queue\/stats-resources": { + "get": { + "summary": "Get stats resources queue", + "operationId": "healthGetQueueStatsResources", "tags": [ - "domains" + "health" ], - "description": "Update an existing A record for the given domain. This endpoint allows you to modify \nthe properties of an A record including its name (subdomain), IPv4 address, TTL, \nand optional comment.", + "description": "Get the number of metrics that are waiting to be processed in the Appwrite stats resources queue.", "responses": { "200": { - "description": "DNSRecord", + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28619,106 +32775,62 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordA", - "group": null, + "method": "getQueueStatsResources", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/update-record-a.md", + "demo": "health\/get-queue-stats-resources.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-stats-resources.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "default": 5000 }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "IPv4 address for this A record.", - "x-example": null - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment explaining what this record is for.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "in": "query" } - } + ] } }, - "\/domains\/{domainId}\/records\/aaaa": { - "post": { - "summary": "Create a new AAAA record for the given domain.", - "operationId": "domainsCreateRecordAAAA", + "\/health\/queue\/stats-usage": { + "get": { + "summary": "Get stats usage queue", + "operationId": "healthGetQueueUsage", "tags": [ - "domains" + "health" ], - "description": "Create a new AAAA record for the given domain. This endpoint allows you to add a new IPv6 DNS record \nto your domain. The record will be used to point a hostname to an IPv6 address.", + "description": "Get the number of metrics that are waiting to be processed in the Appwrite internal queue server.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28726,96 +32838,62 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordAAAA", - "group": null, + "method": "getQueueUsage", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/create-record-aaaa.md", + "demo": "health\/get-queue-usage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-stats-usage.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "default": 5000 }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "IPv6 address for this AAAA record.", - "x-example": null - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment explaining what this record is for.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "in": "query" } - } + ] } }, - "\/domains\/{domainId}\/records\/aaaa\/{recordId}": { - "put": { - "summary": "Update an existing AAAA record for the given domain.", - "operationId": "domainsUpdateRecordAAAA", + "\/health\/queue\/threats": { + "get": { + "summary": "Get threats queue", + "operationId": "healthGetQueueThreats", "tags": [ - "domains" + "health" ], - "description": "Update an existing AAAA record for the given domain. This endpoint allows you to modify\nthe properties of an existing AAAA record, including its name (subdomain), IPv6 address,\nTTL, and optional comment.", + "description": "Get threats queue.", "responses": { "200": { - "description": "DNSRecord", + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28823,106 +32901,62 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordAAAA", + "method": "getQueueThreats", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-record-aaaa.md", + "demo": "health\/get-queue-threats.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-queue-threats.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 100.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "default": 100 }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "IPv6 address for this AAAA record.", - "x-example": null - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "in": "query" } - } + ] } }, - "\/domains\/{domainId}\/records\/alias": { - "post": { - "summary": "Create a new ALIAS record for the given domain.", - "operationId": "domainsCreateRecordAlias", + "\/health\/queue\/webhooks": { + "get": { + "summary": "Get webhooks queue", + "operationId": "healthGetQueueWebhooks", "tags": [ - "domains" + "health" ], - "description": "Create a new ALIAS record for the given domain. This record type can be used to point your domain \nto another domain name that will serve as an alias. This is particularly useful when you want to \nmap your domain to a target domain that may change its IP address.", + "description": "Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28930,96 +32964,62 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordAlias", - "group": null, + "method": "getQueueWebhooks", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/create-record-alias.md", + "demo": "health\/get-queue-webhooks.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "threshold", + "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "default": 5000 }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name.", - "x-example": null - }, - "value": { - "type": "string", - "description": "Target domain for this ALIAS record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "in": "query" } - } + ] } }, - "\/domains\/{domainId}\/records\/alias\/{recordId}": { - "put": { - "summary": "Update an existing ALIAS record for the given domain.", - "operationId": "domainsUpdateRecordAlias", + "\/health\/storage": { + "get": { + "summary": "Get storage", + "operationId": "healthGetStorage", "tags": [ - "domains" + "health" ], - "description": "Update an existing ALIAS record for the specified domain. This endpoint allows you to modify\nthe properties of an existing ALIAS record including its name, target domain, TTL, and comment.\n \nThe ALIAS record type is similar to a CNAME record but can be used at the zone apex (root domain).\nIt provides a way to map one domain name to another.", + "description": "Check the Appwrite storage device is up and connection is successful.", "responses": { "200": { - "description": "DNSRecord", + "description": "Health Status", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/healthStatus" } } } @@ -29027,106 +33027,49 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordAlias", - "group": null, + "method": "getStorage", + "group": "storage", "cookies": false, "type": "", - "demo": "domains\/update-record-alias.md", + "demo": "health\/get-storage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name.", - "x-example": null - }, - "value": { - "type": "string", - "description": "Target domain for this ALIAS record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "Project": [], + "Key": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/caa": { - "post": { - "summary": "Create a new CAA record for the given domain.", - "operationId": "domainsCreateRecordCAA", + "\/health\/storage\/local": { + "get": { + "summary": "Get local storage", + "operationId": "healthGetStorageLocal", "tags": [ - "domains" + "health" ], - "description": "Create a new CAA record for the given domain. CAA records are used to specify which \nCertificate Authorities (CAs) are allowed to issue SSL\/TLS certificates for your domain.", + "description": "Check the Appwrite local storage device is up and connection is successful.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Health Status", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/healthStatus" } } } @@ -29134,96 +33077,49 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordCAA", - "group": null, + "method": "getStorageLocal", + "group": "storage", "cookies": false, "type": "", - "demo": "domains\/create-record-caa.md", + "demo": "health\/get-storage-local.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name.", - "x-example": null - }, - "value": { - "type": "string", - "description": "CAA value (e.g. issuer domain).", - "x-example": null - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "Project": [], + "Key": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/caa\/{recordId}": { - "put": { - "summary": "Update an existing CAA record for the given domain.", - "operationId": "domainsUpdateRecordCAA", + "\/health\/time": { + "get": { + "summary": "Get time", + "operationId": "healthGetTime", "tags": [ - "domains" + "health" ], - "description": "Update an existing CAA record for the given domain. A CAA (Certification Authority Authorization) \nrecord is used to specify which certificate authorities (CAs) are authorized to issue certificates \nfor a domain.", + "description": "Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.", "responses": { "200": { - "description": "DNSRecord", + "description": "Health Time", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/healthTime" } } } @@ -29231,106 +33127,49 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordCAA", - "group": null, + "method": "getTime", + "group": "health", "cookies": false, "type": "", - "demo": "domains\/update-record-caa.md", + "demo": "health\/get-time.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "health.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name.", - "x-example": null - }, - "value": { - "type": "string", - "description": "CAA value (e.g. issuer domain).", - "x-example": null - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "Project": [], + "Key": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/cname": { - "post": { - "summary": "Create a new CNAME record for the given domain.", - "operationId": "domainsCreateRecordCNAME", + "\/locale": { + "get": { + "summary": "Get user locale", + "operationId": "localeGet", "tags": [ - "domains" + "locale" ], - "description": "Create a new CNAME record for the given domain.\n \nA CNAME record maps a subdomain to another domain name, allowing you to create aliases \nfor your domain. For example, you can create a CNAME record to point 'blog.example.com' \nto 'example.wordpress.com'.", + "description": "Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Locale", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/locale" } } } @@ -29338,96 +33177,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordCNAME", + "method": "get", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-cname.md", + "demo": "locale\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "locale.read", "platforms": [ - "console" + "console", + "client", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "Canonical target for this CNAME record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/cname\/{recordId}": { - "put": { - "summary": "Update an existing CNAME record for the given domain.", - "operationId": "domainsUpdateRecordCNAME", + "\/locale\/codes": { + "get": { + "summary": "List locale codes", + "operationId": "localeListCodes", "tags": [ - "domains" + "locale" ], - "description": "Update an existing CNAME record for the given domain.", + "description": "List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).", "responses": { "200": { - "description": "DNSRecord", + "description": "Locale codes list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/localeCodeList" } } } @@ -29435,106 +33230,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordCNAME", + "method": "listCodes", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-record-cname.md", + "demo": "locale\/list-codes.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "locale.read", "platforms": [ - "console" + "console", + "client", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "Canonical target for this CNAME record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/https": { - "post": { - "summary": "Create a new HTTPS record for the given domain.", - "operationId": "domainsCreateRecordHTTPS", + "\/locale\/continents": { + "get": { + "summary": "List continents", + "operationId": "localeListContinents", "tags": [ - "domains" + "locale" ], - "description": "Create a new HTTPS record for the given domain. This record is used to configure HTTPS \nsettings for your domain, enabling secure communication over SSL\/TLS.", + "description": "List of all continents. You can use the locale header to get the data in a supported language.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Continents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/continentList" } } } @@ -29542,96 +33283,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordHTTPS", + "method": "listContinents", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-https.md", + "demo": "locale\/list-continents.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "locale.read", "platforms": [ - "console" + "console", + "client", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md", "auth": { "Project": [] } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "Target for the HTTPS record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/https\/{recordId}": { - "put": { - "summary": "Update an existing HTTPS record for the given domain.", - "operationId": "domainsUpdateRecordHTTPS", + "\/locale\/countries": { + "get": { + "summary": "List countries", + "operationId": "localeListCountries", "tags": [ - "domains" + "locale" ], - "description": "Update an existing HTTPS record for the given domain. This endpoint allows you to modify \nthe properties of an HTTPS record associated with your domain, including the name (subdomain), \ntarget value, TTL, and optional comment.", + "description": "List of all countries. You can use the locale header to get the data in a supported language.", "responses": { "200": { - "description": "DNSRecord", + "description": "Countries List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/countryList" } } } @@ -29639,106 +33336,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordHTTPS", + "method": "listCountries", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-record-https.md", + "demo": "locale\/list-countries.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "locale.read", "platforms": [ - "console" + "console", + "client", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "Target for the HTTPS record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/mx": { - "post": { - "summary": "Create a new MX record for the given domain.", - "operationId": "domainsCreateRecordMX", + "\/locale\/countries\/eu": { + "get": { + "summary": "List EU countries", + "operationId": "localeListCountriesEU", "tags": [ - "domains" + "locale" ], - "description": "Create a new MX record for the given domain. MX records are used to define the mail servers responsible \nfor accepting email messages for the domain. Multiple MX records can be created with different priorities.\nThe priority parameter determines the order in which mail servers are used, with lower values indicating \nhigher priority.", + "description": "List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Countries List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/countryList" } } } @@ -29746,103 +33389,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordMX", + "method": "listCountriesEU", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-mx.md", + "demo": "locale\/list-countries-eu.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "locale.read", "platforms": [ - "console" + "console", + "client", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "Mail server domain for this MX record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "priority": { - "type": "integer", - "description": "MX priority.", - "x-example": null, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl", - "priority" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/mx\/{recordId}": { - "put": { - "summary": "Update an existing MX record for the given domain.", - "operationId": "domainsUpdateRecordMX", + "\/locale\/countries\/phones": { + "get": { + "summary": "List countries phone codes", + "operationId": "localeListCountriesPhones", "tags": [ - "domains" + "locale" ], - "description": "Update an existing MX record for the given domain.", + "description": "List of all countries phone codes. You can use the locale header to get the data in a supported language.", "responses": { "200": { - "description": "DNSRecord", + "description": "Phones List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/phoneList" } } } @@ -29850,113 +33442,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordMX", + "method": "listCountriesPhones", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-record-mx.md", + "demo": "locale\/list-countries-phones.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "locale.read", "platforms": [ - "console" + "console", + "client", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "Mail server domain for this MX record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "priority": { - "type": "integer", - "description": "MX priority.", - "x-example": null, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl", - "priority" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/ns": { - "post": { - "summary": "Create a new NS record for the given domain.", - "operationId": "domainsCreateRecordNS", + "\/locale\/currencies": { + "get": { + "summary": "List currencies", + "operationId": "localeListCurrencies", "tags": [ - "domains" + "locale" ], - "description": "Create a new NS record for the given domain. NS records specify the nameservers that are used \nto resolve the domain name to IP addresses. Each domain can have multiple NS records.", + "description": "List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Currencies List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/currencyList" } } } @@ -29964,96 +33495,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordNS", + "method": "listCurrencies", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-ns.md", + "demo": "locale\/list-currencies.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "locale.read", "platforms": [ - "console" + "console", + "client", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null - }, - "value": { - "type": "string", - "description": "Nameserver target for this NS record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/ns\/{recordId}": { - "put": { - "summary": "Update an existing NS record for the given domain.", - "operationId": "domainsUpdateRecordNS", + "\/locale\/languages": { + "get": { + "summary": "List languages", + "operationId": "localeListLanguages", "tags": [ - "domains" + "locale" ], - "description": "Update an existing NS record for the given domain. This endpoint allows you to modify \nthe properties of an NS (nameserver) record associated with your domain. You can update \nthe record name (subdomain), target nameserver value, TTL, and add or modify comments \nfor better record management.", + "description": "List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.", "responses": { "200": { - "description": "DNSRecord", + "description": "Languages List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/languageList" } } } @@ -30061,106 +33548,171 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordNS", + "method": "listLanguages", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-record-ns.md", + "demo": "locale\/list-languages.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "locale.read", "platforms": [ - "console" + "console", + "client", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } + ] + } + }, + "\/manager\/blocks": { + "post": { + "summary": "Create a new resource block for a project", + "operationId": "managerCreateBlock", + "tags": [ + "manager" ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "description": "Creates a new resource block.", + "responses": { + "201": { + "description": "Block", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/block" + } + } + } } - ], + }, + "deprecated": false, + "x-appwrite": { + "method": "createBlock", + "group": null, + "cookies": false, + "type": "", + "demo": "manager\/create-block.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "", + "platforms": [ + "console" + ], + "packaging": false, + "public": true + }, "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "name": { + "projectId": { "type": "string", - "description": "Record name (subdomain).", - "x-example": null + "description": "Project ID", + "x-example": "" + }, + "resourceType": { + "type": "string", + "description": "Resource type to block (e.g., projects, functions, databases, storage, etc.)", + "x-example": "projects", + "enum": [ + "projects", + "functions", + "sites", + "databases", + "buckets", + "providers", + "topics", + "subscribers", + "messages" + ], + "x-enum-name": "BlockResourceType", + "x-enum-keys": [ + "projects", + "functions", + "sites", + "databases", + "buckets", + "providers", + "topics", + "subscribers", + "messages" + ] + }, + "resourceId": { + "type": "string", + "description": "Optional resource ID (if omitted, all resources of this type will be blocked)", + "default": "", + "x-example": "" }, - "value": { + "mode": { "type": "string", - "description": "Nameserver target for this NS record.", - "x-example": "" + "description": "Block mode. Use full to block reads and writes, or readOnly to block database writes only.", + "default": "full", + "x-example": "full", + "enum": [ + "full", + "readonly" + ], + "x-enum-name": "BlockMode", + "x-enum-keys": [ + "full", + "readonly" + ] }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" + "reason": { + "type": "string", + "description": "Optional reason why the resource is blocked", + "default": "", + "x-example": "" }, - "comment": { + "expiredAt": { "type": "string", - "description": "A comment for this record.", + "description": "Optional expiration date for the block", "default": "", - "x-example": "" + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime" } }, "required": [ - "name", - "value", - "ttl" + "projectId", + "resourceType" ] } } } } - } - }, - "\/domains\/{domainId}\/records\/srv": { - "post": { - "summary": "Create a new SRV record for the given domain.", - "operationId": "domainsCreateRecordSRV", + }, + "delete": { + "summary": "Delete resource blocks for a project", + "operationId": "managerDeleteBlock", "tags": [ - "domains" + "manager" ], - "description": "Create a new SRV record for the given domain. SRV records are used to define the location \nof servers for specific services. For example, they can be used to specify which server \nhandles a specific service like SIP or XMPP for the domain.", + "description": "Deletes resource blocks for a project.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "BlockDelete", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/blockDelete" } } } @@ -30168,117 +33720,94 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordSRV", + "method": "deleteBlock", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-srv.md", + "demo": "manager\/delete-block.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "", "platforms": [ "console" ], "packaging": false, - "public": true, - "auth": { - "Project": [] - } + "public": true }, - "security": [ - { - "Project": [] - } - ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", + "name": "projectId", + "description": "Project ID", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (service name).", - "x-example": null - }, - "value": { - "type": "string", - "description": "Target hostname for this SRV record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "priority": { - "type": "integer", - "description": "Record priority.", - "x-example": null, - "format": "int32" - }, - "weight": { - "type": "integer", - "description": "Record weight.", - "x-example": null, - "format": "int32" - }, - "port": { - "type": "integer", - "description": "Port number for the service.", - "x-example": null, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl", - "priority", - "weight", - "port" - ] - } - } + "in": "query" + }, + { + "name": "resourceType", + "description": "Resource type to unblock", + "required": true, + "schema": { + "type": "string", + "x-example": "projects", + "enum": [ + "projects", + "functions", + "sites", + "databases", + "buckets", + "providers", + "topics", + "subscribers", + "messages" + ], + "x-enum-name": "BlockResourceType", + "x-enum-keys": [ + "projects", + "functions", + "sites", + "databases", + "buckets", + "providers", + "topics", + "subscribers", + "messages" + ] + }, + "in": "query" + }, + { + "name": "resourceId", + "description": "Optional resource ID (if omitted, all blocks of this type will be removed)", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "in": "query" } - } + ] } }, - "\/domains\/{domainId}\/records\/srv\/{recordId}": { - "put": { - "summary": "Update an existing SRV record for the given domain.", - "operationId": "domainsUpdateRecordSRV", + "\/manager\/blocks\/{projectId}": { + "get": { + "summary": "List all resource blocks for a project", + "operationId": "managerListBlocks", "tags": [ - "domains" + "manager" ], - "description": "Update an existing SRV record for the given domain.\n \nRequired parameters:\n- domainId: Domain unique ID\n- recordId: DNS record unique ID\n- name: Record name (service name)\n- value: Target hostname for this SRV record\n- ttl: Time to live, in seconds\n- priority: Record priority\n- weight: Record weight\n- port: Port number for the service\n \nOptional parameters:\n- comment: A comment for this record", + "description": "Lists all resource blocks for a project.", "responses": { "200": { - "description": "DNSRecord", + "description": "Blocks list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/blockList" } } } @@ -30286,127 +33815,51 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordSRV", + "method": "listBlocks", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-record-srv.md", + "demo": "manager\/list-blocks.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "", "platforms": [ "console" ], "packaging": false, - "public": true, - "auth": { - "Project": [] - } + "public": true }, - "security": [ - { - "Project": [] - } - ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", + "name": "projectId", + "description": "Project ID", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (service name).", - "x-example": null - }, - "value": { - "type": "string", - "description": "Target hostname for this SRV record.", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "priority": { - "type": "integer", - "description": "Record priority.", - "x-example": null, - "format": "int32" - }, - "weight": { - "type": "integer", - "description": "Record weight.", - "x-example": null, - "format": "int32" - }, - "port": { - "type": "integer", - "description": "Port number for the service.", - "x-example": null, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "value", - "ttl", - "priority", - "weight", - "port" - ] - } - } - } - } + ] } }, - "\/domains\/{domainId}\/records\/txt": { - "post": { - "summary": "Create a new TXT record for the given domain.", - "operationId": "domainsCreateRecordTXT", + "\/manager\/cache": { + "delete": { + "summary": "Clear internal cache", + "operationId": "managerDeleteCache", "tags": [ - "domains" + "manager" ], - "description": "Create a new TXT record for the given domain. TXT records can be used \nto provide additional information about your domain, such as domain \nverification records, SPF records, or DKIM records.", + "description": "Clears internal cache.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "File", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "type": "string", + "format": "binary" } } } @@ -30414,96 +33867,161 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordTXT", - "group": null, + "method": "deleteCache", + "group": "cache", "cookies": false, "type": "", - "demo": "domains\/create-record-txt.md", + "demo": "manager\/delete-cache.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "", "platforms": [ "console" ], "packaging": false, - "public": true, - "auth": { - "Project": [] - } + "public": true }, - "security": [ - { - "Project": [] - } - ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "region", + "description": "Target region.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "fra", + "enum": [ + "fra", + "nyc", + "syd", + "sfo", + "sgp", + "tor" + ], + "x-enum-name": "Region", + "x-enum-keys": [ + "fra", + "nyc", + "syd", + "sfo", + "sgp", + "tor" + ] }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain) for the TXT record.", - "x-example": null - }, - "value": { - "type": "string", - "description": "TXT record value.", - "default": "", - "x-example": "" - }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" - }, - "comment": { - "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" - } - }, - "required": [ - "name", - "ttl" - ] - } - } + "in": "query" + }, + { + "name": "cache", + "description": "Cache target.", + "required": false, + "schema": { + "type": "string", + "x-example": "cache", + "enum": [ + "cache", + "timelimit", + "locks", + "pubsub", + "queue", + "all" + ], + "x-enum-name": "CacheTarget", + "x-enum-keys": [ + "cache", + "timelimit", + "locks", + "pubsub", + "queue", + "all" + ], + "default": "cache" + }, + "in": "query" + }, + { + "name": "all", + "description": "Clear the entire selected cache target.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": false + }, + "in": "query" + }, + { + "name": "database", + "description": "Database cache scope.", + "required": false, + "schema": { + "type": "string", + "x-example": "console", + "enum": [ + "console", + "project", + "logs" + ], + "x-enum-name": "CacheDatabase", + "x-enum-keys": [ + "console", + "project", + "logs" + ], + "default": "console" + }, + "in": "query" + }, + { + "name": "projectId", + "description": "Project ID for project or logs database cache.", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "in": "query" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "in": "query" + }, + { + "name": "documentId", + "description": "Document ID.", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "in": "query" } - } + ] } }, - "\/domains\/{domainId}\/records\/txt\/{recordId}": { - "put": { - "summary": "Update an existing TXT record for the given domain.", - "operationId": "domainsUpdateRecordTXT", + "\/manager\/users\/status": { + "patch": { + "summary": "Update a user status by ID or email", + "operationId": "managerUpdateUserStatus", "tags": [ - "domains" + "manager" ], - "description": "Update an existing TXT record for the given domain.\n \nUpdate the TXT record details for a specific domain by providing the domain ID,\nrecord ID, and the new record configuration including name, value, TTL, and an optional comment.", + "description": "Updates a console user status using a user ID or email address.", "responses": { "200": { - "description": "DNSRecord", + "description": "User", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/user" } } } @@ -30511,84 +34029,53 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordTXT", - "group": null, + "method": "updateUserStatus", + "group": "users", "cookies": false, "type": "", - "demo": "domains\/update-record-txt.md", + "demo": "manager\/update-user-status.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "", "platforms": [ "console" ], "packaging": false, - "public": true, - "auth": { - "Project": [] - } + "public": true }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "name": { + "userId": { "type": "string", - "description": "Record name (subdomain) for the TXT record.", - "x-example": null + "description": "User ID.", + "default": "", + "x-example": "" }, - "value": { + "email": { "type": "string", - "description": "TXT record value.", - "x-example": "" + "description": "User email address.", + "default": "", + "x-example": "" }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" + "status": { + "type": "boolean", + "description": "User status. Set to `false` to block and `true` to unblock.", + "x-example": false }, - "comment": { + "reason": { "type": "string", - "description": "A comment for this record.", + "description": "Optional reason when blocking a user. Accepted for parity with the CLI task but not persisted.", "default": "", - "x-example": "" + "x-example": "" } }, "required": [ - "name", - "value", - "ttl" + "status" ] } } @@ -30596,21 +34083,21 @@ } } }, - "\/domains\/{domainId}\/records\/{recordId}": { + "\/messaging\/messages": { "get": { - "summary": "Get a single DNS record for a given domain by record ID.", - "operationId": "domainsGetRecord", + "summary": "List messages", + "operationId": "messagingListMessages", "tags": [ - "domains" + "messaging" ], - "description": "Get a single DNS record for a given domain by record ID.\n \nThis endpoint allows you to retrieve a specific DNS record associated with a domain\nusing its unique identifier. The record contains information about the DNS configuration\nsuch as type, value, and TTL settings.", + "description": "Get a list of all messages from the current Appwrite project.", "responses": { "200": { - "description": "DNSRecord", + "description": "Message list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/messageList" } } } @@ -30618,131 +34105,86 @@ }, "deprecated": false, "x-appwrite": { - "method": "getRecord", - "group": null, + "method": "listMessages", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/get-record.md", + "demo": "messaging\/list-messages.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "messages.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" + "in": "query" }, { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ] - }, - "delete": { - "summary": "Delete a DNS record for the given domain.", - "operationId": "domainsDeleteRecord", - "tags": [ - "domains" - ], - "description": "Delete a DNS record for the given domain. This endpoint allows you to delete an existing DNS record \nfrom a specific domain.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteRecord", - "group": null, - "cookies": false, - "type": "", - "demo": "domains\/delete-record.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "produces": [ - "application\/json" - ], - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "" }, - "in": "path" + "in": "query" }, { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "boolean", + "x-example": false, + "default": true }, - "in": "path" + "in": "query" } ] } }, - "\/domains\/{domainId}\/team": { - "patch": { - "summary": "Update domain team.", - "operationId": "domainsUpdateTeam", + "\/messaging\/messages\/email": { + "post": { + "summary": "Create email", + "operationId": "messagingCreateEmail", "tags": [ - "domains" + "messaging" ], - "description": "Update the team ID for a specific domain. This endpoint requires admin access.\n \nUpdating the team ID will transfer ownership and access control of the domain\nand all its DNS records to the new team.", + "description": "Create a new email message.", "responses": { - "200": { - "description": "Domain", + "201": { + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/message" } } } @@ -30750,39 +34192,30 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTeam", - "group": null, + "method": "createEmail", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/update-team.md", + "demo": "messaging\/create-email.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "messages.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "Project": [], + "Key": [] } ], "requestBody": { @@ -30791,14 +34224,102 @@ "schema": { "type": "object", "properties": { - "teamId": { + "messageId": { "type": "string", - "description": "New team unique ID.", - "x-example": "" + "description": "Message 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.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "subject": { + "type": "string", + "description": "Email Subject.", + "x-example": "" + }, + "content": { + "type": "string", + "description": "Email Content.", + "x-example": "" + }, + "topics": { + "type": "array", + "description": "List of Topic IDs.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "description": "List of User IDs.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "targets": { + "type": "array", + "description": "List of Targets IDs.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "cc": { + "type": "array", + "description": "Array of target IDs to be added as CC.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "bcc": { + "type": "array", + "description": "Array of target IDs to be added as BCC.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "attachments": { + "type": "array", + "description": "Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as :.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "draft": { + "type": "boolean", + "description": "Is message a draft", + "default": false, + "x-example": false + }, + "html": { + "type": "boolean", + "description": "Is content of type HTML", + "default": false, + "x-example": false + }, + "scheduledAt": { + "type": "string", + "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true } }, "required": [ - "teamId" + "messageId", + "subject", + "content" ] } } @@ -30806,21 +34327,21 @@ } } }, - "\/domains\/{domainId}\/transfers\/status": { - "get": { - "summary": "Get domain transfer status.", - "operationId": "domainsGetTransferStatus", + "\/messaging\/messages\/email\/{messageId}": { + "patch": { + "summary": "Update email", + "operationId": "messagingUpdateEmail", "tags": [ - "domains" + "messaging" ], - "description": "Retrieve the current transfer status for a domain. Returns the status, an optional reason, and a timestamp of the last status change.", + "description": "Update an email message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", "responses": { "200": { - "description": "domainTransferStatus", + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainTransferStatus" + "$ref": "#\/components\/schemas\/message" } } } @@ -30828,115 +34349,157 @@ }, "deprecated": false, "x-appwrite": { - "method": "getTransferStatus", - "group": null, + "method": "updateEmail", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/get-transfer-status.md", + "demo": "messaging\/update-email.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "messages.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", + "name": "messageId", + "description": "Message ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } - ] - } - }, - "\/domains\/{domainId}\/zone": { - "get": { - "summary": "Retrieve the DNS zone file for the given domain.", - "operationId": "domainsGetZone", - "tags": [ - "domains" - ], - "description": "Retrieve the DNS zone file for the given domain. This endpoint will return the DNS\nzone file in a standardized format that can be used to configure DNS servers.", - "responses": { - "200": { - "description": "Text", - "content": { - "text\/plain": { - "schema": { - "type": "string" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "getZone", - "group": null, - "cookies": false, - "type": "", - "demo": "domains\/get-zone.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "topics": { + "type": "array", + "description": "List of Topic IDs.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "users": { + "type": "array", + "description": "List of User IDs.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "targets": { + "type": "array", + "description": "List of Targets IDs.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "subject": { + "type": "string", + "description": "Email Subject.", + "x-example": "", + "x-nullable": true + }, + "content": { + "type": "string", + "description": "Email Content.", + "x-example": "", + "x-nullable": true + }, + "draft": { + "type": "boolean", + "description": "Is message a draft", + "x-example": false, + "x-nullable": true + }, + "html": { + "type": "boolean", + "description": "Is content of type HTML", + "x-example": false, + "x-nullable": true + }, + "cc": { + "type": "array", + "description": "Array of target IDs to be added as CC.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "bcc": { + "type": "array", + "description": "Array of target IDs to be added as BCC.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "scheduledAt": { + "type": "string", + "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true + }, + "attachments": { + "type": "array", + "description": "Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as :.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + } + } + } + } } - ] - }, - "put": { - "summary": "Update the DNS zone for the given domain using the provided zone file content. All parsed records are imported and then the main domain document is returned.", - "operationId": "domainsUpdateZone", + } + } + }, + "\/messaging\/messages\/push": { + "post": { + "summary": "Create push notification", + "operationId": "messagingCreatePush", "tags": [ - "domains" + "messaging" ], - "description": "Update the DNS zone for the given domain using the provided zone file content.\nAll parsed records are imported and then the main domain document is returned.", + "description": "Create a new push notification.", "responses": { "201": { - "description": "Domain", + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/message" } } } @@ -30944,39 +34507,30 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateZone", - "group": null, + "method": "createPush", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/update-zone.md", + "demo": "messaging\/create-push.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "messages.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "Project": [], + "Key": [] } ], "requestBody": { @@ -30985,14 +34539,146 @@ "schema": { "type": "object", "properties": { - "content": { + "messageId": { "type": "string", - "description": "DNS zone file content as a string.", - "x-example": "" + "description": "Message 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.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "title": { + "type": "string", + "description": "Title for push notification.", + "default": "", + "x-example": "" + }, + "body": { + "type": "string", + "description": "Body for push notification.", + "default": "", + "x-example": "<BODY>" + }, + "topics": { + "type": "array", + "description": "List of Topic IDs.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "description": "List of User IDs.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "targets": { + "type": "array", + "description": "List of Targets IDs.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "data": { + "type": "object", + "description": "Additional key-value pair data for push notification.", + "default": {}, + "x-example": "{}", + "x-nullable": true + }, + "action": { + "type": "string", + "description": "Action for push notification.", + "default": "", + "x-example": "<ACTION>" + }, + "image": { + "type": "string", + "description": "Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as <BUCKET_ID>:<FILE_ID>.", + "default": "", + "x-example": "<ID1:ID2>" + }, + "icon": { + "type": "string", + "description": "Icon for push notification. Available only for Android and Web Platform.", + "default": "", + "x-example": "<ICON>" + }, + "sound": { + "type": "string", + "description": "Sound for push notification. Available only for Android and iOS Platform.", + "default": "", + "x-example": "<SOUND>" + }, + "color": { + "type": "string", + "description": "Color for push notification. Available only for Android Platform.", + "default": "", + "x-example": "<COLOR>" + }, + "tag": { + "type": "string", + "description": "Tag for push notification. Available only for Android Platform.", + "default": "", + "x-example": "<TAG>" + }, + "badge": { + "type": "integer", + "description": "Badge for push notification. Available only for iOS Platform.", + "default": -1, + "x-example": null, + "format": "int32" + }, + "draft": { + "type": "boolean", + "description": "Is message a draft", + "default": false, + "x-example": false + }, + "scheduledAt": { + "type": "string", + "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true + }, + "contentAvailable": { + "type": "boolean", + "description": "If set to true, the notification will be delivered in the background. Available only for iOS Platform.", + "default": false, + "x-example": false + }, + "critical": { + "type": "boolean", + "description": "If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform.", + "default": false, + "x-example": false + }, + "priority": { + "type": "string", + "description": "Set the notification priority. \"normal\" will consider device state and may not deliver notifications immediately. \"high\" will always attempt to immediately deliver the notification.", + "default": "high", + "x-example": "normal", + "enum": [ + "normal", + "high" + ], + "x-enum-name": "MessagePriority", + "x-enum-keys": [ + "normal", + "high" + ] } }, "required": [ - "content" + "messageId" ] } } @@ -31000,21 +34686,21 @@ } } }, - "\/functions": { - "get": { - "summary": "List functions", - "operationId": "functionsList", + "\/messaging\/messages\/push\/{messageId}": { + "patch": { + "summary": "Update push notification", + "operationId": "messagingUpdatePush", "tags": [ - "functions" + "messaging" ], - "description": "Get a list of all the project's functions. You can use the query params to filter your results.", + "description": "Update a push notification by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", "responses": { "200": { - "description": "Functions List", + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/functionList" + "$ref": "#\/components\/schemas\/message" } } } @@ -31022,21 +34708,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "list", - "group": "functions", + "method": "updatePush", + "group": "messages", "cookies": false, "type": "", - "demo": "functions\/list.md", + "demo": "messaging\/update-push.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "messages.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push.md", "auth": { "Project": [] } @@ -31049,640 +34736,339 @@ ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deploymentId, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, + "name": "messageId", + "description": "Message ID.", + "required": true, "schema": { "type": "string", - "x-example": "<SEARCH>", - "default": "" - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true + "x-example": "<MESSAGE_ID>" }, - "in": "query" - } - ] - }, - "post": { - "summary": "Create function", - "operationId": "functionsCreate", - "tags": [ - "functions" - ], - "description": "Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.", - "responses": { - "201": { - "description": "Function", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/function" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "create", - "group": "functions", - "cookies": false, - "type": "", - "demo": "functions\/create.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] + "in": "path" } ], "requestBody": { "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "functionId": { - "type": "string", - "description": "Function 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.", - "x-example": "<FUNCTION_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Function name. Max length: 128 chars.", - "x-example": "<NAME>" - }, - "runtime": { - "type": "string", - "description": "Execution runtime.", - "x-example": "node-14.5", - "enum": [ - "node-14.5", - "node-16.0", - "node-18.0", - "node-19.0", - "node-20.0", - "node-21.0", - "node-22", - "node-23", - "node-24", - "node-25", - "php-8.0", - "php-8.1", - "php-8.2", - "php-8.3", - "php-8.4", - "ruby-3.0", - "ruby-3.1", - "ruby-3.2", - "ruby-3.3", - "ruby-3.4", - "ruby-4.0", - "python-3.8", - "python-3.9", - "python-3.10", - "python-3.11", - "python-3.12", - "python-3.13", - "python-3.14", - "python-ml-3.11", - "python-ml-3.12", - "python-ml-3.13", - "deno-1.21", - "deno-1.24", - "deno-1.35", - "deno-1.40", - "deno-1.46", - "deno-2.0", - "deno-2.5", - "deno-2.6", - "dart-2.15", - "dart-2.16", - "dart-2.17", - "dart-2.18", - "dart-2.19", - "dart-3.0", - "dart-3.1", - "dart-3.3", - "dart-3.5", - "dart-3.8", - "dart-3.9", - "dart-3.10", - "dart-3.11", - "dart-3.12", - "dotnet-6.0", - "dotnet-7.0", - "dotnet-8.0", - "dotnet-10", - "java-8.0", - "java-11.0", - "java-17.0", - "java-18.0", - "java-21.0", - "java-22", - "java-25", - "swift-5.5", - "swift-5.8", - "swift-5.9", - "swift-5.10", - "swift-6.2", - "kotlin-1.6", - "kotlin-1.8", - "kotlin-1.9", - "kotlin-2.0", - "kotlin-2.3", - "cpp-17", - "cpp-20", - "bun-1.0", - "bun-1.1", - "bun-1.2", - "bun-1.3", - "go-1.23", - "go-1.24", - "go-1.25", - "go-1.26", - "rust-1.83", - "static-1", - "flutter-3.24", - "flutter-3.27", - "flutter-3.29", - "flutter-3.32", - "flutter-3.35", - "flutter-3.38", - "flutter-3.41", - "flutter-3.44" - ], - "x-enum-name": "Runtime", - "x-enum-keys": [ - "node-14.5", - "node-16.0", - "node-18.0", - "node-19.0", - "node-20.0", - "node-21.0", - "node-22", - "node-23", - "node-24", - "node-25", - "php-8.0", - "php-8.1", - "php-8.2", - "php-8.3", - "php-8.4", - "ruby-3.0", - "ruby-3.1", - "ruby-3.2", - "ruby-3.3", - "ruby-3.4", - "ruby-4.0", - "python-3.8", - "python-3.9", - "python-3.10", - "python-3.11", - "python-3.12", - "python-3.13", - "python-3.14", - "python-ml-3.11", - "python-ml-3.12", - "python-ml-3.13", - "deno-1.21", - "deno-1.24", - "deno-1.35", - "deno-1.40", - "deno-1.46", - "deno-2.0", - "deno-2.5", - "deno-2.6", - "dart-2.15", - "dart-2.16", - "dart-2.17", - "dart-2.18", - "dart-2.19", - "dart-3.0", - "dart-3.1", - "dart-3.3", - "dart-3.5", - "dart-3.8", - "dart-3.9", - "dart-3.10", - "dart-3.11", - "dart-3.12", - "dotnet-6.0", - "dotnet-7.0", - "dotnet-8.0", - "dotnet-10", - "java-8.0", - "java-11.0", - "java-17.0", - "java-18.0", - "java-21.0", - "java-22", - "java-25", - "swift-5.5", - "swift-5.8", - "swift-5.9", - "swift-5.10", - "swift-6.2", - "kotlin-1.6", - "kotlin-1.8", - "kotlin-1.9", - "kotlin-2.0", - "kotlin-2.3", - "cpp-17", - "cpp-20", - "bun-1.0", - "bun-1.1", - "bun-1.2", - "bun-1.3", - "go-1.23", - "go-1.24", - "go-1.25", - "go-1.26", - "rust-1.83", - "static-1", - "flutter-3.24", - "flutter-3.27", - "flutter-3.29", - "flutter-3.32", - "flutter-3.35", - "flutter-3.38", - "flutter-3.41", - "flutter-3.44" - ] + "application\/json": { + "schema": { + "type": "object", + "properties": { + "topics": { + "type": "array", + "description": "List of Topic IDs.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true }, - "execute": { + "users": { "type": "array", - "description": "An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", - "default": [], - "x-example": "[\"any\"]", + "description": "List of User IDs.", + "x-example": null, "items": { "type": "string" - } + }, + "x-nullable": true }, - "events": { + "targets": { "type": "array", - "description": "Events list. Maximum of 100 events are allowed.", - "default": [], + "description": "List of Targets IDs.", "x-example": null, "items": { "type": "string" - } + }, + "x-nullable": true }, - "schedule": { + "title": { "type": "string", - "description": "Schedule CRON syntax.", - "default": "", - "x-example": null + "description": "Title for push notification.", + "x-example": "<TITLE>", + "x-nullable": true }, - "timeout": { - "type": "integer", - "description": "Function maximum execution time in seconds.", - "default": 15, - "x-example": 1, - "format": "int32" + "body": { + "type": "string", + "description": "Body for push notification.", + "x-example": "<BODY>", + "x-nullable": true }, - "enabled": { - "type": "boolean", - "description": "Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.", - "default": true, - "x-example": false + "data": { + "type": "object", + "description": "Additional Data for push notification.", + "default": {}, + "x-example": "{}", + "x-nullable": true }, - "logging": { - "type": "boolean", - "description": "When disabled, executions will exclude logs and errors, and will be slightly faster.", - "default": true, - "x-example": false + "action": { + "type": "string", + "description": "Action for push notification.", + "x-example": "<ACTION>", + "x-nullable": true }, - "entrypoint": { + "image": { "type": "string", - "description": "Entrypoint File. This path is relative to the \"providerRootDirectory\".", - "default": "", - "x-example": "<ENTRYPOINT>" + "description": "Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as <BUCKET_ID>:<FILE_ID>.", + "x-example": "<ID1:ID2>", + "x-nullable": true }, - "commands": { + "icon": { "type": "string", - "description": "Build Commands.", - "default": "", - "x-example": "<COMMANDS>" + "description": "Icon for push notification. Available only for Android and Web platforms.", + "x-example": "<ICON>", + "x-nullable": true }, - "scopes": { - "type": "array", - "description": "List of scopes allowed for API key auto-generated for every execution. Maximum of 100 scopes are allowed.", - "default": [], - "x-example": null, - "items": { - "type": "string", - "enum": [ - "project.read", - "project.write", - "keys.read", - "keys.write", - "platforms.read", - "platforms.write", - "mocks.read", - "mocks.write", - "policies.read", - "policies.write", - "project.policies.read", - "project.policies.write", - "templates.read", - "templates.write", - "oauth2.read", - "oauth2.write", - "users.read", - "users.write", - "sessions.read", - "sessions.write", - "teams.read", - "teams.write", - "databases.read", - "databases.write", - "tables.read", - "tables.write", - "columns.read", - "columns.write", - "indexes.read", - "indexes.write", - "rows.read", - "rows.write", - "collections.read", - "collections.write", - "attributes.read", - "attributes.write", - "documents.read", - "documents.write", - "buckets.read", - "buckets.write", - "files.read", - "files.write", - "tokens.read", - "tokens.write", - "functions.read", - "functions.write", - "executions.read", - "executions.write", - "execution.read", - "execution.write", - "sites.read", - "sites.write", - "log.read", - "log.write", - "providers.read", - "providers.write", - "topics.read", - "topics.write", - "subscribers.read", - "subscribers.write", - "targets.read", - "targets.write", - "messages.read", - "messages.write", - "rules.read", - "rules.write", - "webhooks.read", - "webhooks.write", - "locale.read", - "avatars.read", - "health.read", - "assistant.read", - "migrations.read", - "migrations.write", - "schedules.read", - "schedules.write", - "vcs.read", - "vcs.write", - "insights.read", - "insights.write", - "reports.read", - "reports.write", - "presences.read", - "presences.write", - "backups.policies.read", - "backups.policies.write", - "archives.read", - "archives.write", - "restorations.read", - "restorations.write", - "dedicatedDatabases.execute", - "domains.read", - "domains.write", - "events.read", - "apps.read", - "apps.write", - "usage.read" - ], - "x-enum-name": "ProjectKeyScopes", - "x-enum-keys": [ - "project.read", - "project.write", - "keys.read", - "keys.write", - "platforms.read", - "platforms.write", - "mocks.read", - "mocks.write", - "policies.read", - "policies.write", - "project.policies.read", - "project.policies.write", - "templates.read", - "templates.write", - "oauth2.read", - "oauth2.write", - "users.read", - "users.write", - "sessions.read", - "sessions.write", - "teams.read", - "teams.write", - "databases.read", - "databases.write", - "tables.read", - "tables.write", - "columns.read", - "columns.write", - "indexes.read", - "indexes.write", - "rows.read", - "rows.write", - "collections.read", - "collections.write", - "attributes.read", - "attributes.write", - "documents.read", - "documents.write", - "buckets.read", - "buckets.write", - "files.read", - "files.write", - "tokens.read", - "tokens.write", - "functions.read", - "functions.write", - "executions.read", - "executions.write", - "execution.read", - "execution.write", - "sites.read", - "sites.write", - "log.read", - "log.write", - "providers.read", - "providers.write", - "topics.read", - "topics.write", - "subscribers.read", - "subscribers.write", - "targets.read", - "targets.write", - "messages.read", - "messages.write", - "rules.read", - "rules.write", - "webhooks.read", - "webhooks.write", - "locale.read", - "avatars.read", - "health.read", - "assistant.read", - "migrations.read", - "migrations.write", - "schedules.read", - "schedules.write", - "vcs.read", - "vcs.write", - "insights.read", - "insights.write", - "reports.read", - "reports.write", - "presences.read", - "presences.write", - "backups.policies.read", - "backups.policies.write", - "archives.read", - "archives.write", - "restorations.read", - "restorations.write", - "dedicatedDatabases.execute", - "domains.read", - "domains.write", - "events.read", - "apps.read", - "apps.write", - "usage.read" - ] - } + "sound": { + "type": "string", + "description": "Sound for push notification. Available only for Android and iOS platforms.", + "x-example": "<SOUND>", + "x-nullable": true }, - "installationId": { + "color": { "type": "string", - "description": "Appwrite Installation ID for VCS (Version Control System) deployment.", - "default": "", - "x-example": "<INSTALLATION_ID>" + "description": "Color for push notification. Available only for Android platforms.", + "x-example": "<COLOR>", + "x-nullable": true }, - "providerRepositoryId": { + "tag": { "type": "string", - "description": "Repository ID of the repo linked to the function.", - "default": "", - "x-example": "<PROVIDER_REPOSITORY_ID>" + "description": "Tag for push notification. Available only for Android platforms.", + "x-example": "<TAG>", + "x-nullable": true }, - "providerBranch": { + "badge": { + "type": "integer", + "description": "Badge for push notification. Available only for iOS platforms.", + "x-example": null, + "format": "int32", + "x-nullable": true + }, + "draft": { + "type": "boolean", + "description": "Is message a draft", + "x-example": false, + "x-nullable": true + }, + "scheduledAt": { "type": "string", - "description": "Production branch for the repo linked to the function.", - "default": "", - "x-example": "<PROVIDER_BRANCH>" + "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true }, - "providerSilentMode": { + "contentAvailable": { "type": "boolean", - "description": "Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.", - "default": false, - "x-example": false + "description": "If set to true, the notification will be delivered in the background. Available only for iOS Platform.", + "x-example": false, + "x-nullable": true }, - "providerRootDirectory": { + "critical": { + "type": "boolean", + "description": "If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform.", + "x-example": false, + "x-nullable": true + }, + "priority": { "type": "string", - "description": "Path to function code in the linked repo.", - "default": "", - "x-example": "<PROVIDER_ROOT_DIRECTORY>" + "description": "Set the notification priority. \"normal\" will consider device battery state and may send notifications later. \"high\" will always attempt to immediately deliver the notification.", + "x-example": "normal", + "enum": [ + "normal", + "high" + ], + "x-enum-name": "MessagePriority", + "x-enum-keys": [ + "normal", + "high" + ], + "x-nullable": true + } + } + } + } + } + } + } + }, + "\/messaging\/messages\/sms": { + "post": { + "summary": "Create SMS", + "operationId": "messagingCreateSms", + "tags": [ + "messaging" + ], + "description": "Create a new SMS message.", + "responses": { + "201": { + "description": "Message", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/message" + } + } + } + } + }, + "deprecated": true, + "x-appwrite": { + "method": "createSms", + "group": "messages", + "cookies": false, + "type": "", + "demo": "messaging\/create-sms.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "messages.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": false, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.createSMS" + }, + "methods": [ + { + "name": "createSms", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "messageId", + "content", + "topics", + "users", + "targets", + "draft", + "scheduledAt" + ], + "required": [ + "messageId", + "content" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/message" + } + ], + "description": "Create a new SMS message.", + "demo": "messaging\/create-sms.md", + "public": false, + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.createSMS" + } + }, + { + "name": "createSMS", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "messageId", + "content", + "topics", + "users", + "targets", + "draft", + "scheduledAt" + ], + "required": [ + "messageId", + "content" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/message" + } + ], + "description": "Create a new SMS message.", + "demo": "messaging\/create-sms.md", + "public": true + } + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "messageId": { + "type": "string", + "description": "Message 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.", + "x-example": "<MESSAGE_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "content": { + "type": "string", + "description": "SMS Content.", + "x-example": "<CONTENT>" + }, + "topics": { + "type": "array", + "description": "List of Topic IDs.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } }, - "providerBranches": { + "users": { "type": "array", - "description": "List of branch name patterns to trigger automatic deployments. Supports wildcards. Leave empty to deploy on all branches.", + "description": "List of User IDs.", "default": [], "x-example": null, "items": { "type": "string" } }, - "providerPaths": { + "targets": { "type": "array", - "description": "List of file path patterns to trigger automatic deployments. Supports wildcards. Leave empty to deploy on all file changes.", + "description": "List of Targets IDs.", "default": [], "x-example": null, "items": { "type": "string" } }, - "buildSpecification": { - "type": "string", - "description": "Build specification for the function deployments.", - "default": {}, - "x-example": null + "draft": { + "type": "boolean", + "description": "Is message a draft", + "default": false, + "x-example": false }, - "runtimeSpecification": { + "scheduledAt": { "type": "string", - "description": "Runtime specification for the function executions.", - "default": {}, - "x-example": null - }, - "deploymentRetention": { - "type": "integer", - "description": "Days to keep non-active deployments before deletion. Value 0 means all deployments will be kept.", - "default": 0, - "x-example": 0, - "format": "int32" + "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true } }, "required": [ - "functionId", - "name", - "runtime" + "messageId", + "content" ] } } @@ -31690,43 +35076,112 @@ } } }, - "\/functions\/runtimes": { - "get": { - "summary": "List runtimes", - "operationId": "functionsListRuntimes", + "\/messaging\/messages\/sms\/{messageId}": { + "patch": { + "summary": "Update SMS", + "operationId": "messagingUpdateSms", "tags": [ - "functions" + "messaging" ], - "description": "Get a list of all runtimes that are currently active on your instance.", + "description": "Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", "responses": { "200": { - "description": "Runtimes List", + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/runtimeList" + "$ref": "#\/components\/schemas\/message" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listRuntimes", - "group": "runtimes", + "method": "updateSms", + "group": "messages", "cookies": false, "type": "", - "demo": "functions\/list-runtimes.md", + "demo": "messaging\/update-sms.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "messages.write", "platforms": [ "console", "server" ], "packaging": false, - "public": true, + "public": false, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sms.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.updateSMS" + }, + "methods": [ + { + "name": "updateSms", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "messageId", + "topics", + "users", + "targets", + "content", + "draft", + "scheduledAt" + ], + "required": [ + "messageId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/message" + } + ], + "description": "Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", + "demo": "messaging\/update-sms.md", + "public": false, + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.updateSMS" + } + }, + { + "name": "updateSMS", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "messageId", + "topics", + "users", + "targets", + "content", + "draft", + "scheduledAt" + ], + "required": [ + "messageId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/message" + } + ], + "description": "Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", + "demo": "messaging\/update-sms.md", + "public": true + } + ], "auth": { "Project": [] } @@ -31736,24 +35191,93 @@ "Project": [], "Key": [] } - ] + ], + "parameters": [ + { + "name": "messageId", + "description": "Message ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<MESSAGE_ID>" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "topics": { + "type": "array", + "description": "List of Topic IDs.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "users": { + "type": "array", + "description": "List of User IDs.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "targets": { + "type": "array", + "description": "List of Targets IDs.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "content": { + "type": "string", + "description": "Email Content.", + "x-example": "<CONTENT>", + "x-nullable": true + }, + "draft": { + "type": "boolean", + "description": "Is message a draft", + "x-example": false, + "x-nullable": true + }, + "scheduledAt": { + "type": "string", + "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true + } + } + } + } + } + } } }, - "\/functions\/specifications": { + "\/messaging\/messages\/{messageId}": { "get": { - "summary": "List specifications", - "operationId": "functionsListSpecifications", + "summary": "Get message", + "operationId": "messagingGetMessage", "tags": [ - "functions" + "messaging" ], - "description": "List allowed function specifications for this instance.", + "description": "Get a message by its unique ID.\n", "responses": { "200": { - "description": "Specifications List", + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/specificationList" + "$ref": "#\/components\/schemas\/message" } } } @@ -31761,21 +35285,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "listSpecifications", - "group": "runtimes", + "method": "getMessage", + "group": "messages", "cookies": false, "type": "", - "demo": "functions\/list-specifications.md", + "demo": "messaging\/get-message.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "messages.read", "platforms": [ - "server", - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md", "auth": { "Project": [] } @@ -31788,324 +35313,227 @@ ], "parameters": [ { - "name": "type", - "description": "Specification type to list. Can be one of: runtimes, builds.", - "required": false, + "name": "messageId", + "description": "Message ID.", + "required": true, "schema": { "type": "string", - "x-example": "runtimes", - "default": "runtimes" + "x-example": "<MESSAGE_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/functions\/templates": { - "get": { - "summary": "List templates", - "operationId": "functionsListTemplates", + }, + "delete": { + "summary": "Delete message", + "operationId": "messagingDelete", "tags": [ - "functions" + "messaging" ], - "description": "List available function templates. You can use template details in [createFunction](\/docs\/references\/cloud\/server-nodejs\/functions#create) method.", + "description": "Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message.", "responses": { - "200": { - "description": "Function Templates List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/templateFunctionList" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "listTemplates", - "group": "templates", + "method": "delete", + "group": "messages", "cookies": false, "type": "", - "demo": "functions\/list-templates.md", + "demo": "messaging\/delete.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "messages.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "runtimes", - "description": "List of runtimes allowed for filtering function templates. Maximum of 100 runtimes are allowed.", - "required": false, + "name": "messageId", + "description": "Message ID.", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "node-14.5", - "node-16.0", - "node-18.0", - "node-19.0", - "node-20.0", - "node-21.0", - "node-22", - "node-23", - "node-24", - "node-25", - "php-8.0", - "php-8.1", - "php-8.2", - "php-8.3", - "php-8.4", - "ruby-3.0", - "ruby-3.1", - "ruby-3.2", - "ruby-3.3", - "ruby-3.4", - "ruby-4.0", - "python-3.8", - "python-3.9", - "python-3.10", - "python-3.11", - "python-3.12", - "python-3.13", - "python-3.14", - "python-ml-3.11", - "python-ml-3.12", - "python-ml-3.13", - "deno-1.21", - "deno-1.24", - "deno-1.35", - "deno-1.40", - "deno-1.46", - "deno-2.0", - "deno-2.5", - "deno-2.6", - "dart-2.15", - "dart-2.16", - "dart-2.17", - "dart-2.18", - "dart-2.19", - "dart-3.0", - "dart-3.1", - "dart-3.3", - "dart-3.5", - "dart-3.8", - "dart-3.9", - "dart-3.10", - "dart-3.11", - "dart-3.12", - "dotnet-6.0", - "dotnet-7.0", - "dotnet-8.0", - "dotnet-10", - "java-8.0", - "java-11.0", - "java-17.0", - "java-18.0", - "java-21.0", - "java-22", - "java-25", - "swift-5.5", - "swift-5.8", - "swift-5.9", - "swift-5.10", - "swift-6.2", - "kotlin-1.6", - "kotlin-1.8", - "kotlin-1.9", - "kotlin-2.0", - "kotlin-2.3", - "cpp-17", - "cpp-20", - "bun-1.0", - "bun-1.1", - "bun-1.2", - "bun-1.3", - "go-1.23", - "go-1.24", - "go-1.25", - "go-1.26", - "rust-1.83", - "static-1", - "flutter-3.24", - "flutter-3.27", - "flutter-3.29", - "flutter-3.32", - "flutter-3.35", - "flutter-3.38", - "flutter-3.41", - "flutter-3.44" - ], - "x-enum-name": "Runtime", - "x-enum-keys": [ - "node-14.5", - "node-16.0", - "node-18.0", - "node-19.0", - "node-20.0", - "node-21.0", - "node-22", - "node-23", - "node-24", - "node-25", - "php-8.0", - "php-8.1", - "php-8.2", - "php-8.3", - "php-8.4", - "ruby-3.0", - "ruby-3.1", - "ruby-3.2", - "ruby-3.3", - "ruby-3.4", - "ruby-4.0", - "python-3.8", - "python-3.9", - "python-3.10", - "python-3.11", - "python-3.12", - "python-3.13", - "python-3.14", - "python-ml-3.11", - "python-ml-3.12", - "python-ml-3.13", - "deno-1.21", - "deno-1.24", - "deno-1.35", - "deno-1.40", - "deno-1.46", - "deno-2.0", - "deno-2.5", - "deno-2.6", - "dart-2.15", - "dart-2.16", - "dart-2.17", - "dart-2.18", - "dart-2.19", - "dart-3.0", - "dart-3.1", - "dart-3.3", - "dart-3.5", - "dart-3.8", - "dart-3.9", - "dart-3.10", - "dart-3.11", - "dart-3.12", - "dotnet-6.0", - "dotnet-7.0", - "dotnet-8.0", - "dotnet-10", - "java-8.0", - "java-11.0", - "java-17.0", - "java-18.0", - "java-21.0", - "java-22", - "java-25", - "swift-5.5", - "swift-5.8", - "swift-5.9", - "swift-5.10", - "swift-6.2", - "kotlin-1.6", - "kotlin-1.8", - "kotlin-1.9", - "kotlin-2.0", - "kotlin-2.3", - "cpp-17", - "cpp-20", - "bun-1.0", - "bun-1.1", - "bun-1.2", - "bun-1.3", - "go-1.23", - "go-1.24", - "go-1.25", - "go-1.26", - "rust-1.83", - "static-1", - "flutter-3.24", - "flutter-3.27", - "flutter-3.29", - "flutter-3.32", - "flutter-3.35", - "flutter-3.38", - "flutter-3.41", - "flutter-3.44" - ] - }, - "default": [] + "type": "string", + "x-example": "<MESSAGE_ID>" + }, + "in": "path" + } + ] + } + }, + "\/messaging\/messages\/{messageId}\/targets": { + "get": { + "summary": "List message targets", + "operationId": "messagingListTargets", + "tags": [ + "messaging" + ], + "description": "Get a list of the targets associated with a message.", + "responses": { + "200": { + "description": "Target list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/targetList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listTargets", + "group": "messages", + "cookies": false, + "type": "", + "demo": "messaging\/list-targets.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "messages.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "messageId", + "description": "Message ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<MESSAGE_ID>" }, - "in": "query" + "in": "path" }, { - "name": "useCases", - "description": "List of use cases allowed for filtering function templates. Maximum of 100 use cases are allowed.", + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType", "required": false, "schema": { "type": "array", "items": { - "type": "string", - "enum": [ - "starter", - "databases", - "ai", - "messaging", - "utilities", - "dev-tools", - "auth" - ], - "x-enum-name": "FunctionTemplateUseCase", - "x-enum-keys": [ - "starter", - "databases", - "ai", - "messaging", - "utilities", - "dev-tools", - "auth" - ] + "type": "string" }, "default": [] }, "in": "query" }, { - "name": "limit", - "description": "Limit the number of templates returned in the response. Default limit is 25, and maximum limit is 5000.", + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", "required": false, "schema": { - "type": "integer", - "format": "int32", - "x-example": 1, - "default": 25 + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + } + ] + } + }, + "\/messaging\/providers": { + "get": { + "summary": "List providers", + "operationId": "messagingListProviders", + "tags": [ + "messaging" + ], + "description": "Get a list of all providers from the current Appwrite project.", + "responses": { + "200": { + "description": "Provider list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/providerList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listProviders", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/list-providers.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "providers.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, { - "name": "offset", - "description": "Offset the list of returned templates. Maximum offset is 5000.", + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", "required": false, "schema": { - "type": "integer", - "format": "int32", - "x-example": 0, - "default": 0 + "type": "string", + "x-example": "<SEARCH>", + "default": "" }, "in": "query" }, @@ -32123,173 +35551,479 @@ ] } }, - "\/functions\/templates\/{templateId}": { - "get": { - "summary": "Get function template", - "operationId": "functionsGetTemplate", + "\/messaging\/providers\/apns": { + "post": { + "summary": "Create APNS provider", + "operationId": "messagingCreateApnsProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a function template using ID. You can use template details in [createFunction](\/docs\/references\/cloud\/server-nodejs\/functions#create) method.", + "description": "Create a new Apple Push Notification service provider.", "responses": { - "200": { - "description": "Template Function", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/templateFunction" + "$ref": "#\/components\/schemas\/provider" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getTemplate", - "group": "templates", + "method": "createApnsProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/get-template.md", + "demo": "messaging\/create-apns-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "providers.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, - "public": true, + "public": false, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.createAPNSProvider" + }, + "methods": [ + { + "name": "createApnsProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "authKey", + "authKeyId", + "teamId", + "bundleId", + "sandbox", + "enabled" + ], + "required": [ + "providerId", + "name" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Create a new Apple Push Notification service provider.", + "demo": "messaging\/create-apns-provider.md", + "public": false, + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.createAPNSProvider" + } + }, + { + "name": "createAPNSProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "authKey", + "authKeyId", + "teamId", + "bundleId", + "sandbox", + "enabled" + ], + "required": [ + "providerId", + "name" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Create a new Apple Push Notification service provider.", + "demo": "messaging\/create-apns-provider.md", + "public": true + } + ], "auth": { "Project": [] } }, "security": [ { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "authKey": { + "type": "string", + "description": "APNS authentication key.", + "default": "", + "x-example": "<AUTH_KEY>" + }, + "authKeyId": { + "type": "string", + "description": "APNS authentication key ID.", + "default": "", + "x-example": "<AUTH_KEY_ID>" + }, + "teamId": { + "type": "string", + "description": "APNS team ID.", + "default": "", + "x-example": "<TEAM_ID>" + }, + "bundleId": { + "type": "string", + "description": "APNS bundle ID.", + "default": "", + "x-example": "<BUNDLE_ID>" + }, + "sandbox": { + "type": "boolean", + "description": "Use APNS sandbox environment.", + "default": false, + "x-example": false + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } + } + } + } + }, + "\/messaging\/providers\/apns\/{providerId}": { + "patch": { + "summary": "Update APNS provider", + "operationId": "messagingUpdateApnsProvider", + "tags": [ + "messaging" + ], + "description": "Update a Apple Push Notification service provider by its unique ID.", + "responses": { + "200": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": true, + "x-appwrite": { + "method": "updateApnsProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/update-apns-provider.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "providers.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": false, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.updateAPNSProvider" + }, + "methods": [ + { + "name": "updateApnsProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "enabled", + "authKey", + "authKeyId", + "teamId", + "bundleId", + "sandbox" + ], + "required": [ + "providerId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Update a Apple Push Notification service provider by its unique ID.", + "demo": "messaging\/update-apns-provider.md", + "public": false, + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.updateAPNSProvider" + } + }, + { + "name": "updateAPNSProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "enabled", + "authKey", + "authKeyId", + "teamId", + "bundleId", + "sandbox" + ], + "required": [ + "providerId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Update a Apple Push Notification service provider by its unique ID.", + "demo": "messaging\/update-apns-provider.md", + "public": true + } + ], + "auth": { "Project": [] } + }, + "security": [ + { + "Project": [], + "Key": [] + } ], "parameters": [ { - "name": "templateId", - "description": "Template ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<TEMPLATE_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Provider name.", + "default": "", + "x-example": "<NAME>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + }, + "authKey": { + "type": "string", + "description": "APNS authentication key.", + "default": "", + "x-example": "<AUTH_KEY>" + }, + "authKeyId": { + "type": "string", + "description": "APNS authentication key ID.", + "default": "", + "x-example": "<AUTH_KEY_ID>" + }, + "teamId": { + "type": "string", + "description": "APNS team ID.", + "default": "", + "x-example": "<TEAM_ID>" + }, + "bundleId": { + "type": "string", + "description": "APNS bundle ID.", + "default": "", + "x-example": "<BUNDLE_ID>" + }, + "sandbox": { + "type": "boolean", + "description": "Use APNS sandbox environment.", + "x-example": false, + "x-nullable": true + } + } + } + } + } + } } }, - "\/functions\/usage": { - "get": { - "summary": "Get functions usage", - "operationId": "functionsListUsage", + "\/messaging\/providers\/fcm": { + "post": { + "summary": "Create FCM provider", + "operationId": "messagingCreateFcmProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get usage metrics and statistics for all functions in the project. View statistics including total deployments, builds, logs, storage usage, and compute time. The response includes both current totals and historical data for each metric. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, defaults to 30 days.", + "description": "Create a new Firebase Cloud Messaging provider.", "responses": { - "200": { - "description": "UsageFunctions", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageFunctions" + "$ref": "#\/components\/schemas\/provider" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listUsage", - "group": null, + "method": "createFcmProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/list-usage.md", + "demo": "messaging\/create-fcm-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "providers.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "range", - "description": "Date range.", - "required": false, - "schema": { - "type": "string", - "x-example": "24h", - "enum": [ - "24h", - "30d", - "90d" + "public": false, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.createFCMProvider" + }, + "methods": [ + { + "name": "createFcmProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "serviceAccountJSON", + "enabled" ], - "x-enum-name": "UsageRange", - "x-enum-keys": [ - "Twenty Four Hours", - "Thirty Days", - "Ninety Days" + "required": [ + "providerId", + "name" ], - "default": "30d" - }, - "in": "query" - } - ] - } - }, - "\/functions\/{functionId}": { - "get": { - "summary": "Get function", - "operationId": "functionsGet", - "tags": [ - "functions" - ], - "description": "Get a function by its unique ID.", - "responses": { - "200": { - "description": "Function", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/function" + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/provider" } + ], + "description": "Create a new Firebase Cloud Messaging provider.", + "demo": "messaging\/create-fcm-provider.md", + "public": false, + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.createFCMProvider" } + }, + { + "name": "createFCMProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "serviceAccountJSON", + "enabled" + ], + "required": [ + "providerId", + "name" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Create a new Firebase Cloud Messaging provider.", + "demo": "messaging\/create-fcm-provider.md", + "public": true } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "get", - "group": "functions", - "cookies": false, - "type": "", - "demo": "functions\/get.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", - "platforms": [ - "console", - "server" ], - "packaging": false, - "public": true, "auth": { "Project": [] } @@ -32300,55 +36034,149 @@ "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "serviceAccountJSON": { + "type": "object", + "description": "FCM service account JSON.", + "default": {}, + "x-example": "{}", + "x-nullable": true + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } } - ] - }, - "put": { - "summary": "Update function", - "operationId": "functionsUpdate", + } + } + }, + "\/messaging\/providers\/fcm\/{providerId}": { + "patch": { + "summary": "Update FCM provider", + "operationId": "messagingUpdateFcmProvider", "tags": [ - "functions" + "messaging" ], - "description": "Update function by its unique ID.", + "description": "Update a Firebase Cloud Messaging provider by its unique ID.", "responses": { "200": { - "description": "Function", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/function" + "$ref": "#\/components\/schemas\/provider" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "update", - "group": "functions", + "method": "updateFcmProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/update.md", + "demo": "messaging\/update-fcm-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, - "public": true, + "public": false, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.updateFCMProvider" + }, + "methods": [ + { + "name": "updateFcmProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "enabled", + "serviceAccountJSON" + ], + "required": [ + "providerId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Update a Firebase Cloud Messaging provider by its unique ID.", + "demo": "messaging\/update-fcm-provider.md", + "public": false, + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.updateFCMProvider" + } + }, + { + "name": "updateFCMProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "enabled", + "serviceAccountJSON" + ], + "required": [ + "providerId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Update a Firebase Cloud Messaging provider by its unique ID.", + "demo": "messaging\/update-fcm-provider.md", + "public": true + } + ], "auth": { "Project": [] } @@ -32361,12 +36189,12 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } @@ -32379,575 +36207,324 @@ "properties": { "name": { "type": "string", - "description": "Function name. Max length: 128 chars.", + "description": "Provider name.", + "default": "", "x-example": "<NAME>" }, - "runtime": { - "type": "string", - "description": "Execution runtime.", - "x-example": "node-14.5", - "enum": [ - "node-14.5", - "node-16.0", - "node-18.0", - "node-19.0", - "node-20.0", - "node-21.0", - "node-22", - "node-23", - "node-24", - "node-25", - "php-8.0", - "php-8.1", - "php-8.2", - "php-8.3", - "php-8.4", - "ruby-3.0", - "ruby-3.1", - "ruby-3.2", - "ruby-3.3", - "ruby-3.4", - "ruby-4.0", - "python-3.8", - "python-3.9", - "python-3.10", - "python-3.11", - "python-3.12", - "python-3.13", - "python-3.14", - "python-ml-3.11", - "python-ml-3.12", - "python-ml-3.13", - "deno-1.21", - "deno-1.24", - "deno-1.35", - "deno-1.40", - "deno-1.46", - "deno-2.0", - "deno-2.5", - "deno-2.6", - "dart-2.15", - "dart-2.16", - "dart-2.17", - "dart-2.18", - "dart-2.19", - "dart-3.0", - "dart-3.1", - "dart-3.3", - "dart-3.5", - "dart-3.8", - "dart-3.9", - "dart-3.10", - "dart-3.11", - "dart-3.12", - "dotnet-6.0", - "dotnet-7.0", - "dotnet-8.0", - "dotnet-10", - "java-8.0", - "java-11.0", - "java-17.0", - "java-18.0", - "java-21.0", - "java-22", - "java-25", - "swift-5.5", - "swift-5.8", - "swift-5.9", - "swift-5.10", - "swift-6.2", - "kotlin-1.6", - "kotlin-1.8", - "kotlin-1.9", - "kotlin-2.0", - "kotlin-2.3", - "cpp-17", - "cpp-20", - "bun-1.0", - "bun-1.1", - "bun-1.2", - "bun-1.3", - "go-1.23", - "go-1.24", - "go-1.25", - "go-1.26", - "rust-1.83", - "static-1", - "flutter-3.24", - "flutter-3.27", - "flutter-3.29", - "flutter-3.32", - "flutter-3.35", - "flutter-3.38", - "flutter-3.41", - "flutter-3.44" - ], - "x-enum-name": "Runtime", - "x-enum-keys": [ - "node-14.5", - "node-16.0", - "node-18.0", - "node-19.0", - "node-20.0", - "node-21.0", - "node-22", - "node-23", - "node-24", - "node-25", - "php-8.0", - "php-8.1", - "php-8.2", - "php-8.3", - "php-8.4", - "ruby-3.0", - "ruby-3.1", - "ruby-3.2", - "ruby-3.3", - "ruby-3.4", - "ruby-4.0", - "python-3.8", - "python-3.9", - "python-3.10", - "python-3.11", - "python-3.12", - "python-3.13", - "python-3.14", - "python-ml-3.11", - "python-ml-3.12", - "python-ml-3.13", - "deno-1.21", - "deno-1.24", - "deno-1.35", - "deno-1.40", - "deno-1.46", - "deno-2.0", - "deno-2.5", - "deno-2.6", - "dart-2.15", - "dart-2.16", - "dart-2.17", - "dart-2.18", - "dart-2.19", - "dart-3.0", - "dart-3.1", - "dart-3.3", - "dart-3.5", - "dart-3.8", - "dart-3.9", - "dart-3.10", - "dart-3.11", - "dart-3.12", - "dotnet-6.0", - "dotnet-7.0", - "dotnet-8.0", - "dotnet-10", - "java-8.0", - "java-11.0", - "java-17.0", - "java-18.0", - "java-21.0", - "java-22", - "java-25", - "swift-5.5", - "swift-5.8", - "swift-5.9", - "swift-5.10", - "swift-6.2", - "kotlin-1.6", - "kotlin-1.8", - "kotlin-1.9", - "kotlin-2.0", - "kotlin-2.3", - "cpp-17", - "cpp-20", - "bun-1.0", - "bun-1.1", - "bun-1.2", - "bun-1.3", - "go-1.23", - "go-1.24", - "go-1.25", - "go-1.26", - "rust-1.83", - "static-1", - "flutter-3.24", - "flutter-3.27", - "flutter-3.29", - "flutter-3.32", - "flutter-3.35", - "flutter-3.38", - "flutter-3.41", - "flutter-3.44" - ] + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true }, - "execute": { - "type": "array", - "description": "An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", - "default": [], - "x-example": "[\"any\"]", - "items": { - "type": "string" + "serviceAccountJSON": { + "type": "object", + "description": "FCM service account JSON.", + "default": {}, + "x-example": "{}", + "x-nullable": true + } + } + } + } + } + } + } + }, + "\/messaging\/providers\/mailgun": { + "post": { + "summary": "Create Mailgun provider", + "operationId": "messagingCreateMailgunProvider", + "tags": [ + "messaging" + ], + "description": "Create a new Mailgun provider.", + "responses": { + "201": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createMailgunProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/create-mailgun-provider.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "providers.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" } }, - "events": { - "type": "array", - "description": "Events list. Maximum of 100 events are allowed.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" }, - "schedule": { + "apiKey": { "type": "string", - "description": "Schedule CRON syntax.", + "description": "Mailgun API Key.", "default": "", - "x-example": null - }, - "timeout": { - "type": "integer", - "description": "Maximum execution time in seconds.", - "default": 15, - "x-example": 1, - "format": "int32" + "x-example": "<API_KEY>" }, - "enabled": { - "type": "boolean", - "description": "Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.", - "default": true, - "x-example": false + "domain": { + "type": "string", + "description": "Mailgun Domain.", + "default": "", + "x-example": "<DOMAIN>" }, - "logging": { + "isEuRegion": { "type": "boolean", - "description": "When disabled, executions will exclude logs and errors, and will be slightly faster.", - "default": true, - "x-example": false + "description": "Set as EU region.", + "x-example": false, + "x-nullable": true }, - "entrypoint": { + "fromName": { "type": "string", - "description": "Entrypoint File. This path is relative to the \"providerRootDirectory\".", + "description": "Sender Name.", "default": "", - "x-example": "<ENTRYPOINT>" + "x-example": "<FROM_NAME>" }, - "commands": { + "fromEmail": { "type": "string", - "description": "Build Commands.", + "description": "Sender email address.", "default": "", - "x-example": "<COMMANDS>" - }, - "scopes": { - "type": "array", - "description": "List of scopes allowed for API Key auto-generated for every execution. Maximum of 100 scopes are allowed.", - "default": [], - "x-example": null, - "items": { - "type": "string", - "enum": [ - "project.read", - "project.write", - "keys.read", - "keys.write", - "platforms.read", - "platforms.write", - "mocks.read", - "mocks.write", - "policies.read", - "policies.write", - "project.policies.read", - "project.policies.write", - "templates.read", - "templates.write", - "oauth2.read", - "oauth2.write", - "users.read", - "users.write", - "sessions.read", - "sessions.write", - "teams.read", - "teams.write", - "databases.read", - "databases.write", - "tables.read", - "tables.write", - "columns.read", - "columns.write", - "indexes.read", - "indexes.write", - "rows.read", - "rows.write", - "collections.read", - "collections.write", - "attributes.read", - "attributes.write", - "documents.read", - "documents.write", - "buckets.read", - "buckets.write", - "files.read", - "files.write", - "tokens.read", - "tokens.write", - "functions.read", - "functions.write", - "executions.read", - "executions.write", - "execution.read", - "execution.write", - "sites.read", - "sites.write", - "log.read", - "log.write", - "providers.read", - "providers.write", - "topics.read", - "topics.write", - "subscribers.read", - "subscribers.write", - "targets.read", - "targets.write", - "messages.read", - "messages.write", - "rules.read", - "rules.write", - "webhooks.read", - "webhooks.write", - "locale.read", - "avatars.read", - "health.read", - "assistant.read", - "migrations.read", - "migrations.write", - "schedules.read", - "schedules.write", - "vcs.read", - "vcs.write", - "insights.read", - "insights.write", - "reports.read", - "reports.write", - "presences.read", - "presences.write", - "backups.policies.read", - "backups.policies.write", - "archives.read", - "archives.write", - "restorations.read", - "restorations.write", - "dedicatedDatabases.execute", - "domains.read", - "domains.write", - "events.read", - "apps.read", - "apps.write", - "usage.read" - ], - "x-enum-name": "ProjectKeyScopes", - "x-enum-keys": [ - "project.read", - "project.write", - "keys.read", - "keys.write", - "platforms.read", - "platforms.write", - "mocks.read", - "mocks.write", - "policies.read", - "policies.write", - "project.policies.read", - "project.policies.write", - "templates.read", - "templates.write", - "oauth2.read", - "oauth2.write", - "users.read", - "users.write", - "sessions.read", - "sessions.write", - "teams.read", - "teams.write", - "databases.read", - "databases.write", - "tables.read", - "tables.write", - "columns.read", - "columns.write", - "indexes.read", - "indexes.write", - "rows.read", - "rows.write", - "collections.read", - "collections.write", - "attributes.read", - "attributes.write", - "documents.read", - "documents.write", - "buckets.read", - "buckets.write", - "files.read", - "files.write", - "tokens.read", - "tokens.write", - "functions.read", - "functions.write", - "executions.read", - "executions.write", - "execution.read", - "execution.write", - "sites.read", - "sites.write", - "log.read", - "log.write", - "providers.read", - "providers.write", - "topics.read", - "topics.write", - "subscribers.read", - "subscribers.write", - "targets.read", - "targets.write", - "messages.read", - "messages.write", - "rules.read", - "rules.write", - "webhooks.read", - "webhooks.write", - "locale.read", - "avatars.read", - "health.read", - "assistant.read", - "migrations.read", - "migrations.write", - "schedules.read", - "schedules.write", - "vcs.read", - "vcs.write", - "insights.read", - "insights.write", - "reports.read", - "reports.write", - "presences.read", - "presences.write", - "backups.policies.read", - "backups.policies.write", - "archives.read", - "archives.write", - "restorations.read", - "restorations.write", - "dedicatedDatabases.execute", - "domains.read", - "domains.write", - "events.read", - "apps.read", - "apps.write", - "usage.read" - ] - } + "x-example": "email@example.com", + "format": "email" }, - "installationId": { + "replyToName": { "type": "string", - "description": "Appwrite Installation ID for VCS (Version Controle System) deployment.", + "description": "Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.", "default": "", - "x-example": "<INSTALLATION_ID>" + "x-example": "<REPLY_TO_NAME>" }, - "providerRepositoryId": { + "replyToEmail": { "type": "string", - "description": "Repository ID of the repo linked to the function", - "x-example": "<PROVIDER_REPOSITORY_ID>", - "x-nullable": true + "description": "Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.", + "default": "", + "x-example": "email@example.com", + "format": "email" }, - "providerBranch": { + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } + } + } + } + }, + "\/messaging\/providers\/mailgun\/{providerId}": { + "patch": { + "summary": "Update Mailgun provider", + "operationId": "messagingUpdateMailgunProvider", + "tags": [ + "messaging" + ], + "description": "Update a Mailgun provider by its unique ID.", + "responses": { + "200": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateMailgunProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/update-mailgun-provider.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "providers.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "providerId", + "description": "Provider ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROVIDER_ID>" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { "type": "string", - "description": "Production branch for the repo linked to the function", + "description": "Provider name.", "default": "", - "x-example": "<PROVIDER_BRANCH>" + "x-example": "<NAME>" }, - "providerSilentMode": { - "type": "boolean", - "description": "Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.", - "default": false, - "x-example": false + "apiKey": { + "type": "string", + "description": "Mailgun API Key.", + "default": "", + "x-example": "<API_KEY>" }, - "providerRootDirectory": { + "domain": { "type": "string", - "description": "Path to function code in the linked repo.", + "description": "Mailgun Domain.", "default": "", - "x-example": "<PROVIDER_ROOT_DIRECTORY>" + "x-example": "<DOMAIN>" }, - "providerBranches": { - "type": "array", - "description": "List of branch name patterns to trigger automatic deployments. Supports wildcards. Leave empty to deploy on all branches.", - "x-example": null, - "items": { - "type": "string" - }, + "isEuRegion": { + "type": "boolean", + "description": "Set as EU region.", + "x-example": false, "x-nullable": true }, - "providerPaths": { - "type": "array", - "description": "List of file path patterns to trigger automatic deployments. Supports wildcards. Leave empty to deploy on all file changes.", - "x-example": null, - "items": { - "type": "string" - }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, "x-nullable": true }, - "buildSpecification": { + "fromName": { "type": "string", - "description": "Build specification for the function deployments.", - "x-example": null, - "x-nullable": true + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" }, - "runtimeSpecification": { + "fromEmail": { "type": "string", - "description": "Runtime specification for the function executions.", - "default": {}, - "x-example": null + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "replyToName": { + "type": "string", + "description": "Name set in the reply to field for the mail. Default value is sender name.", + "default": "", + "x-example": "<REPLY_TO_NAME>" }, - "deploymentRetention": { - "type": "integer", - "description": "Days to keep non-active deployments before deletion. Value 0 means all deployments will be kept.", - "default": 0, - "x-example": 0, - "format": "int32" + "replyToEmail": { + "type": "string", + "description": "Email set in the reply to field for the mail. Default value is sender email.", + "default": "", + "x-example": "<REPLY_TO_EMAIL>" } - }, - "required": [ - "name" - ] + } } } } } - }, - "delete": { - "summary": "Delete function", - "operationId": "functionsDelete", + } + }, + "\/messaging\/providers\/msg91": { + "post": { + "summary": "Create Msg91 provider", + "operationId": "messagingCreateMsg91Provider", "tags": [ - "functions" + "messaging" ], - "description": "Delete a function by its unique ID.", + "description": "Create a new MSG91 provider.", "responses": { - "204": { - "description": "No content" + "201": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", - "group": "functions", + "method": "createMsg91Provider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/delete.md", + "demo": "messaging\/create-msg-91-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md", "auth": { "Project": [] } @@ -32958,35 +36535,75 @@ "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "templateId": { + "type": "string", + "description": "Msg91 template ID", + "default": "", + "x-example": "<TEMPLATE_ID>" + }, + "senderId": { + "type": "string", + "description": "Msg91 sender ID.", + "default": "", + "x-example": "<SENDER_ID>" + }, + "authKey": { + "type": "string", + "description": "Msg91 auth key.", + "default": "", + "x-example": "<AUTH_KEY>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } } - ] + } } }, - "\/functions\/{functionId}\/deployment": { + "\/messaging\/providers\/msg91\/{providerId}": { "patch": { - "summary": "Update function's deployment", - "operationId": "functionsUpdateFunctionDeployment", + "summary": "Update Msg91 provider", + "operationId": "messagingUpdateMsg91Provider", "tags": [ - "functions" + "messaging" ], - "description": "Update the function active deployment. Use this endpoint to switch the code deployment that should be used when visitor opens your function.", + "description": "Update a MSG91 provider by its unique ID.", "responses": { "200": { - "description": "Function", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/function" + "$ref": "#\/components\/schemas\/provider" } } } @@ -32994,21 +36611,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateFunctionDeployment", - "group": "functions", + "method": "updateMsg91Provider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/update-function-deployment.md", + "demo": "messaging\/update-msg-91-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md", "auth": { "Project": [] } @@ -33021,12 +36639,12 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } @@ -33037,36 +36655,58 @@ "schema": { "type": "object", "properties": { - "deploymentId": { + "name": { "type": "string", - "description": "Deployment ID.", - "x-example": "<DEPLOYMENT_ID>" + "description": "Provider name.", + "default": "", + "x-example": "<NAME>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + }, + "templateId": { + "type": "string", + "description": "Msg91 template ID.", + "default": "", + "x-example": "<TEMPLATE_ID>" + }, + "senderId": { + "type": "string", + "description": "Msg91 sender ID.", + "default": "", + "x-example": "<SENDER_ID>" + }, + "authKey": { + "type": "string", + "description": "Msg91 auth key.", + "default": "", + "x-example": "<AUTH_KEY>" } - }, - "required": [ - "deploymentId" - ] + } } } } } } }, - "\/functions\/{functionId}\/deployments": { - "get": { - "summary": "List deployments", - "operationId": "functionsListDeployments", + "\/messaging\/providers\/resend": { + "post": { + "summary": "Create Resend provider", + "operationId": "messagingCreateResendProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a list of all the function's code deployments. You can use the query params to filter your results.", + "description": "Create a new Resend provider.", "responses": { - "200": { - "description": "Deployments List", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deploymentList" + "$ref": "#\/components\/schemas\/provider" } } } @@ -33074,21 +36714,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDeployments", - "group": "deployments", + "method": "createResendProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/list-deployments.md", + "demo": "messaging\/create-resend-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-resend-provider.md", "auth": { "Project": [] } @@ -33099,68 +36740,89 @@ "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: buildSize, sourceSize, totalSize, buildDuration, status, activate, type", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, - "schema": { - "type": "string", - "x-example": "<SEARCH>", - "default": "" - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "apiKey": { + "type": "string", + "description": "Resend API key.", + "default": "", + "x-example": "<API_KEY>" + }, + "fromName": { + "type": "string", + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" + }, + "fromEmail": { + "type": "string", + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "replyToName": { + "type": "string", + "description": "Name set in the reply to field for the mail. Default value is sender name.", + "default": "", + "x-example": "<REPLY_TO_NAME>" + }, + "replyToEmail": { + "type": "string", + "description": "Email set in the reply to field for the mail. Default value is sender email.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } } - ] - }, - "post": { - "summary": "Create deployment", - "operationId": "functionsCreateDeployment", + } + } + }, + "\/messaging\/providers\/resend\/{providerId}": { + "patch": { + "summary": "Update Resend provider", + "operationId": "messagingUpdateResendProvider", "tags": [ - "functions" + "messaging" ], - "description": "Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.", + "description": "Update a Resend provider by its unique ID.", "responses": { - "202": { - "description": "Deployment", + "200": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/provider" } } } @@ -33168,21 +36830,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDeployment", - "group": "deployments", + "method": "updateResendProvider", + "group": "providers", "cookies": false, - "type": "upload", - "demo": "functions\/create-deployment.md", + "type": "", + "demo": "messaging\/update-resend-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], - "packaging": true, + "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-resend-provider.md", "auth": { "Project": [] } @@ -33195,71 +36858,87 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } ], "requestBody": { "content": { - "multipart\/form-data": { + "application\/json": { "schema": { "type": "object", "properties": { - "entrypoint": { + "name": { "type": "string", - "description": "Entrypoint File.", - "x-example": "<ENTRYPOINT>", + "description": "Provider name.", + "default": "", + "x-example": "<NAME>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, "x-nullable": true }, - "commands": { + "apiKey": { "type": "string", - "description": "Build Commands.", - "x-example": "<COMMANDS>", - "x-nullable": true + "description": "Resend API key.", + "default": "", + "x-example": "<API_KEY>" }, - "code": { + "fromName": { "type": "string", - "description": "Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.", - "x-example": null, - "format": "binary" + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" }, - "activate": { - "type": "boolean", - "description": "Automatically activate the deployment when it is finished building.", - "x-example": false + "fromEmail": { + "type": "string", + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "replyToName": { + "type": "string", + "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", + "default": "", + "x-example": "<REPLY_TO_NAME>" + }, + "replyToEmail": { + "type": "string", + "description": "Email set in the Reply To field for the mail. Default value is Sender Email.", + "default": "", + "x-example": "<REPLY_TO_EMAIL>" } - }, - "required": [ - "code", - "activate" - ] + } } } } } } }, - "\/functions\/{functionId}\/deployments\/duplicate": { + "\/messaging\/providers\/sendgrid": { "post": { - "summary": "Create duplicate deployment", - "operationId": "functionsCreateDuplicateDeployment", + "summary": "Create Sendgrid provider", + "operationId": "messagingCreateSendgridProvider", "tags": [ - "functions" + "messaging" ], - "description": "Create a new build for an existing function deployment. This endpoint allows you to rebuild a deployment with the updated function configuration, including its entrypoint and build commands if they have been modified. The build process will be queued and executed asynchronously. The original deployment's code will be preserved and used for the new build.", + "description": "Create a new Sendgrid provider.", "responses": { - "202": { - "description": "Deployment", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/provider" } } } @@ -33267,21 +36946,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDuplicateDeployment", - "group": "deployments", + "method": "createSendgridProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/create-duplicate-deployment.md", + "demo": "messaging\/create-sendgrid-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sendgrid-provider.md", "auth": { "Project": [] } @@ -33292,60 +36972,89 @@ "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - } - ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "deploymentId": { + "providerId": { "type": "string", - "description": "Deployment ID.", - "x-example": "<DEPLOYMENT_ID>" + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } }, - "buildId": { + "name": { "type": "string", - "description": "Build unique ID.", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "apiKey": { + "type": "string", + "description": "Sendgrid API key.", "default": "", - "x-example": "<BUILD_ID>" + "x-example": "<API_KEY>" + }, + "fromName": { + "type": "string", + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" + }, + "fromEmail": { + "type": "string", + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "replyToName": { + "type": "string", + "description": "Name set in the reply to field for the mail. Default value is sender name.", + "default": "", + "x-example": "<REPLY_TO_NAME>" + }, + "replyToEmail": { + "type": "string", + "description": "Email set in the reply to field for the mail. Default value is sender email.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true } }, "required": [ - "deploymentId" + "providerId", + "name" ] } } } } - } - }, - "\/functions\/{functionId}\/deployments\/template": { - "post": { - "summary": "Create template deployment", - "operationId": "functionsCreateTemplateDeployment", + } + }, + "\/messaging\/providers\/sendgrid\/{providerId}": { + "patch": { + "summary": "Update Sendgrid provider", + "operationId": "messagingUpdateSendgridProvider", "tags": [ - "functions" + "messaging" ], - "description": "Create a deployment based on a template.\n\nUse this endpoint with combination of [listTemplates](https:\/\/appwrite.io\/docs\/products\/functions\/templates) to find the template details.", + "description": "Update a Sendgrid provider by its unique ID.", "responses": { - "202": { - "description": "Deployment", + "200": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/provider" } } } @@ -33353,21 +37062,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTemplateDeployment", - "group": "deployments", + "method": "updateSendgridProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/create-template-deployment.md", + "demo": "messaging\/update-sendgrid-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md", "auth": { "Project": [] } @@ -33380,12 +37090,12 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } @@ -33396,77 +37106,71 @@ "schema": { "type": "object", "properties": { - "repository": { + "name": { "type": "string", - "description": "Repository name of the template.", - "x-example": "<REPOSITORY>" + "description": "Provider name.", + "default": "", + "x-example": "<NAME>" }, - "owner": { + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + }, + "apiKey": { "type": "string", - "description": "The name of the owner of the template.", - "x-example": "<OWNER>" + "description": "Sendgrid API key.", + "default": "", + "x-example": "<API_KEY>" }, - "rootDirectory": { + "fromName": { "type": "string", - "description": "Path to function code in the template repo.", - "x-example": "<ROOT_DIRECTORY>" + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" }, - "type": { + "fromEmail": { "type": "string", - "description": "Type for the reference provided. Can be commit, branch, or tag", - "x-example": "commit", - "enum": [ - "commit", - "branch", - "tag" - ], - "x-enum-name": "TemplateReferenceType", - "x-enum-keys": [ - "commit", - "branch", - "tag" - ] + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" }, - "reference": { + "replyToName": { "type": "string", - "description": "Reference value, can be a commit hash, branch name, or release tag", - "x-example": "<REFERENCE>" + "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", + "default": "", + "x-example": "<REPLY_TO_NAME>" }, - "activate": { - "type": "boolean", - "description": "Automatically activate the deployment when it is finished building.", - "default": false, - "x-example": false + "replyToEmail": { + "type": "string", + "description": "Email set in the Reply To field for the mail. Default value is Sender Email.", + "default": "", + "x-example": "<REPLY_TO_EMAIL>" } - }, - "required": [ - "repository", - "owner", - "rootDirectory", - "type", - "reference" - ] + } } } } } } }, - "\/functions\/{functionId}\/deployments\/vcs": { + "\/messaging\/providers\/ses": { "post": { - "summary": "Create VCS deployment", - "operationId": "functionsCreateVcsDeployment", + "summary": "Create Amazon SES provider", + "operationId": "messagingCreateSesProvider", "tags": [ - "functions" + "messaging" ], - "description": "Create a deployment when a function is connected to VCS.\n\nThis endpoint lets you create deployment from a branch, commit, or a tag.", + "description": "Create a new Amazon SES provider.", "responses": { - "202": { - "description": "Deployment", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/provider" } } } @@ -33474,21 +37178,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "createVcsDeployment", - "group": "deployments", + "method": "createSesProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/create-vcs-deployment.md", + "demo": "messaging\/create-ses-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-ses-provider.md", "auth": { "Project": [] } @@ -33499,53 +37204,79 @@ "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - } - ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "type": { + "providerId": { "type": "string", - "description": "Type of reference passed. Allowed values are: branch, commit", - "x-example": "branch", - "enum": [ - "branch", - "commit" - ], - "x-enum-name": "VCSReferenceType", - "x-enum-keys": [ - "branch", - "commit" - ] + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } }, - "reference": { + "name": { "type": "string", - "description": "VCS reference to create deployment from. Depending on type this can be: branch name, commit hash", - "x-example": "<REFERENCE>" + "description": "Provider name.", + "x-example": "<NAME>" }, - "activate": { + "accessKey": { + "type": "string", + "description": "AWS access key ID.", + "default": "", + "x-example": "<ACCESS_KEY>" + }, + "secretKey": { + "type": "string", + "description": "AWS secret access key.", + "default": "", + "x-example": "<SECRET_KEY>" + }, + "region": { + "type": "string", + "description": "AWS region, for example us-east-1.", + "default": "", + "x-example": "<REGION>" + }, + "fromName": { + "type": "string", + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" + }, + "fromEmail": { + "type": "string", + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "replyToName": { + "type": "string", + "description": "Name set in the reply to field for the mail. Default value is sender name.", + "default": "", + "x-example": "<REPLY_TO_NAME>" + }, + "replyToEmail": { + "type": "string", + "description": "Email set in the reply to field for the mail. Default value is sender email.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "enabled": { "type": "boolean", - "description": "Automatically activate the deployment when it is finished building.", - "default": false, - "x-example": false + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true } }, "required": [ - "type", - "reference" + "providerId", + "name" ] } } @@ -33553,21 +37284,21 @@ } } }, - "\/functions\/{functionId}\/deployments\/{deploymentId}": { - "get": { - "summary": "Get deployment", - "operationId": "functionsGetDeployment", + "\/messaging\/providers\/ses\/{providerId}": { + "patch": { + "summary": "Update Amazon SES provider", + "operationId": "messagingUpdateSesProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a function deployment by its unique ID.", + "description": "Update an Amazon SES provider by its unique ID.", "responses": { "200": { - "description": "Deployment", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/provider" } } } @@ -33575,21 +37306,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDeployment", - "group": "deployments", + "method": "updateSesProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/get-deployment.md", + "demo": "messaging\/update-ses-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-ses-provider.md", "auth": { "Project": [] } @@ -33602,222 +37334,454 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "deploymentId", - "description": "Deployment ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<DEPLOYMENT_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } - ] - }, - "delete": { - "summary": "Delete deployment", - "operationId": "functionsDeleteDeployment", - "tags": [ - "functions" - ], - "description": "Delete a code deployment by its unique ID.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteDeployment", - "group": "deployments", - "cookies": false, - "type": "", - "demo": "functions\/delete-deployment.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "deploymentId", - "description": "Deployment ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DEPLOYMENT_ID>" - }, - "in": "path" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Provider name.", + "default": "", + "x-example": "<NAME>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + }, + "accessKey": { + "type": "string", + "description": "AWS access key ID.", + "default": "", + "x-example": "<ACCESS_KEY>" + }, + "secretKey": { + "type": "string", + "description": "AWS secret access key.", + "default": "", + "x-example": "<SECRET_KEY>" + }, + "region": { + "type": "string", + "description": "AWS region, for example us-east-1.", + "default": "", + "x-example": "<REGION>" + }, + "fromName": { + "type": "string", + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" + }, + "fromEmail": { + "type": "string", + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "replyToName": { + "type": "string", + "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", + "default": "", + "x-example": "<REPLY_TO_NAME>" + }, + "replyToEmail": { + "type": "string", + "description": "Email set in the Reply To field for the mail. Default value is Sender Email.", + "default": "", + "x-example": "<REPLY_TO_EMAIL>" + } + } + } + } } - ] + } } }, - "\/functions\/{functionId}\/deployments\/{deploymentId}\/download": { - "get": { - "summary": "Get deployment download", - "operationId": "functionsGetDeploymentDownload", + "\/messaging\/providers\/smtp": { + "post": { + "summary": "Create SMTP provider", + "operationId": "messagingCreateSmtpProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a function deployment content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.", + "description": "Create a new SMTP provider.", "responses": { - "200": { - "description": "File", + "201": { + "description": "Provider", "content": { - "*\/*": { + "application\/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#\/components\/schemas\/provider" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDeploymentDownload", - "group": "deployments", + "method": "createSmtpProvider", + "group": "providers", "cookies": false, - "type": "location", - "demo": "functions\/get-deployment-download.md", + "type": "", + "demo": "messaging\/create-smtp-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, - "public": true, + "public": false, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.createSMTPProvider" + }, + "methods": [ + { + "name": "createSmtpProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "host", + "port", + "username", + "password", + "encryption", + "autoTLS", + "mailer", + "fromName", + "fromEmail", + "replyToName", + "replyToEmail", + "enabled" + ], + "required": [ + "providerId", + "name", + "host" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Create a new SMTP provider.", + "demo": "messaging\/create-smtp-provider.md", + "public": false, + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.createSMTPProvider" + } + }, + { + "name": "createSMTPProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "host", + "port", + "username", + "password", + "encryption", + "autoTLS", + "mailer", + "fromName", + "fromEmail", + "replyToName", + "replyToEmail", + "enabled" + ], + "required": [ + "providerId", + "name", + "host" + ], + "responses": [ + { + "code": 201, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Create a new SMTP provider.", + "demo": "messaging\/create-smtp-provider.md", + "public": true + } + ], "auth": { - "Project": [], - "ImpersonateUserId": [] + "Project": [] } }, "security": [ { "Project": [], - "Key": [], - "JWT": [], - "ImpersonateUserId": [] + "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "deploymentId", - "description": "Deployment ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DEPLOYMENT_ID>" - }, - "in": "path" - }, - { - "name": "type", - "description": "Deployment file to download. Can be: \"source\", \"output\".", - "required": false, - "schema": { - "type": "string", - "x-example": "source", - "enum": [ - "source", - "output" - ], - "x-enum-name": "DeploymentDownloadType", - "x-enum-keys": [ - "source", - "output" - ], - "default": "source" - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "host": { + "type": "string", + "description": "SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"`. Hosts will be tried in order.", + "x-example": "<HOST>" + }, + "port": { + "type": "integer", + "description": "The default SMTP server port.", + "default": 587, + "x-example": 1, + "format": "int32" + }, + "username": { + "type": "string", + "description": "Authentication username.", + "default": "", + "x-example": "<USERNAME>" + }, + "password": { + "type": "string", + "description": "Authentication password.", + "default": "", + "x-example": "password", + "format": "password" + }, + "encryption": { + "type": "string", + "description": "Encryption type. Can be omitted, 'ssl', or 'tls'", + "x-example": "none", + "enum": [ + "none", + "ssl", + "tls" + ], + "x-enum-name": "SmtpEncryption", + "x-enum-keys": [ + "none", + "ssl", + "tls" + ] + }, + "autoTLS": { + "type": "boolean", + "description": "Enable SMTP AutoTLS feature.", + "default": true, + "x-example": false + }, + "mailer": { + "type": "string", + "description": "The value to use for the X-Mailer header.", + "default": "", + "x-example": "<MAILER>" + }, + "fromName": { + "type": "string", + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" + }, + "fromEmail": { + "type": "string", + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "replyToName": { + "type": "string", + "description": "Name set in the reply to field for the mail. Default value is sender name.", + "default": "", + "x-example": "<REPLY_TO_NAME>" + }, + "replyToEmail": { + "type": "string", + "description": "Email set in the reply to field for the mail. Default value is sender email.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name", + "host" + ] + } + } } - ] + } } }, - "\/functions\/{functionId}\/deployments\/{deploymentId}\/status": { + "\/messaging\/providers\/smtp\/{providerId}": { "patch": { - "summary": "Update deployment status", - "operationId": "functionsUpdateDeploymentStatus", + "summary": "Update SMTP provider", + "operationId": "messagingUpdateSmtpProvider", "tags": [ - "functions" + "messaging" ], - "description": "Cancel an ongoing function deployment build. If the build is already in progress, it will be stopped and marked as canceled. If the build hasn't started yet, it will be marked as canceled without executing. You cannot cancel builds that have already completed (status 'ready') or failed. The response includes the final build status and details.", + "description": "Update a SMTP provider by its unique ID.", "responses": { "200": { - "description": "Deployment", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/provider" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "updateDeploymentStatus", - "group": "deployments", + "method": "updateSmtpProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/update-deployment-status.md", + "demo": "messaging\/update-smtp-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, - "public": true, + "public": false, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.updateSMTPProvider" + }, + "methods": [ + { + "name": "updateSmtpProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "host", + "port", + "username", + "password", + "encryption", + "autoTLS", + "mailer", + "fromName", + "fromEmail", + "replyToName", + "replyToEmail", + "enabled" + ], + "required": [ + "providerId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Update a SMTP provider by its unique ID.", + "demo": "messaging\/update-smtp-provider.md", + "public": false, + "deprecated": { + "since": "1.8.0", + "replaceWith": "messaging.updateSMTPProvider" + } + }, + { + "name": "updateSMTPProvider", + "namespace": "messaging", + "desc": "", + "auth": { + "Project": [] + }, + "parameters": [ + "providerId", + "name", + "host", + "port", + "username", + "password", + "encryption", + "autoTLS", + "mailer", + "fromName", + "fromEmail", + "replyToName", + "replyToEmail", + "enabled" + ], + "required": [ + "providerId" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/provider" + } + ], + "description": "Update a SMTP provider by its unique ID.", + "demo": "messaging\/update-smtp-provider.md", + "public": true + } + ], "auth": { "Project": [] } @@ -33830,43 +37794,135 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "deploymentId", - "description": "Deployment ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<DEPLOYMENT_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Provider name.", + "default": "", + "x-example": "<NAME>" + }, + "host": { + "type": "string", + "description": "SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"`. Hosts will be tried in order.", + "default": "", + "x-example": "<HOST>" + }, + "port": { + "type": "integer", + "description": "SMTP port.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "username": { + "type": "string", + "description": "Authentication username.", + "default": "", + "x-example": "<USERNAME>" + }, + "password": { + "type": "string", + "description": "Authentication password.", + "default": "", + "x-example": "password", + "format": "password" + }, + "encryption": { + "type": "string", + "description": "Encryption type. Can be 'ssl' or 'tls'", + "x-example": "none", + "enum": [ + "none", + "ssl", + "tls" + ], + "x-enum-name": "SmtpEncryption", + "x-enum-keys": [ + "none", + "ssl", + "tls" + ] + }, + "autoTLS": { + "type": "boolean", + "description": "Enable SMTP AutoTLS feature.", + "x-example": false, + "x-nullable": true + }, + "mailer": { + "type": "string", + "description": "The value to use for the X-Mailer header.", + "default": "", + "x-example": "<MAILER>" + }, + "fromName": { + "type": "string", + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" + }, + "fromEmail": { + "type": "string", + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" + }, + "replyToName": { + "type": "string", + "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", + "default": "", + "x-example": "<REPLY_TO_NAME>" + }, + "replyToEmail": { + "type": "string", + "description": "Email set in the Reply To field for the mail. Default value is Sender Email.", + "default": "", + "x-example": "<REPLY_TO_EMAIL>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + } + } + } + } + } } }, - "\/functions\/{functionId}\/executions": { - "get": { - "summary": "List executions", - "operationId": "functionsListExecutions", + "\/messaging\/providers\/telesign": { + "post": { + "summary": "Create Telesign provider", + "operationId": "messagingCreateTelesignProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a list of all the current user function execution logs. You can use the query params to filter your results.", + "description": "Create a new Telesign provider.", "responses": { - "200": { - "description": "Executions List", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/executionList" + "$ref": "#\/components\/schemas\/provider" } } } @@ -33874,25 +37930,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "listExecutions", - "group": "executions", + "method": "createTelesignProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/list-executions.md", + "demo": "messaging\/create-telesign-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": [ - "executions.read", - "execution.read" - ], + "scope": "providers.write", "platforms": [ "console", - "client", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md", "auth": { "Project": [] } @@ -33900,62 +37953,79 @@ "security": [ { "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration, requestMethod, requestPath, deploymentId", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "from": { + "type": "string", + "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", + "default": "", + "x-example": "+12065550100", + "format": "phone" + }, + "customerId": { + "type": "string", + "description": "Telesign customer ID.", + "default": "", + "x-example": "<CUSTOMER_ID>" + }, + "apiKey": { + "type": "string", + "description": "Telesign API key.", + "default": "", + "x-example": "<API_KEY>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } } - ] - }, - "post": { - "summary": "Create execution", - "operationId": "functionsCreateExecution", + } + } + }, + "\/messaging\/providers\/telesign\/{providerId}": { + "patch": { + "summary": "Update Telesign provider", + "operationId": "messagingUpdateTelesignProvider", "tags": [ - "functions" + "messaging" ], - "description": "Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.", + "description": "Update a Telesign provider by its unique ID.", "responses": { - "201": { - "description": "Execution", + "200": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/execution" + "$ref": "#\/components\/schemas\/provider" } } } @@ -33963,25 +38033,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "createExecution", - "group": "executions", + "method": "updateTelesignProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/create-execution.md", + "demo": "messaging\/update-telesign-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": [ - "executions.write", - "execution.write" - ], + "scope": "providers.write", "platforms": [ "console", - "client", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md", "auth": { "Project": [] } @@ -33989,19 +38056,17 @@ "security": [ { "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Key": [] } ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } @@ -34012,60 +38077,35 @@ "schema": { "type": "object", "properties": { - "body": { + "name": { "type": "string", - "description": "HTTP body of execution. Default value is empty string.", + "description": "Provider name.", "default": "", - "x-example": "<BODY>" + "x-example": "<NAME>" }, - "async": { + "enabled": { "type": "boolean", - "description": "Execute code in the background. Default value is false.", - "default": false, - "x-example": false + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true }, - "path": { + "customerId": { "type": "string", - "description": "HTTP path of execution. Path can include query params. Default value is \/", - "default": "\/", - "x-example": "<PATH>" + "description": "Telesign customer ID.", + "default": "", + "x-example": "<CUSTOMER_ID>" }, - "method": { + "apiKey": { "type": "string", - "description": "HTTP method of execution. Default value is POST.", - "default": "POST", - "x-example": "GET", - "enum": [ - "GET", - "POST", - "PUT", - "PATCH", - "DELETE", - "OPTIONS", - "HEAD" - ], - "x-enum-name": "ExecutionMethod", - "x-enum-keys": [ - "GET", - "POST", - "PUT", - "PATCH", - "DELETE", - "OPTIONS", - "HEAD" - ] - }, - "headers": { - "type": "object", - "description": "HTTP headers of execution. Defaults to empty.", - "default": [], - "x-example": "{}" + "description": "Telesign API key.", + "default": "", + "x-example": "<API_KEY>" }, - "scheduledAt": { + "from": { "type": "string", - "description": "Scheduled execution time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future with precision in minutes.", - "x-example": "<SCHEDULED_AT>", - "x-nullable": true + "description": "Sender number.", + "default": "", + "x-example": "<FROM>" } } } @@ -34074,21 +38114,21 @@ } } }, - "\/functions\/{functionId}\/executions\/{executionId}": { - "get": { - "summary": "Get execution", - "operationId": "functionsGetExecution", + "\/messaging\/providers\/textmagic": { + "post": { + "summary": "Create Textmagic provider", + "operationId": "messagingCreateTextmagicProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a function execution log by its unique ID.", + "description": "Create a new Textmagic provider.", "responses": { - "200": { - "description": "Execution", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/execution" + "$ref": "#\/components\/schemas\/provider" } } } @@ -34096,92 +38136,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "getExecution", - "group": "executions", - "cookies": false, - "type": "", - "demo": "functions\/get-execution.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": [ - "executions.read", - "execution.read" - ], - "platforms": [ - "console", - "client", - "server" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "executionId", - "description": "Execution ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<EXECUTION_ID>" - }, - "in": "path" - } - ] - }, - "delete": { - "summary": "Delete execution", - "operationId": "functionsDeleteExecution", - "tags": [ - "functions" - ], - "description": "Delete a function execution by its unique ID.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteExecution", - "group": "executions", + "method": "createTextmagicProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/delete-execution.md", + "demo": "messaging\/create-textmagic-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": [ - "executions.write", - "execution.write" - ], + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md", "auth": { "Project": [] } @@ -34192,45 +38162,76 @@ "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "executionId", - "description": "Execution ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<EXECUTION_ID>" - }, - "in": "path" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "from": { + "type": "string", + "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", + "default": "", + "x-example": "+12065550100", + "format": "phone" + }, + "username": { + "type": "string", + "description": "Textmagic username.", + "default": "", + "x-example": "<USERNAME>" + }, + "apiKey": { + "type": "string", + "description": "Textmagic apiKey.", + "default": "", + "x-example": "<API_KEY>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } } - ] + } } }, - "\/functions\/{functionId}\/usage": { - "get": { - "summary": "Get function usage", - "operationId": "functionsGetUsage", + "\/messaging\/providers\/textmagic\/{providerId}": { + "patch": { + "summary": "Update Textmagic provider", + "operationId": "messagingUpdateTextmagicProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get usage metrics and statistics for a for a specific function. View statistics including total deployments, builds, executions, storage usage, and compute time. The response includes both current totals and historical data for each metric. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, defaults to 30 days.", + "description": "Update a Textmagic provider by its unique ID.", "responses": { "200": { - "description": "UsageFunction", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageFunction" + "$ref": "#\/components\/schemas\/provider" } } } @@ -34238,80 +38239,102 @@ }, "deprecated": false, "x-appwrite": { - "method": "getUsage", - "group": null, + "method": "updateTextmagicProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/get-usage.md", + "demo": "messaging\/update-textmagic-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "providers.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" - }, - { - "name": "range", - "description": "Date range.", - "required": false, - "schema": { - "type": "string", - "x-example": "24h", - "enum": [ - "24h", - "30d", - "90d" - ], - "x-enum-name": "UsageRange", - "x-enum-keys": [ - "Twenty Four Hours", - "Thirty Days", - "Ninety Days" - ], - "default": "30d" - }, - "in": "query" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Provider name.", + "default": "", + "x-example": "<NAME>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + }, + "username": { + "type": "string", + "description": "Textmagic username.", + "default": "", + "x-example": "<USERNAME>" + }, + "apiKey": { + "type": "string", + "description": "Textmagic apiKey.", + "default": "", + "x-example": "<API_KEY>" + }, + "from": { + "type": "string", + "description": "Sender number.", + "default": "", + "x-example": "<FROM>" + } + } + } + } + } + } } }, - "\/functions\/{functionId}\/variables": { - "get": { - "summary": "List variables", - "operationId": "functionsListVariables", + "\/messaging\/providers\/twilio": { + "post": { + "summary": "Create Twilio provider", + "operationId": "messagingCreateTwilioProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a list of all variables of a specific function.", + "description": "Create a new Twilio provider.", "responses": { - "200": { - "description": "Variables List", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variableList" + "$ref": "#\/components\/schemas\/provider" } } } @@ -34319,21 +38342,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "listVariables", - "group": "variables", + "method": "createTwilioProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/list-variables.md", + "demo": "messaging\/create-twilio-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md", "auth": { "Project": [] } @@ -34344,57 +38368,76 @@ "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, resourceType, resourceId, secret", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "from": { + "type": "string", + "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", + "default": "", + "x-example": "+12065550100", + "format": "phone" + }, + "accountSid": { + "type": "string", + "description": "Twilio account secret ID.", + "default": "", + "x-example": "<ACCOUNT_SID>" + }, + "authToken": { + "type": "string", + "description": "Twilio authentication token.", + "default": "", + "x-example": "<AUTH_TOKEN>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } } - ] - }, - "post": { - "summary": "Create variable", - "operationId": "functionsCreateVariable", + } + } + }, + "\/messaging\/providers\/twilio\/{providerId}": { + "patch": { + "summary": "Update Twilio provider", + "operationId": "messagingUpdateTwilioProvider", "tags": [ - "functions" + "messaging" ], - "description": "Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.", + "description": "Update a Twilio provider by its unique ID.", "responses": { - "201": { - "description": "Variable", + "200": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variable" + "$ref": "#\/components\/schemas\/provider" } } } @@ -34402,21 +38445,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "createVariable", - "group": "variables", + "method": "updateTwilioProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/create-variable.md", + "demo": "messaging\/update-twilio-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md", "auth": { "Project": [] } @@ -34429,12 +38473,12 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function unique ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } @@ -34445,57 +38489,58 @@ "schema": { "type": "object", "properties": { - "variableId": { + "name": { "type": "string", - "description": "Variable 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.", - "x-example": "<VARIABLE_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Provider name.", + "default": "", + "x-example": "<NAME>" }, - "key": { + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + }, + "accountSid": { "type": "string", - "description": "Variable key. Max length: 255 chars.", - "x-example": "<KEY>" + "description": "Twilio account secret ID.", + "default": "", + "x-example": "<ACCOUNT_SID>" }, - "value": { + "authToken": { "type": "string", - "description": "Variable value. Max length: 8192 chars.", - "x-example": "<VALUE>" + "description": "Twilio authentication token.", + "default": "", + "x-example": "<AUTH_TOKEN>" }, - "secret": { - "type": "boolean", - "description": "Secret variables can be updated or deleted, but only functions can read them during build and runtime.", - "default": true, - "x-example": false + "from": { + "type": "string", + "description": "Sender number.", + "default": "", + "x-example": "<FROM>" } - }, - "required": [ - "variableId", - "key", - "value" - ] + } } } } } } }, - "\/functions\/{functionId}\/variables\/{variableId}": { - "get": { - "summary": "Get variable", - "operationId": "functionsGetVariable", + "\/messaging\/providers\/vonage": { + "post": { + "summary": "Create Vonage provider", + "operationId": "messagingCreateVonageProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a variable by its unique ID.", + "description": "Create a new Vonage provider.", "responses": { - "200": { - "description": "Variable", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variable" + "$ref": "#\/components\/schemas\/provider" } } } @@ -34503,21 +38548,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "getVariable", - "group": "variables", + "method": "createVonageProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/get-variable.md", + "demo": "messaging\/create-vonage-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md", "auth": { "Project": [] } @@ -34528,43 +38574,76 @@ "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "variableId", - "description": "Variable unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<VARIABLE_ID>" - }, - "in": "path" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "providerId": { + "type": "string", + "description": "Provider 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.", + "x-example": "<PROVIDER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" + }, + "from": { + "type": "string", + "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", + "default": "", + "x-example": "+12065550100", + "format": "phone" + }, + "apiKey": { + "type": "string", + "description": "Vonage API key.", + "default": "", + "x-example": "<API_KEY>" + }, + "apiSecret": { + "type": "string", + "description": "Vonage API secret.", + "default": "", + "x-example": "<API_SECRET>" + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } } - ] - }, - "put": { - "summary": "Update variable", - "operationId": "functionsUpdateVariable", + } + } + }, + "\/messaging\/providers\/vonage\/{providerId}": { + "patch": { + "summary": "Update Vonage provider", + "operationId": "messagingUpdateVonageProvider", "tags": [ - "functions" + "messaging" ], - "description": "Update variable by its unique ID.", + "description": "Update a Vonage provider by its unique ID.", "responses": { "200": { - "description": "Variable", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variable" + "$ref": "#\/components\/schemas\/provider" } } } @@ -34572,21 +38651,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateVariable", - "group": "variables", + "method": "updateVonageProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/update-variable.md", + "demo": "messaging\/update-vonage-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md", "auth": { "Project": [] } @@ -34599,22 +38679,12 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "variableId", - "description": "Variable unique ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<VARIABLE_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } @@ -34625,59 +38695,81 @@ "schema": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "Variable key. Max length: 255 chars.", - "x-example": "<KEY>", - "x-nullable": true - }, - "value": { + "name": { "type": "string", - "description": "Variable value. Max length: 8192 chars.", - "x-example": "<VALUE>", - "x-nullable": true + "description": "Provider name.", + "default": "", + "x-example": "<NAME>" }, - "secret": { + "enabled": { "type": "boolean", - "description": "Secret variables can be updated or deleted, but only functions can read them during build and runtime.", + "description": "Set as enabled.", "x-example": false, "x-nullable": true + }, + "apiKey": { + "type": "string", + "description": "Vonage API key.", + "default": "", + "x-example": "<API_KEY>" + }, + "apiSecret": { + "type": "string", + "description": "Vonage API secret.", + "default": "", + "x-example": "<API_SECRET>" + }, + "from": { + "type": "string", + "description": "Sender number.", + "default": "", + "x-example": "<FROM>" } } } } } } - }, - "delete": { - "summary": "Delete variable", - "operationId": "functionsDeleteVariable", + } + }, + "\/messaging\/providers\/{providerId}": { + "get": { + "summary": "Get provider", + "operationId": "messagingGetProvider", "tags": [ - "functions" + "messaging" ], - "description": "Delete a variable by its unique ID.", + "description": "Get a provider by its unique ID.\n", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteVariable", - "group": "variables", + "method": "getProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/delete-variable.md", + "demo": "messaging\/get-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "providers.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md", "auth": { "Project": [] } @@ -34690,67 +38782,47 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "variableId", - "description": "Variable unique ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<VARIABLE_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } ] - } - }, - "\/graphql": { - "post": { - "summary": "GraphQL endpoint", - "operationId": "graphqlQuery", + }, + "delete": { + "summary": "Delete provider", + "operationId": "messagingDeleteProvider", "tags": [ - "graphql" + "messaging" ], - "description": "Execute a GraphQL mutation.", + "description": "Delete a provider by its unique ID.", "responses": { - "200": { - "description": "Any", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/any" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "query", - "group": "graphql", + "method": "deleteProvider", + "group": "providers", "cookies": false, - "type": "graphql", - "demo": "graphql\/query.md", - "rate-limit": 60, - "rate-time": 60, + "type": "", + "demo": "messaging\/delete-provider.md", + "rate-limit": 0, + "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "graphql", + "scope": "providers.write", "platforms": [ "console", - "server", - "client" + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md", "auth": { "Project": [] } @@ -34758,121 +38830,38 @@ "security": [ { "Project": [], - "Key": [], - "Session": [], - "JWT": [] - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "query": { - "type": "object", - "description": "The query or queries to execute.", - "default": {}, - "x-example": "{}" - } - }, - "required": [ - "query" - ] - } - } + "Key": [] } - } - } - }, - "\/graphql\/mutation": { - "post": { - "summary": "GraphQL endpoint", - "operationId": "graphqlMutation", - "tags": [ - "graphql" ], - "description": "Execute a GraphQL mutation.", - "responses": { - "200": { - "description": "Any", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/any" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "mutation", - "group": "graphql", - "cookies": false, - "type": "graphql", - "demo": "graphql\/mutation.md", - "rate-limit": 60, - "rate-time": 60, - "rate-key": "url:{url},ip:{ip}", - "scope": "graphql", - "platforms": [ - "console", - "server", - "client" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md", - "auth": { - "Project": [] - } - }, - "security": [ + "parameters": [ { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "query": { - "type": "object", - "description": "The query or queries to execute.", - "default": {}, - "x-example": "{}" - } - }, - "required": [ - "query" - ] - } - } + "name": "providerId", + "description": "Provider ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROVIDER_ID>" + }, + "in": "path" } - } + ] } }, - "\/health": { + "\/messaging\/topics": { "get": { - "summary": "Get HTTP", - "operationId": "healthGet", + "summary": "List topics", + "operationId": "messagingListTopics", "tags": [ - "health" + "messaging" ], - "description": "Check the Appwrite HTTP server is up and responsive.", + "description": "Get a list of all topics from the current Appwrite project.", "responses": { "200": { - "description": "Health Status", + "description": "Topic list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatus" + "$ref": "#\/components\/schemas\/topicList" } } } @@ -34880,22 +38869,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "get", - "group": "health", + "method": "listTopics", + "group": "topics", "cookies": false, "type": "", - "demo": "health\/get.md", + "demo": "messaging\/list-topics.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "topics.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md", "auth": { "Project": [] } @@ -34905,24 +38894,59 @@ "Project": [], "Key": [] } + ], + "parameters": [ + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, + "schema": { + "type": "string", + "x-example": "<SEARCH>", + "default": "" + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + } ] - } - }, - "\/health\/anti-virus": { - "get": { - "summary": "Get antivirus", - "operationId": "healthGetAntivirus", + }, + "post": { + "summary": "Create topic", + "operationId": "messagingCreateTopic", "tags": [ - "health" + "messaging" ], - "description": "Check the Appwrite Antivirus server is up and connection is successful.", + "description": "Create a new topic.", "responses": { - "200": { - "description": "Health Antivirus", + "201": { + "description": "Topic", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthAntivirus" + "$ref": "#\/components\/schemas\/topic" } } } @@ -34930,22 +38954,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAntivirus", - "group": "health", + "method": "createTopic", + "group": "topics", "cookies": false, "type": "", - "demo": "health\/get-antivirus.md", + "demo": "messaging\/create-topic.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "topics.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md", "auth": { "Project": [] } @@ -34955,24 +38979,63 @@ "Project": [], "Key": [] } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "topicId": { + "type": "string", + "description": "Topic ID. Choose a custom Topic ID or a new Topic ID.", + "x-example": "<TOPIC_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Topic Name.", + "x-example": "<NAME>" + }, + "subscribe": { + "type": "array", + "description": "An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", + "default": [ + "users" + ], + "x-example": "[\"any\"]", + "items": { + "type": "string" + } + } + }, + "required": [ + "topicId", + "name" + ] + } + } + } + } } }, - "\/health\/audits-db": { + "\/messaging\/topics\/{topicId}": { "get": { - "summary": "Get audits DB", - "operationId": "healthGetAuditsDB", + "summary": "Get topic", + "operationId": "messagingGetTopic", "tags": [ - "health" + "messaging" ], - "description": "Check the database that backs the audit and activity store. When the connection is reachable the endpoint returns a passing status with its response time.\n", + "description": "Get a topic by its unique ID.\n", "responses": { "200": { - "description": "Status List", + "description": "Topic", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatusList" + "$ref": "#\/components\/schemas\/topic" } } } @@ -34980,22 +39043,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAuditsDB", - "group": null, + "method": "getTopic", + "group": "topics", "cookies": false, "type": "", - "demo": "health\/get-audits-db.md", + "demo": "messaging\/get-topic.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "topics.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-audits-db.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md", "auth": { "Project": [] } @@ -35005,24 +39068,34 @@ "Project": [], "Key": [] } + ], + "parameters": [ + { + "name": "topicId", + "description": "Topic ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<TOPIC_ID>" + }, + "in": "path" + } ] - } - }, - "\/health\/cache": { - "get": { - "summary": "Get cache", - "operationId": "healthGetCache", + }, + "patch": { + "summary": "Update topic", + "operationId": "messagingUpdateTopic", "tags": [ - "health" + "messaging" ], - "description": "Check the Appwrite in-memory cache servers are up and connection is successful.", + "description": "Update a topic by its unique ID.\n", "responses": { "200": { - "description": "Status List", + "description": "Topic", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatusList" + "$ref": "#\/components\/schemas\/topic" } } } @@ -35030,22 +39103,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "getCache", - "group": "health", + "method": "updateTopic", + "group": "topics", "cookies": false, "type": "", - "demo": "health\/get-cache.md", + "demo": "messaging\/update-topic.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "topics.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md", "auth": { "Project": [] } @@ -35055,47 +39128,76 @@ "Project": [], "Key": [] } - ] - } - }, - "\/health\/certificate": { - "get": { - "summary": "Get the SSL certificate for a domain", - "operationId": "healthGetCertificate", - "tags": [ - "health" ], - "description": "Get the SSL certificate for a domain", - "responses": { - "200": { - "description": "Health Certificate", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthCertificate" + "parameters": [ + { + "name": "topicId", + "description": "Topic ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<TOPIC_ID>" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Topic Name.", + "x-example": "<NAME>", + "x-nullable": true + }, + "subscribe": { + "type": "array", + "description": "An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", + "x-example": "[\"any\"]", + "items": { + "type": "string" + }, + "x-nullable": true + } } } } } + } + }, + "delete": { + "summary": "Delete topic", + "operationId": "messagingDeleteTopic", + "tags": [ + "messaging" + ], + "description": "Delete a topic by its unique ID.", + "responses": { + "204": { + "description": "No content" + } }, "deprecated": false, "x-appwrite": { - "method": "getCertificate", - "group": "health", + "method": "deleteTopic", + "group": "topics", "cookies": false, "type": "", - "demo": "health\/get-certificate.md", + "demo": "messaging\/delete-topic.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "topics.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md", "auth": { "Project": [] } @@ -35108,32 +39210,33 @@ ], "parameters": [ { - "name": "domain", - "description": "string", - "required": false, + "name": "topicId", + "description": "Topic ID.", + "required": true, "schema": { - "type": "string" + "type": "string", + "x-example": "<TOPIC_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/health\/console-pausing": { + "\/messaging\/topics\/{topicId}\/subscribers": { "get": { - "summary": "Get console pausing health", - "operationId": "healthGetConsolePausing", + "summary": "List subscribers", + "operationId": "messagingListSubscribers", "tags": [ - "health" + "messaging" ], - "description": "Get console pausing health status. Monitors projects approaching the pause threshold to detect potential issues with console access tracking.\n", + "description": "Get a list of all subscribers from the current Appwrite project.", "responses": { "200": { - "description": "Health Status", + "description": "Subscriber list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatus" + "$ref": "#\/components\/schemas\/subscriberList" } } } @@ -35141,22 +39244,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "getConsolePausing", - "group": null, + "method": "listSubscribers", + "group": "subscribers", "cookies": false, "type": "", - "demo": "health\/get-console-pausing.md", + "demo": "messaging\/list-subscribers.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "subscribers.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-console-pausing.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md", "auth": { "Project": [] } @@ -35169,45 +39272,66 @@ ], "parameters": [ { - "name": "threshold", - "description": "Percentage threshold of projects approaching pause. When hit (equal or higher), endpoint returns server error. Default value is 10.", + "name": "topicId", + "description": "Topic ID. The topic ID subscribed to.", + "required": true, + "schema": { + "type": "string", + "x-example": "<TOPIC_ID>" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: targetId, topicId, userId, providerType", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 10 + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, { - "name": "inactivityDays", - "description": "Number of days of inactivity before a project is paused. Should match the plan's projectInactivityDays setting. Default value is 7.", + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 7 + "type": "string", + "x-example": "<SEARCH>", + "default": "" + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true }, "in": "query" } ] - } - }, - "\/health\/db": { - "get": { - "summary": "Get DB", - "operationId": "healthGetDB", + }, + "post": { + "summary": "Create subscriber", + "operationId": "messagingCreateSubscriber", "tags": [ - "health" + "messaging" ], - "description": "Check the Appwrite database servers are up and connection is successful.", + "description": "Create a new subscriber.", "responses": { - "200": { - "description": "Status List", + "201": { + "description": "Subscriber", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatusList" + "$ref": "#\/components\/schemas\/subscriber" } } } @@ -35215,22 +39339,23 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDB", - "group": "health", + "method": "createSubscriber", + "group": "subscribers", "cookies": false, "type": "", - "demo": "health\/get-db.md", + "demo": "messaging\/create-subscriber.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "subscribers.write", "platforms": [ - "console", - "server" + "server", + "client", + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md", "auth": { "Project": [] } @@ -35238,76 +39363,68 @@ "security": [ { "Project": [], + "JWT": [], + "Session": [], "Key": [] } - ] - } - }, - "\/health\/pubsub": { - "get": { - "summary": "Get pubsub", - "operationId": "healthGetPubSub", - "tags": [ - "health" ], - "description": "Check the Appwrite pub-sub servers are up and connection is successful.", - "responses": { - "200": { - "description": "Status List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthStatusList" - } + "parameters": [ + { + "name": "topicId", + "description": "Topic ID. The topic ID to subscribe to.", + "required": true, + "schema": { + "type": "string", + "x-example": "<TOPIC_ID>" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "subscriberId": { + "type": "string", + "description": "Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.", + "x-example": "<SUBSCRIBER_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "targetId": { + "type": "string", + "description": "Target ID. The target ID to link to the specified Topic ID.", + "x-example": "<TARGET_ID>" + } + }, + "required": [ + "subscriberId", + "targetId" + ] } } } - }, - "deprecated": false, - "x-appwrite": { - "method": "getPubSub", - "group": "health", - "cookies": false, - "type": "", - "demo": "health\/get-pub-sub.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ] + } } }, - "\/health\/queue\/audits": { + "\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}": { "get": { - "summary": "Get audits queue", - "operationId": "healthGetQueueAudits", + "summary": "Get subscriber", + "operationId": "messagingGetSubscriber", "tags": [ - "health" + "messaging" ], - "description": "Get the number of audit logs that are waiting to be processed in the Appwrite internal queue server.\n", + "description": "Get a subscriber by its unique ID.\n", "responses": { "200": { - "description": "Health Queue", + "description": "Subscriber", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/subscriber" } } } @@ -35315,22 +39432,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueAudits", - "group": "queue", + "method": "getSubscriber", + "group": "subscribers", "cookies": false, "type": "", - "demo": "health\/get-queue-audits.md", + "demo": "messaging\/get-subscriber.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "subscribers.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-audits.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md", "auth": { "Project": [] } @@ -35343,57 +39460,58 @@ ], "parameters": [ { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, + "name": "topicId", + "description": "Topic ID. The topic ID subscribed to.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<TOPIC_ID>" }, - "in": "query" + "in": "path" + }, + { + "name": "subscriberId", + "description": "Subscriber ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<SUBSCRIBER_ID>" + }, + "in": "path" } ] - } - }, - "\/health\/queue\/billing-project-aggregation": { - "get": { - "summary": "Get billing project aggregation queue", - "operationId": "healthGetQueueBillingProjectAggregation", + }, + "delete": { + "summary": "Delete subscriber", + "operationId": "messagingDeleteSubscriber", "tags": [ - "health" + "messaging" ], - "description": "Get billing project aggregation queue.", + "description": "Delete a subscriber by its unique ID.", "responses": { - "200": { - "description": "Health Queue", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthQueue" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "getQueueBillingProjectAggregation", - "group": null, + "method": "deleteSubscriber", + "group": "subscribers", "cookies": false, "type": "", - "demo": "health\/get-queue-billing-project-aggregation.md", + "demo": "messaging\/delete-subscriber.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "subscribers.write", "platforms": [ - "console", - "server" + "server", + "client", + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-queue-billing-project-aggregation.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md", "auth": { "Project": [] } @@ -35401,39 +39519,50 @@ "security": [ { "Project": [], + "JWT": [], + "Session": [], "Key": [] } ], "parameters": [ { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, + "name": "topicId", + "description": "Topic ID. The topic ID subscribed to.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 10000 + "type": "string", + "x-example": "<TOPIC_ID>" }, - "in": "query" + "in": "path" + }, + { + "name": "subscriberId", + "description": "Subscriber ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<SUBSCRIBER_ID>" + }, + "in": "path" } ] } }, - "\/health\/queue\/billing-team-aggregation": { + "\/migrations": { "get": { - "summary": "Get billing team aggregation queue", - "operationId": "healthGetQueueBillingTeamAggregation", + "summary": "List migrations", + "operationId": "migrationsList", "tags": [ - "health" + "migrations" ], - "description": "Get billing team aggregation queue.", + "description": "List all migrations in the current project. This endpoint returns a list of all migrations including their status, progress, and any errors that occurred during the migration process.", "responses": { "200": { - "description": "Health Queue", + "description": "Migrations List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migrationList" } } } @@ -35441,62 +39570,84 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueBillingTeamAggregation", + "method": "list", "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-billing-team-aggregation.md", + "demo": "migrations\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-queue-billing-team-aggregation.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, destination, resources, resourceId, resourceType, statusCounters, resourceData, errors", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 10000 + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, + "schema": { + "type": "string", + "x-example": "<SEARCH>", + "default": "" + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true }, "in": "query" } ] } }, - "\/health\/queue\/builds": { - "get": { - "summary": "Get builds queue", - "operationId": "healthGetQueueBuilds", + "\/migrations\/appwrite": { + "post": { + "summary": "Create Appwrite migration", + "operationId": "migrationsCreateAppwriteMigration", "tags": [ - "health" + "migrations" ], - "description": "Get the number of builds that are waiting to be processed in the Appwrite internal queue server.", + "description": "Migrate data from another Appwrite project to your current project. This endpoint allows you to migrate resources like databases, collections, documents, users, and files from an existing Appwrite project. ", "responses": { - "200": { - "description": "Health Queue", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -35504,62 +39655,188 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueBuilds", - "group": "queue", + "method": "createAppwriteMigration", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-builds.md", + "demo": "migrations\/create-appwrite-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "parameters": [ - { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 5000 - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "resources": { + "type": "array", + "description": "List of resources to migrate", + "x-example": null, + "items": { + "type": "string", + "enum": [ + "user", + "team", + "membership", + "auth-methods", + "policies", + "oauth2-provider", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "documentsdb", + "vectorsdb", + "bucket", + "file", + "function", + "deployment", + "environment-variable", + "provider", + "topic", + "subscriber", + "message", + "site", + "site-deployment", + "site-variable", + "platform", + "api-key", + "webhook", + "smtp", + "backup-policy", + "project-variable", + "project-protocols", + "project-labels", + "project-services", + "project-email-template", + "rule" + ], + "x-enum-name": "AppwriteMigrationResource", + "x-enum-keys": [ + "user", + "team", + "membership", + "auth-methods", + "policies", + "oauth2-provider", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "documentsdb", + "vectorsdb", + "bucket", + "file", + "function", + "deployment", + "environment-variable", + "provider", + "topic", + "subscriber", + "message", + "site", + "site-deployment", + "site-variable", + "platform", + "api-key", + "webhook", + "smtp", + "backup-policy", + "project-variable", + "project-protocols", + "project-labels", + "project-services", + "project-email-template", + "rule" + ] + } + }, + "endpoint": { + "type": "string", + "description": "Source Appwrite endpoint", + "x-example": "https:\/\/example.com", + "format": "url" + }, + "projectId": { + "type": "string", + "description": "Source Project ID", + "x-example": "<PROJECT_ID>" + }, + "apiKey": { + "type": "string", + "description": "Source API Key", + "x-example": "<API_KEY>" + }, + "onDuplicate": { + "type": "string", + "description": "Behavior when a row with an existing $id is encountered. \"fail\" (default): abort on first conflict. \"skip\": silently ignore. \"overwrite\": replace existing row.", + "default": "fail", + "x-example": "fail", + "enum": [ + "fail", + "skip", + "overwrite" + ], + "x-enum-name": "OnDuplicate", + "x-enum-keys": [ + "fail", + "skip", + "overwrite" + ] + } + }, + "required": [ + "resources", + "endpoint", + "projectId", + "apiKey" + ] + } + } } - ] + } } }, - "\/health\/queue\/certificates": { + "\/migrations\/appwrite\/report": { "get": { - "summary": "Get certificates queue", - "operationId": "healthGetQueueCertificates", + "summary": "Get Appwrite migration report", + "operationId": "migrationsGetAppwriteReport", "tags": [ - "health" + "migrations" ], - "description": "Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.", + "description": "Generate a report of the data in an Appwrite project before migrating. This endpoint analyzes the source project and returns information about the resources that can be migrated.", "responses": { "200": { - "description": "Health Queue", + "description": "Migration Report", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migrationReport" } } } @@ -35567,62 +39844,175 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueCertificates", - "group": "queue", + "method": "getAppwriteReport", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-certificates.md", + "demo": "migrations\/get-appwrite-report.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, + "name": "resources", + "description": "List of resources to migrate", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "array", + "items": { + "type": "string", + "enum": [ + "user", + "team", + "membership", + "auth-methods", + "policies", + "oauth2-provider", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "documentsdb", + "vectorsdb", + "bucket", + "file", + "function", + "deployment", + "environment-variable", + "provider", + "topic", + "subscriber", + "message", + "site", + "site-deployment", + "site-variable", + "platform", + "api-key", + "webhook", + "smtp", + "backup-policy", + "project-variable", + "project-protocols", + "project-labels", + "project-services", + "project-email-template", + "rule" + ], + "x-enum-name": "AppwriteMigrationResource", + "x-enum-keys": [ + "user", + "team", + "membership", + "auth-methods", + "policies", + "oauth2-provider", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "documentsdb", + "vectorsdb", + "bucket", + "file", + "function", + "deployment", + "environment-variable", + "provider", + "topic", + "subscriber", + "message", + "site", + "site-deployment", + "site-variable", + "platform", + "api-key", + "webhook", + "smtp", + "backup-policy", + "project-variable", + "project-protocols", + "project-labels", + "project-services", + "project-email-template", + "rule" + ] + } + }, + "in": "query" + }, + { + "name": "endpoint", + "description": "Source's Appwrite Endpoint", + "required": true, + "schema": { + "type": "string", + "format": "url", + "x-example": "https:\/\/example.com" + }, + "in": "query" + }, + { + "name": "projectID", + "description": "Source's Project ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "query" + }, + { + "name": "key", + "description": "Source's API Key", + "required": true, + "schema": { + "type": "string", + "x-example": "<KEY>" }, "in": "query" } ] } }, - "\/health\/queue\/databases": { - "get": { - "summary": "Get databases queue", - "operationId": "healthGetQueueDatabases", + "\/migrations\/csv\/exports": { + "post": { + "summary": "Export documents to CSV", + "operationId": "migrationsCreateCSVExport", "tags": [ - "health" + "migrations" ], - "description": "Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.", + "description": "Export documents to a CSV file from your Appwrite database. This endpoint allows you to export documents to a CSV file stored in a secure internal bucket. You'll receive an email with a download link when the export is complete.", "responses": { - "200": { - "description": "Health Queue", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -35630,73 +40020,120 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueDatabases", - "group": "queue", + "method": "createCSVExport", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-databases.md", + "demo": "migrations\/create-csv-export.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-csv-export.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "parameters": [ - { - "name": "name", - "description": "Queue name for which to check the queue size", - "required": false, - "schema": { - "type": "string", - "x-example": "<NAME>", - "default": "database_db_main" - }, - "in": "query" - }, - { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 5000 - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "resourceId": { + "type": "string", + "description": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database to export.", + "x-example": "<ID1:ID2>" + }, + "filename": { + "type": "string", + "description": "The name of the file to be created for the export, excluding the .csv extension.", + "x-example": "<FILENAME>" + }, + "columns": { + "type": "array", + "description": "List of attributes to export. If empty, all attributes will be exported. You can use the `*` wildcard to export all attributes from the collection.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "queries": { + "type": "array", + "description": "Array of query strings generated using the Query class provided by the SDK to filter documents to export. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "delimiter": { + "type": "string", + "description": "The character that separates each column value. Default is comma.", + "default": ",", + "x-example": "<DELIMITER>" + }, + "enclosure": { + "type": "string", + "description": "The character that encloses each column value. Default is double quotes.", + "default": "\"", + "x-example": "<ENCLOSURE>" + }, + "escape": { + "type": "string", + "description": "The escape character for the enclosure character. Default is double quotes.", + "default": "\"", + "x-example": "<ESCAPE>" + }, + "header": { + "type": "boolean", + "description": "Whether to include the header row with column names. Default is true.", + "default": true, + "x-example": false + }, + "notify": { + "type": "boolean", + "description": "Set to true to receive an email when the export is complete. Default is true.", + "default": true, + "x-example": false + } + }, + "required": [ + "resourceId", + "filename" + ] + } + } } - ] + } } }, - "\/health\/queue\/deletes": { - "get": { - "summary": "Get deletes queue", - "operationId": "healthGetQueueDeletes", + "\/migrations\/csv\/imports": { + "post": { + "summary": "Import documents from a CSV", + "operationId": "migrationsCreateCSVImport", "tags": [ - "health" + "migrations" ], - "description": "Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.", + "description": "Import documents from a CSV file into your Appwrite database. This endpoint allows you to import documents from a CSV file uploaded to Appwrite Storage bucket.", "responses": { - "200": { - "description": "Health Queue", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -35704,62 +40141,101 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueDeletes", - "group": "queue", + "method": "createCSVImport", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-deletes.md", + "demo": "migrations\/create-csv-import.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-csv-import.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "parameters": [ - { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 5000 - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "bucketId": { + "type": "string", + "description": "Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).", + "x-example": "<BUCKET_ID>" + }, + "fileId": { + "type": "string", + "description": "File ID.", + "x-example": "<FILE_ID>" + }, + "resourceId": { + "type": "string", + "description": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database.", + "x-example": "<ID1:ID2>" + }, + "internalFile": { + "type": "boolean", + "description": "Is the file stored in an internal bucket?", + "default": false, + "x-example": false + }, + "onDuplicate": { + "type": "string", + "description": "Behavior when a row with an existing $id is encountered. \"fail\" (default): abort on first conflict. \"skip\": silently ignore. \"overwrite\": replace existing row.", + "default": "fail", + "x-example": "fail", + "enum": [ + "fail", + "skip", + "overwrite" + ], + "x-enum-name": "OnDuplicate", + "x-enum-keys": [ + "fail", + "skip", + "overwrite" + ] + } + }, + "required": [ + "bucketId", + "fileId", + "resourceId" + ] + } + } } - ] + } } }, - "\/health\/queue\/failed\/{name}": { - "get": { - "summary": "Get number of failed queue jobs", - "operationId": "healthGetFailedJobs", + "\/migrations\/firebase": { + "post": { + "summary": "Create Firebase migration", + "operationId": "migrationsCreateFirebaseMigration", "tags": [ - "health" + "migrations" ], - "description": "Returns the amount of failed jobs in a given queue.\n", + "description": "Migrate data from a Firebase project to your Appwrite project. This endpoint allows you to migrate resources like authentication and other supported services from a Firebase project. ", "responses": { - "200": { - "description": "Health Queue", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -35767,103 +40243,100 @@ }, "deprecated": false, "x-appwrite": { - "method": "getFailedJobs", - "group": "queue", + "method": "createFirebaseMigration", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-failed-jobs.md", + "demo": "migrations\/create-firebase-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "parameters": [ - { - "name": "name", - "description": "The name of the queue", - "required": true, - "schema": { - "type": "string", - "x-example": "v1-database", - "enum": [ - "v1-database", - "v1-deletes", - "v1-audits", - "v1-mails", - "v1-functions", - "v1-stats-resources", - "v1-stats-usage", - "v1-webhooks", - "v1-certificates", - "v1-builds", - "v1-screenshots", - "v1-messaging", - "v1-migrations" - ], - "x-enum-name": "HealthQueueName", - "x-enum-keys": [ - "v1-database", - "v1-deletes", - "v1-audits", - "v1-mails", - "v1-functions", - "v1-stats-resources", - "v1-stats-usage", - "v1-webhooks", - "v1-certificates", - "v1-builds", - "v1-screenshots", - "v1-messaging", - "v1-migrations" - ] - }, - "in": "path" - }, - { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 5000 - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "resources": { + "type": "array", + "description": "List of resources to migrate", + "x-example": null, + "items": { + "type": "string", + "enum": [ + "user", + "database", + "table", + "column", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ], + "x-enum-name": "FirebaseMigrationResource", + "x-enum-keys": [ + "user", + "database", + "table", + "column", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ] + } + }, + "serviceAccount": { + "type": "string", + "description": "JSON of the Firebase service account credentials", + "x-example": "<SERVICE_ACCOUNT>" + } + }, + "required": [ + "resources", + "serviceAccount" + ] + } + } } - ] + } } }, - "\/health\/queue\/functions": { + "\/migrations\/firebase\/report": { "get": { - "summary": "Get functions queue", - "operationId": "healthGetQueueFunctions", + "summary": "Get Firebase migration report", + "operationId": "migrationsGetFirebaseReport", "tags": [ - "health" + "migrations" ], - "description": "Get the number of function executions that are waiting to be processed in the Appwrite internal queue server.", + "description": "Generate a report of the data in a Firebase project before migrating. This endpoint analyzes the source project and returns information about the resources that can be migrated.", "responses": { "200": { - "description": "Health Queue", + "description": "Migration Report", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migrationReport" } } } @@ -35871,62 +40344,96 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueFunctions", - "group": "queue", + "method": "getFirebaseReport", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-functions.md", + "demo": "migrations\/get-firebase-report.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, + "name": "resources", + "description": "List of resources to migrate", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "array", + "items": { + "type": "string", + "enum": [ + "user", + "database", + "table", + "column", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ], + "x-enum-name": "FirebaseMigrationResource", + "x-enum-keys": [ + "user", + "database", + "table", + "column", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ] + } + }, + "in": "query" + }, + { + "name": "serviceAccount", + "description": "JSON of the Firebase service account credentials", + "required": true, + "schema": { + "type": "string", + "x-example": "<SERVICE_ACCOUNT>" }, "in": "query" } ] } }, - "\/health\/queue\/logs": { - "get": { - "summary": "Get logs queue", - "operationId": "healthGetQueueLogs", + "\/migrations\/json\/exports": { + "post": { + "summary": "Export documents to JSON", + "operationId": "migrationsCreateJSONExport", "tags": [ - "health" + "migrations" ], - "description": "Get the number of logs that are waiting to be processed in the Appwrite internal queue server.", + "description": "Export documents to a JSON file from your Appwrite database. This endpoint allows you to export documents to a JSON file stored in a secure internal bucket. You'll receive an email with a download link when the export is complete.\n", "responses": { - "200": { - "description": "Health Queue", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -35934,62 +40441,96 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueLogs", - "group": "queue", + "method": "createJSONExport", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-logs.md", + "demo": "migrations\/create-json-export.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-json-export.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "parameters": [ - { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 5000 - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "resourceId": { + "type": "string", + "description": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database to export.", + "x-example": "<ID1:ID2>" + }, + "filename": { + "type": "string", + "description": "The name of the file to be created for the export, excluding the .json extension.", + "x-example": "<FILENAME>" + }, + "columns": { + "type": "array", + "description": "List of attributes to export. If empty, all attributes will be exported. You can use the `*` wildcard to export all attributes from the collection.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "queries": { + "type": "array", + "description": "Array of query strings generated using the Query class provided by the SDK to filter documents to export. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "notify": { + "type": "boolean", + "description": "Set to true to receive an email when the export is complete. Default is true.", + "default": true, + "x-example": false + } + }, + "required": [ + "resourceId", + "filename" + ] + } + } } - ] + } } }, - "\/health\/queue\/mails": { - "get": { - "summary": "Get mails queue", - "operationId": "healthGetQueueMails", + "\/migrations\/json\/imports": { + "post": { + "summary": "Import documents from a JSON", + "operationId": "migrationsCreateJSONImport", "tags": [ - "health" + "migrations" ], - "description": "Get the number of mails that are waiting to be processed in the Appwrite internal queue server.", + "description": "Import documents from a JSON file into your Appwrite database. This endpoint allows you to import documents from a JSON file uploaded to Appwrite Storage bucket.\n", "responses": { - "200": { - "description": "Health Queue", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -35997,62 +40538,101 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueMails", - "group": "queue", + "method": "createJSONImport", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-mails.md", + "demo": "migrations\/create-json-import.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-json-import.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "parameters": [ - { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 5000 - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "bucketId": { + "type": "string", + "description": "Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).", + "x-example": "<BUCKET_ID>" + }, + "fileId": { + "type": "string", + "description": "File ID.", + "x-example": "<FILE_ID>" + }, + "resourceId": { + "type": "string", + "description": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database.", + "x-example": "<ID1:ID2>" + }, + "internalFile": { + "type": "boolean", + "description": "Is the file stored in an internal bucket?", + "default": false, + "x-example": false + }, + "onDuplicate": { + "type": "string", + "description": "Behavior when a row with an existing $id is encountered. \"fail\" (default): abort on first conflict. \"skip\": silently ignore. \"overwrite\": replace existing row.", + "default": "fail", + "x-example": "fail", + "enum": [ + "fail", + "skip", + "overwrite" + ], + "x-enum-name": "OnDuplicate", + "x-enum-keys": [ + "fail", + "skip", + "overwrite" + ] + } + }, + "required": [ + "bucketId", + "fileId", + "resourceId" + ] + } + } } - ] + } } }, - "\/health\/queue\/messaging": { - "get": { - "summary": "Get messaging queue", - "operationId": "healthGetQueueMessaging", + "\/migrations\/nhost": { + "post": { + "summary": "Create NHost migration", + "operationId": "migrationsCreateNHostMigration", "tags": [ - "health" + "migrations" ], - "description": "Get the number of messages that are waiting to be processed in the Appwrite internal queue server.", + "description": "Migrate data from an NHost project to your Appwrite project. This endpoint allows you to migrate resources like authentication, databases, and other supported services from an NHost project. ", "responses": { - "200": { - "description": "Health Queue", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -36060,62 +40640,140 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueMessaging", - "group": "queue", + "method": "createNHostMigration", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-messaging.md", + "demo": "migrations\/create-n-host-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "parameters": [ - { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 5000 - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "resources": { + "type": "array", + "description": "List of resources to migrate", + "x-example": null, + "items": { + "type": "string", + "enum": [ + "user", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ], + "x-enum-name": "NHostMigrationResource", + "x-enum-keys": [ + "user", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ] + } + }, + "subdomain": { + "type": "string", + "description": "Source's Subdomain", + "x-example": "<SUBDOMAIN>" + }, + "region": { + "type": "string", + "description": "Source's Region", + "x-example": "<REGION>" + }, + "adminSecret": { + "type": "string", + "description": "Source's Admin Secret", + "x-example": "<ADMIN_SECRET>" + }, + "database": { + "type": "string", + "description": "Source's Database Name", + "x-example": "<DATABASE>" + }, + "username": { + "type": "string", + "description": "Source's Database Username", + "x-example": "<USERNAME>" + }, + "password": { + "type": "string", + "description": "Source's Database Password", + "x-example": "password", + "format": "password" + }, + "port": { + "type": "integer", + "description": "Source's Database Port", + "default": 5432, + "x-example": null, + "format": "int32" + } + }, + "required": [ + "resources", + "subdomain", + "region", + "adminSecret", + "database", + "username", + "password" + ] + } + } } - ] + } } }, - "\/health\/queue\/migrations": { + "\/migrations\/nhost\/report": { "get": { - "summary": "Get migrations queue", - "operationId": "healthGetQueueMigrations", + "summary": "Get NHost migration report", + "operationId": "migrationsGetNHostReport", "tags": [ - "health" + "migrations" ], - "description": "Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.", + "description": "Generate a detailed report of the data in an NHost project before migrating. This endpoint analyzes the source project and returns information about the resources that can be migrated. ", "responses": { "200": { - "description": "Health Queue", + "description": "Migration Report", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migrationReport" } } } @@ -36123,62 +40781,160 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueMigrations", - "group": "queue", + "method": "getNHostReport", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-migrations.md", + "demo": "migrations\/get-n-host-report.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "name": "resources", + "description": "List of resources to migrate.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "user", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ], + "x-enum-name": "NHostMigrationResource", + "x-enum-keys": [ + "user", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ] + } + }, + "in": "query" + }, + { + "name": "subdomain", + "description": "Source's Subdomain.", + "required": true, + "schema": { + "type": "string", + "x-example": "<SUBDOMAIN>" + }, + "in": "query" + }, + { + "name": "region", + "description": "Source's Region.", + "required": true, + "schema": { + "type": "string", + "x-example": "<REGION>" + }, + "in": "query" + }, + { + "name": "adminSecret", + "description": "Source's Admin Secret.", + "required": true, + "schema": { + "type": "string", + "x-example": "<ADMIN_SECRET>" + }, + "in": "query" + }, + { + "name": "database", + "description": "Source's Database Name.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE>" + }, + "in": "query" + }, + { + "name": "username", + "description": "Source's Database Username.", + "required": true, + "schema": { + "type": "string", + "x-example": "<USERNAME>" + }, + "in": "query" + }, + { + "name": "password", + "description": "Source's Database Password.", + "required": true, + "schema": { + "type": "string", + "format": "password", + "x-example": "password" + }, + "in": "query" + }, + { + "name": "port", + "description": "Source's Database Port.", "required": false, "schema": { "type": "integer", "format": "int32", - "default": 5000 + "default": 5432 }, "in": "query" } ] } }, - "\/health\/queue\/region-manager": { - "get": { - "summary": "Get region manager queue", - "operationId": "healthGetQueueRegionManager", + "\/migrations\/supabase": { + "post": { + "summary": "Create Supabase migration", + "operationId": "migrationsCreateSupabaseMigration", "tags": [ - "health" + "migrations" ], - "description": "Get region manager queue.", + "description": "Migrate data from a Supabase project to your Appwrite project. This endpoint allows you to migrate resources like authentication, databases, and other supported services from a Supabase project. ", "responses": { - "200": { - "description": "Health Queue", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -36186,62 +40942,135 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueRegionManager", + "method": "createSupabaseMigration", "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-region-manager.md", + "demo": "migrations\/create-supabase-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-queue-region-manager.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "parameters": [ - { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 100.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 100 - }, - "in": "query" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "resources": { + "type": "array", + "description": "List of resources to migrate", + "x-example": null, + "items": { + "type": "string", + "enum": [ + "user", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ], + "x-enum-name": "SupabaseMigrationResource", + "x-enum-keys": [ + "user", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ] + } + }, + "endpoint": { + "type": "string", + "description": "Source's Supabase Endpoint", + "x-example": "https:\/\/example.com", + "format": "url" + }, + "apiKey": { + "type": "string", + "description": "Source's API Key", + "x-example": "<API_KEY>" + }, + "databaseHost": { + "type": "string", + "description": "Source's Database Host", + "x-example": "<DATABASE_HOST>" + }, + "username": { + "type": "string", + "description": "Source's Database Username", + "x-example": "<USERNAME>" + }, + "password": { + "type": "string", + "description": "Source's Database Password", + "x-example": "password", + "format": "password" + }, + "port": { + "type": "integer", + "description": "Source's Database Port", + "default": 5432, + "x-example": null, + "format": "int32" + } + }, + "required": [ + "resources", + "endpoint", + "apiKey", + "databaseHost", + "username", + "password" + ] + } + } } - ] + } } }, - "\/health\/queue\/stats-resources": { + "\/migrations\/supabase\/report": { "get": { - "summary": "Get stats resources queue", - "operationId": "healthGetQueueStatsResources", + "summary": "Get Supabase migration report", + "operationId": "migrationsGetSupabaseReport", "tags": [ - "health" + "migrations" ], - "description": "Get the number of metrics that are waiting to be processed in the Appwrite stats resources queue.", + "description": "Generate a report of the data in a Supabase project before migrating. This endpoint analyzes the source project and returns information about the resources that can be migrated. ", "responses": { "200": { - "description": "Health Queue", + "description": "Migration Report", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migrationReport" } } } @@ -36249,62 +41078,151 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueStatsResources", - "group": "queue", + "method": "getSupabaseReport", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-stats-resources.md", + "demo": "migrations\/get-supabase-report.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-stats-resources.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] - } - ], - "parameters": [ + "Project": [] + } + ], + "parameters": [ + { + "name": "resources", + "description": "List of resources to migrate", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "user", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ], + "x-enum-name": "SupabaseMigrationResource", + "x-enum-keys": [ + "user", + "database", + "table", + "column", + "index", + "row", + "document", + "attribute", + "collection", + "bucket", + "file" + ] + } + }, + "in": "query" + }, + { + "name": "endpoint", + "description": "Source's Supabase Endpoint.", + "required": true, + "schema": { + "type": "string", + "format": "url", + "x-example": "https:\/\/example.com" + }, + "in": "query" + }, + { + "name": "apiKey", + "description": "Source's API Key.", + "required": true, + "schema": { + "type": "string", + "x-example": "<API_KEY>" + }, + "in": "query" + }, + { + "name": "databaseHost", + "description": "Source's Database Host.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_HOST>" + }, + "in": "query" + }, + { + "name": "username", + "description": "Source's Database Username.", + "required": true, + "schema": { + "type": "string", + "x-example": "<USERNAME>" + }, + "in": "query" + }, { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "name": "password", + "description": "Source's Database Password.", + "required": true, + "schema": { + "type": "string", + "format": "password", + "x-example": "password" + }, + "in": "query" + }, + { + "name": "port", + "description": "Source's Database Port.", "required": false, "schema": { "type": "integer", "format": "int32", - "default": 5000 + "default": 5432 }, "in": "query" } ] } }, - "\/health\/queue\/stats-usage": { + "\/migrations\/{migrationId}": { "get": { - "summary": "Get stats usage queue", - "operationId": "healthGetQueueUsage", + "summary": "Get migration", + "operationId": "migrationsGet", "tags": [ - "health" + "migrations" ], - "description": "Get the number of metrics that are waiting to be processed in the Appwrite internal queue server.", + "description": "Get a migration by its unique ID. This endpoint returns detailed information about a specific migration including its current status, progress, and any errors that occurred during the migration process. ", "responses": { "200": { - "description": "Health Queue", + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -36312,62 +41230,57 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueUsage", - "group": "queue", + "method": "get", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-usage.md", + "demo": "migrations\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-stats-usage.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, + "name": "migrationId", + "description": "Migration unique ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<MIGRATION_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/health\/queue\/threats": { - "get": { - "summary": "Get threats queue", - "operationId": "healthGetQueueThreats", + }, + "patch": { + "summary": "Update retry migration", + "operationId": "migrationsRetry", "tags": [ - "health" + "migrations" ], - "description": "Get threats queue.", + "description": "Retry a failed migration. This endpoint allows you to retry a migration that has previously failed.", "responses": { - "200": { - "description": "Health Queue", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/migration" } } } @@ -36375,125 +41288,110 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueThreats", + "method": "retry", "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-threats.md", + "demo": "migrations\/retry.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/health\/get-queue-threats.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 100.", - "required": false, + "name": "migrationId", + "description": "Migration unique ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 100 + "type": "string", + "x-example": "<MIGRATION_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/health\/queue\/webhooks": { - "get": { - "summary": "Get webhooks queue", - "operationId": "healthGetQueueWebhooks", + }, + "delete": { + "summary": "Delete migration", + "operationId": "migrationsDelete", "tags": [ - "health" + "migrations" ], - "description": "Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.", + "description": "Delete a migration by its unique ID. This endpoint allows you to remove a migration from your project's migration history. ", "responses": { - "200": { - "description": "Health Queue", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthQueue" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "getQueueWebhooks", - "group": "queue", + "method": "delete", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-webhooks.md", + "demo": "migrations\/delete.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/delete-migration.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", - "required": false, + "name": "migrationId", + "description": "Migration ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<MIGRATION_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/health\/storage": { + "\/mongo": { "get": { - "summary": "Get storage", - "operationId": "healthGetStorage", + "summary": "List dedicated databases.", + "operationId": "mongoList", "tags": [ - "health" + "mongo" ], - "description": "Check the Appwrite storage device is up and connection is successful.", + "description": "List all dedicated databases. Results support pagination.", "responses": { "200": { - "description": "Health Status", + "description": "Dedicated databases list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatus" + "$ref": "#\/components\/schemas\/dedicatedDatabaseList" } } } @@ -36501,99 +41399,59 @@ }, "deprecated": false, "x-appwrite": { - "method": "getStorage", - "group": "storage", + "method": "list", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-storage.md", + "demo": "mongo\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] - } - ] - } - }, - "\/health\/storage\/local": { - "get": { - "summary": "Get local storage", - "operationId": "healthGetStorageLocal", - "tags": [ - "health" - ], - "description": "Check the Appwrite local storage device is up and connection is successful.", - "responses": { - "200": { - "description": "Health Status", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthStatus" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "getStorageLocal", - "group": "storage", - "cookies": false, - "type": "", - "demo": "health\/get-storage-local.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md", - "auth": { "Project": [] } - }, - "security": [ + ], + "parameters": [ { - "Project": [], - "Key": [] + "name": "queries", + "description": "Array of query strings.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" } ] - } - }, - "\/health\/time": { - "get": { - "summary": "Get time", - "operationId": "healthGetTime", + }, + "post": { + "summary": "Create a dedicated database.", + "operationId": "mongoCreate", "tags": [ - "health" + "mongo" ], - "description": "Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.", + "description": "Create a new dedicated database with the chosen engine and configuration. Status will be 'provisioning' until the database is ready.", "responses": { - "200": { - "description": "Health Time", + "201": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthTime" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36601,102 +41459,251 @@ }, "deprecated": false, "x-appwrite": { - "method": "getTime", - "group": "health", + "method": "create", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-time.md", + "demo": "mongo\/create.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } - ] - } - }, - "\/locale": { - "get": { - "summary": "Get user locale", - "operationId": "localeGet", - "tags": [ - "locale" ], - "description": "Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))", - "responses": { - "200": { - "description": "Locale", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/locale" - } + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "databaseId": { + "type": "string", + "description": "Database 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.", + "x-example": "<DATABASE_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Database display name. Max length: 128 chars.", + "x-example": "<NAME>" + }, + "database": { + "type": "string", + "description": "Physical database\/catalog name. Defaults to databaseId.", + "default": "", + "x-example": "<DATABASE>" + }, + "engine": { + "type": "string", + "description": "Database engine. Allowed values: mongodb.", + "default": "mongodb", + "x-example": "mongodb" + }, + "version": { + "type": "string", + "description": "Database engine version. Defaults to latest for selected engine.", + "x-example": "17", + "x-nullable": true + }, + "specification": { + "type": "string", + "description": "Specification identifier.", + "default": "s-1vcpu-1gb", + "x-example": "<SPECIFICATION>" + }, + "backend": { + "type": "string", + "description": "Database backend provider: prisma, or edge.", + "default": "edge", + "x-example": "prisma" + }, + "cpu": { + "type": "integer", + "description": "CPU in millicores (125-16000).", + "default": 1000, + "x-example": 125, + "format": "int32" + }, + "memory": { + "type": "integer", + "description": "Memory in MB to allocate (128-65536).", + "default": 1024, + "x-example": 128, + "format": "int32" + }, + "storage": { + "type": "integer", + "description": "Storage in GB to allocate (1-16384).", + "default": 10, + "x-example": 1, + "format": "int32" + }, + "storageClass": { + "type": "string", + "description": "Storage class. Allowed values: ssd. DigitalOcean exposes a single block-storage class, so only 'ssd' is offered today.", + "default": "ssd", + "x-example": "ssd" + }, + "storageMaxGb": { + "type": "integer", + "description": "Maximum storage limit in GB. 0 uses system default.", + "default": 0, + "x-example": 0, + "format": "int32" + }, + "replicas": { + "type": "integer", + "description": "Number of high availability replicas (0-5). High availability is enabled when greater than 0.", + "default": 0, + "x-example": 0, + "format": "int32" + }, + "highAvailabilitySyncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true + }, + "networkMaxConnections": { + "type": "integer", + "description": "Maximum concurrent connections.", + "default": 100, + "x-example": 10, + "format": "int32" + }, + "networkIdleTimeoutSeconds": { + "type": "integer", + "description": "Connection idle timeout in seconds.", + "default": 900, + "x-example": 60, + "format": "int32" + }, + "networkIPAllowlist": { + "type": "array", + "description": "IP addresses\/CIDR ranges allowed to connect.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "idleTimeoutMinutes": { + "type": "integer", + "description": "Minutes of inactivity before container scales to zero.", + "default": 15, + "x-example": 5, + "format": "int32" + }, + "backupEnabled": { + "type": "boolean", + "description": "Enable automatic backups.", + "default": true, + "x-example": false + }, + "backupPitr": { + "type": "boolean", + "description": "Enable point-in-time recovery.", + "default": true, + "x-example": false + }, + "backupCron": { + "type": "string", + "description": "Backup schedule in cron format.", + "default": "0 3 * * *", + "x-example": null + }, + "backupRetentionDays": { + "type": "integer", + "description": "Number of days to retain backups.", + "default": 14, + "x-example": 1, + "format": "int32" + }, + "pitrRetentionDays": { + "type": "integer", + "description": "Number of days to retain PITR data.", + "default": 7, + "x-example": 1, + "format": "int32" + }, + "storageAutoscaling": { + "type": "boolean", + "description": "Enable automatic storage expansion when usage exceeds threshold.", + "default": false, + "x-example": false + }, + "storageAutoscalingThresholdPercent": { + "type": "integer", + "description": "Storage usage percentage (50-95) that triggers automatic expansion.", + "default": 85, + "x-example": 50, + "format": "int32" + }, + "storageAutoscalingMaxGb": { + "type": "integer", + "description": "Maximum storage size in GB for autoscaling. 0 means no limit.", + "default": 0, + "x-example": 0, + "format": "int32" + }, + "metricsEnabled": { + "type": "boolean", + "description": "Enable metrics collection. Enabled by default; pass false to opt out.", + "default": true, + "x-example": false + }, + "poolerEnabled": { + "type": "boolean", + "description": "Enable connection pooler on provision.", + "default": true, + "x-example": false + }, + "api": { + "type": "string", + "description": "Product API that owns this database: compute (raw, direct-access), tablesdb, documentsdb, or vectorsdb. tablesdb\/documentsdb\/vectorsdb computes are reached only through their product APIs.", + "default": "compute", + "x-example": "compute" + } + }, + "required": [ + "databaseId", + "name" + ] } } } - }, - "deprecated": false, - "x-appwrite": { - "method": "get", - "group": null, - "cookies": false, - "type": "", - "demo": "locale\/get.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "locale.read", - "platforms": [ - "console", - "client", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] - } - ] + } } }, - "\/locale\/codes": { + "\/mongo\/specifications": { "get": { - "summary": "List locale codes", - "operationId": "localeListCodes", + "summary": "List dedicated database specifications.", + "operationId": "mongoListSpecifications", "tags": [ - "locale" + "mongo" ], - "description": "List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).", + "description": "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.", "responses": { "200": { - "description": "Locale codes list", + "description": "SpecificationList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/localeCodeList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseSpecificationList" } } } @@ -36704,52 +41711,46 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCodes", - "group": null, + "method": "listSpecifications", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-codes.md", + "demo": "mongo\/list-specifications.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "locale.read", + "scope": "databases.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] } ] } }, - "\/locale\/continents": { + "\/mongo\/{databaseId}": { "get": { - "summary": "List continents", - "operationId": "localeListContinents", + "summary": "Get dedicated database.", + "operationId": "mongoGet", "tags": [ - "locale" + "mongo" ], - "description": "List of all continents. You can use the locale header to get the data in a supported language.", + "description": "Get a dedicated database by its unique ID. Returns the database configuration and current status.", "responses": { "200": { - "description": "Continents List", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/continentList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36757,52 +41758,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "listContinents", - "group": null, + "method": "get", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-continents.md", + "demo": "mongo\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "locale.read", + "scope": "databases.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ] - } - }, - "\/locale\/countries": { - "get": { - "summary": "List countries", - "operationId": "localeListCountries", + }, + "patch": { + "summary": "Update dedicated database.", + "operationId": "mongoUpdate", "tags": [ - "locale" + "mongo" ], - "description": "List of all countries. You can use the locale header to get the data in a supported language.", + "description": "Update a dedicated database configuration. All changes are applied with zero downtime. Resource changes (cpu, memory) are handled via rolling cutover. Storage expansion is done online. All other settings are applied in-place.", "responses": { "200": { - "description": "Countries List", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/countryList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36810,105 +41815,324 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCountries", - "group": null, + "method": "update", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-countries.md", + "demo": "mongo\/update.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "locale.read", + "scope": "databases.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] } - ] - } - }, - "\/locale\/countries\/eu": { - "get": { - "summary": "List EU countries", - "operationId": "localeListCountriesEU", - "tags": [ - "locale" ], - "description": "List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.", - "responses": { - "200": { - "description": "Countries List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/countryList" + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Database display name.", + "x-example": "<NAME>", + "x-nullable": true + }, + "status": { + "type": "string", + "description": "Database status. Allowed values: ready, paused, inactive. Set to \"paused\" to pause, \"ready\" to resume (also recovers a failed database whose infrastructure is healthy), or \"inactive\" to spin down a shared-pool database.", + "x-example": "ready", + "x-nullable": true + }, + "specification": { + "type": "string", + "description": "Specification. Changes cpu, memory, and node pool based on specification config.", + "x-example": "<SPECIFICATION>", + "x-nullable": true + }, + "cpu": { + "type": "number", + "description": "CPU cores to allocate (125-16000).", + "x-example": 125, + "format": "float", + "x-nullable": true + }, + "memory": { + "type": "integer", + "description": "Memory in MB to allocate (128-65536).", + "x-example": 128, + "format": "int32", + "x-nullable": true + }, + "storage": { + "type": "integer", + "description": "Storage in GB to allocate (1-16384).", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "storageClass": { + "type": "string", + "description": "Storage class. Allowed values: ssd.", + "x-example": "ssd", + "x-nullable": true + }, + "replicas": { + "type": "integer", + "description": "Number of high availability replicas (0-5). High availability is enabled when greater than 0.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "highAvailabilitySyncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true + }, + "networkMaxConnections": { + "type": "integer", + "description": "Maximum concurrent connections.", + "x-example": 10, + "format": "int32", + "x-nullable": true + }, + "networkIdleTimeoutSeconds": { + "type": "integer", + "description": "Connection idle timeout in seconds (60-86400).", + "x-example": 60, + "format": "int32", + "x-nullable": true + }, + "networkIPAllowlist": { + "type": "array", + "description": "IP addresses\/CIDR ranges allowed to connect.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "idleTimeoutMinutes": { + "type": "integer", + "description": "Minutes before container scales to zero.", + "x-example": 5, + "format": "int32", + "x-nullable": true + }, + "backupEnabled": { + "type": "boolean", + "description": "Enable automatic backups.", + "x-example": false, + "x-nullable": true + }, + "backupPitr": { + "type": "boolean", + "description": "Enable point-in-time recovery.", + "x-example": false, + "x-nullable": true + }, + "backupCron": { + "type": "string", + "description": "Backup schedule in cron format.", + "x-example": null, + "x-nullable": true + }, + "backupRetentionDays": { + "type": "integer", + "description": "Days to retain backups.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "pitrRetentionDays": { + "type": "integer", + "description": "Days to retain PITR data.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "storageAutoscaling": { + "type": "boolean", + "description": "Enable automatic storage expansion when usage exceeds threshold.", + "x-example": false, + "x-nullable": true + }, + "storageAutoscalingThresholdPercent": { + "type": "integer", + "description": "Storage usage percentage (50-95) that triggers automatic expansion.", + "x-example": 50, + "format": "int32", + "x-nullable": true + }, + "storageAutoscalingMaxGb": { + "type": "integer", + "description": "Maximum storage size in GB for autoscaling. 0 means no limit.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "poolerEnabled": { + "type": "boolean", + "description": "Attach or detach the connection pooler sidecar. Set to true to add the sidecar (no-op if already attached) or false to remove it.", + "x-example": false, + "x-nullable": true + }, + "metricsEnabled": { + "type": "boolean", + "description": "Enable or disable the metrics-agent sidecar.", + "x-example": false, + "x-nullable": true + }, + "metricsTraceSampleRate": { + "type": "number", + "description": "Fraction of queries to trace (0.0\u20131.0). Forwarded to the sidecar.", + "x-example": null, + "format": "float", + "x-nullable": true + }, + "metricsSlowQueryLogThresholdMs": { + "type": "integer", + "description": "Threshold in ms above which queries are logged as slow. Forwarded to the sidecar.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "sqlApiEnabled": { + "type": "boolean", + "description": "Enable the SQL API sidecar for this database.", + "x-example": false, + "x-nullable": true + }, + "sqlApiAllowedStatements": { + "type": "array", + "description": "Statement types the SQL API accepts. Allowed values: SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, TRUNCATE, GRANT, REVOKE.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "sqlApiMaxRows": { + "type": "integer", + "description": "Maximum rows returned per SQL API execution (1-1000000).", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "sqlApiMaxBytes": { + "type": "integer", + "description": "Maximum serialised SQL API result payload in bytes (1024-104857600).", + "x-example": 1024, + "format": "int32", + "x-nullable": true + }, + "sqlApiTimeoutSeconds": { + "type": "integer", + "description": "Per-call SQL API execution timeout in seconds (1-300).", + "x-example": 1, + "format": "int32", + "x-nullable": true + } } } } } + } + }, + "delete": { + "summary": "Delete dedicated database.", + "operationId": "mongoDelete", + "tags": [ + "mongo" + ], + "description": "Delete a dedicated database. This action is irreversible. The database status will be set to 'deleting' and all resources will be cleaned up. Deletion is allowed from any state, and repeating the call re-dispatches the cleanup.", + "responses": { + "204": { + "description": "No content" + } }, "deprecated": false, "x-appwrite": { - "method": "listCountriesEU", - "group": null, + "method": "delete", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-countries-eu.md", + "demo": "mongo\/delete.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "locale.read", + "scope": "databases.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ] } }, - "\/locale\/countries\/phones": { + "\/mongo\/{databaseId}\/backups": { "get": { - "summary": "List countries phone codes", - "operationId": "localeListCountriesPhones", + "summary": "List database backups.", + "operationId": "mongoListBackups", "tags": [ - "locale" + "mongo" ], - "description": "List of all countries phone codes. You can use the locale header to get the data in a supported language.", + "description": "List all backups for a dedicated database. Results can be filtered by status and type.", "responses": { "200": { - "description": "Phones List", + "description": "BackupList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/phoneList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupList" } } } @@ -36916,52 +42140,69 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCountriesPhones", - "group": null, + "method": "listBackups", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-countries-phones.md", + "demo": "mongo\/list-backups.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "locale.read", + "scope": "databases.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, type, databaseId", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" } ] - } - }, - "\/locale\/currencies": { - "get": { - "summary": "List currencies", - "operationId": "localeListCurrencies", + }, + "post": { + "summary": "Create a database backup.", + "operationId": "mongoCreateBackup", "tags": [ - "locale" + "mongo" ], - "description": "List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.", + "description": "Create a manual backup of a dedicated database. The backup will be created asynchronously and its status can be checked via the get backup endpoint.", "responses": { - "200": { - "description": "Currencies List", + "202": { + "description": "Backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/currencyList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -36969,52 +42210,75 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCurrencies", - "group": null, + "method": "createBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-currencies.md", + "demo": "mongo\/create-backup.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "locale.read", + "scope": "databases.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" + } + } + } + } + } + } } }, - "\/locale\/languages": { + "\/mongo\/{databaseId}\/backups\/policies": { "get": { - "summary": "List languages", - "operationId": "localeListLanguages", + "summary": "List database backup policies.", + "operationId": "mongoListBackupPolicies", "tags": [ - "locale" + "mongo" ], - "description": "List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.", + "description": "List scheduled backup policies for a dedicated database.", "responses": { "200": { - "description": "Languages List", + "description": "Backup policy list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/languageList" + "$ref": "#\/components\/schemas\/backupPolicyList" } } } @@ -37022,52 +42286,69 @@ }, "deprecated": false, "x-appwrite": { - "method": "listLanguages", - "group": null, + "method": "listBackupPolicies", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-languages.md", + "demo": "mongo\/list-backup-policies.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "locale.read", + "scope": "databases.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" } ] - } - }, - "\/manager\/blocks": { + }, "post": { - "summary": "Create a new resource block for a project", - "operationId": "managerCreateBlock", + "summary": "Create a database backup policy.", + "operationId": "mongoCreateBackupPolicy", "tags": [ - "manager" + "mongo" ], - "description": "Creates a new resource block.", + "description": "Create a scheduled backup policy for a dedicated database.", "responses": { "201": { - "description": "Block", + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/block" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -37075,103 +42356,111 @@ }, "deprecated": false, "x-appwrite": { - "method": "createBlock", - "group": null, + "method": "createBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "manager\/create-block.md", + "demo": "mongo\/create-backup-policy.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, - "public": true + "public": true, + "auth": { + "Project": [] + } }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + } + ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "projectId": { + "policyId": { "type": "string", - "description": "Project ID", - "x-example": "<PROJECT_ID>" + "description": "Policy 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.", + "x-example": "<POLICY_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } }, - "resourceType": { + "name": { "type": "string", - "description": "Resource type to block (e.g., projects, functions, databases, storage, etc.)", - "x-example": "projects", - "enum": [ - "projects", - "functions", - "sites", - "databases", - "buckets", - "providers", - "topics", - "subscribers", - "messages" - ], - "x-enum-name": "BlockResourceType", - "x-enum-keys": [ - "projects", - "functions", - "sites", - "databases", - "buckets", - "providers", - "topics", - "subscribers", - "messages" - ] + "description": "Policy name. Max length: 128 chars.", + "x-example": "<NAME>" }, - "resourceId": { + "schedule": { "type": "string", - "description": "Optional resource ID (if omitted, all resources of this type will be blocked)", - "default": "", - "x-example": "<RESOURCE_ID>" + "description": "Schedule CRON syntax.", + "x-example": null }, - "reason": { - "type": "string", - "description": "Optional reason why the resource is blocked", - "default": "", - "x-example": "<REASON>" + "retention": { + "type": "integer", + "description": "Days to keep backups before deletion.", + "x-example": 1, + "format": "int32" }, - "expiredAt": { + "type": { "type": "string", - "description": "Optional expiration date for the block", - "default": "", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime" + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" + }, + "enabled": { + "type": "boolean", + "description": "Is policy enabled? When disabled, no backups will be taken.", + "default": true, + "x-example": false } }, "required": [ - "projectId", - "resourceType" + "policyId", + "name", + "schedule", + "retention" ] } } } } - }, - "delete": { - "summary": "Delete resource blocks for a project", - "operationId": "managerDeleteBlock", + } + }, + "\/mongo\/{databaseId}\/backups\/storage": { + "put": { + "summary": "Update database backup storage.", + "operationId": "mongoUpdateBackupStorage", "tags": [ - "manager" + "mongo" ], - "description": "Deletes resource blocks for a project.", + "description": "Configure off-cluster backup storage for a dedicated database. Supports S3, GCS, and Azure Blob Storage destinations. Backups will be stored to the configured destination in addition to on-cluster storage.", "responses": { "200": { - "description": "BlockDelete", + "description": "BackupStorageConfig", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/blockDelete" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupStorage" } } } @@ -37179,146 +42468,113 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteBlock", - "group": null, + "method": "updateBackupStorage", + "group": "databases", "cookies": false, "type": "", - "demo": "manager\/delete-block.md", + "demo": "mongo\/update-backup-storage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, - "public": true + "public": true, + "auth": { + "Project": [] + } }, - "parameters": [ - { - "name": "projectId", - "description": "Project ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<PROJECT_ID>" - }, - "in": "query" - }, - { - "name": "resourceType", - "description": "Resource type to unblock", - "required": true, - "schema": { - "type": "string", - "x-example": "projects", - "enum": [ - "projects", - "functions", - "sites", - "databases", - "buckets", - "providers", - "topics", - "subscribers", - "messages" - ], - "x-enum-name": "BlockResourceType", - "x-enum-keys": [ - "projects", - "functions", - "sites", - "databases", - "buckets", - "providers", - "topics", - "subscribers", - "messages" - ] - }, - "in": "query" - }, + "security": [ { - "name": "resourceId", - "description": "Optional resource ID (if omitted, all blocks of this type will be removed)", - "required": false, - "schema": { - "type": "string", - "x-example": "<RESOURCE_ID>", - "default": "" - }, - "in": "query" + "Project": [] } - ] - } - }, - "\/manager\/blocks\/{projectId}": { - "get": { - "summary": "List all resource blocks for a project", - "operationId": "managerListBlocks", - "tags": [ - "manager" ], - "description": "Lists all resource blocks for a project.", - "responses": { - "200": { - "description": "Blocks list", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/blockList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listBlocks", - "group": null, - "cookies": false, - "type": "", - "demo": "manager\/list-blocks.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "", - "platforms": [ - "console" - ], - "packaging": false, - "public": true - }, "parameters": [ { - "name": "projectId", - "description": "Project ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "Storage provider for off-cluster backups. Allowed values: s3 (Amazon S3 or S3-compatible), gcs (Google Cloud Storage), azure (Azure Blob Storage).", + "x-example": "s3" + }, + "bucket": { + "type": "string", + "description": "Storage bucket or container name.", + "x-example": "<BUCKET>" + }, + "region": { + "type": "string", + "description": "Storage region.", + "default": "", + "x-example": "<REGION>" + }, + "prefix": { + "type": "string", + "description": "Object key prefix for backups.", + "default": "backups\/", + "x-example": "<PREFIX>" + }, + "endpoint": { + "type": "string", + "description": "Custom endpoint for S3-compatible storage (e.g. MinIO).", + "default": "", + "x-example": "<ENDPOINT>" + }, + "accessKey": { + "type": "string", + "description": "Access key or client ID for authentication.", + "x-example": "<ACCESS_KEY>" + }, + "secretKey": { + "type": "string", + "description": "Secret key or service account JSON for authentication.", + "x-example": "<SECRET_KEY>" + } + }, + "required": [ + "provider", + "bucket", + "accessKey", + "secretKey" + ] + } + } + } + } } }, - "\/manager\/cache": { - "delete": { - "summary": "Clear internal cache", - "operationId": "managerDeleteCache", + "\/mongo\/{databaseId}\/backups\/{backupId}": { + "get": { + "summary": "Get a database backup.", + "operationId": "mongoGetBackup", "tags": [ - "manager" + "mongo" ], - "description": "Clears internal cache.", + "description": "Get details of a specific database backup including its status, size, and timestamps.", "responses": { "200": { - "description": "File", + "description": "Backup", "content": { "application\/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -37326,237 +42582,131 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteCache", - "group": "cache", + "method": "getBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "manager\/delete-cache.md", + "demo": "mongo\/get-backup.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, - "public": true + "public": true, + "auth": { + "Project": [] + } }, - "parameters": [ - { - "name": "region", - "description": "Target region.", - "required": false, - "schema": { - "type": "string", - "x-example": "fra", - "enum": [ - "fra", - "nyc", - "syd", - "sfo", - "sgp", - "tor" - ], - "x-enum-name": "Region", - "x-enum-keys": [ - "fra", - "nyc", - "syd", - "sfo", - "sgp", - "tor" - ] - }, - "in": "query" - }, - { - "name": "cache", - "description": "Cache target.", - "required": false, - "schema": { - "type": "string", - "x-example": "cache", - "enum": [ - "cache", - "timelimit", - "locks", - "pubsub", - "queue", - "all" - ], - "x-enum-name": "CacheTarget", - "x-enum-keys": [ - "cache", - "timelimit", - "locks", - "pubsub", - "queue", - "all" - ], - "default": "cache" - }, - "in": "query" - }, - { - "name": "all", - "description": "Clear the entire selected cache target.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": false - }, - "in": "query" - }, - { - "name": "database", - "description": "Database cache scope.", - "required": false, - "schema": { - "type": "string", - "x-example": "console", - "enum": [ - "console", - "project", - "logs" - ], - "x-enum-name": "CacheDatabase", - "x-enum-keys": [ - "console", - "project", - "logs" - ], - "default": "console" - }, - "in": "query" - }, + "security": [ { - "name": "projectId", - "description": "Project ID for project or logs database cache.", - "required": false, - "schema": { - "type": "string", - "x-example": "<PROJECT_ID>", - "default": "" - }, - "in": "query" - }, + "Project": [] + } + ], + "parameters": [ { - "name": "collectionId", - "description": "Collection ID.", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "schema": { "type": "string", - "x-example": "<COLLECTION_ID>", - "default": "" + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" }, { - "name": "documentId", - "description": "Document ID.", - "required": false, + "name": "backupId", + "description": "Backup ID.", + "required": true, "schema": { "type": "string", - "x-example": "<DOCUMENT_ID>", - "default": "" + "x-example": "<BACKUP_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/manager\/users\/status": { - "patch": { - "summary": "Update a user status by ID or email", - "operationId": "managerUpdateUserStatus", + }, + "delete": { + "summary": "Delete a database backup.", + "operationId": "mongoDeleteBackup", "tags": [ - "manager" + "mongo" ], - "description": "Updates a console user status using a user ID or email address.", + "description": "Delete a database backup. This will permanently remove the backup from storage and cannot be undone.", "responses": { - "200": { - "description": "User", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/user" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "updateUserStatus", - "group": "users", + "method": "deleteBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "manager\/update-user-status.md", + "demo": "mongo\/delete-backup.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, - "public": true + "public": true, + "produces": [ + "application\/json" + ], + "auth": { + "Project": [] + } }, - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "userId": { - "type": "string", - "description": "User ID.", - "default": "", - "x-example": "<USER_ID>" - }, - "email": { - "type": "string", - "description": "User email address.", - "default": "", - "x-example": "<EMAIL>" - }, - "status": { - "type": "boolean", - "description": "User status. Set to `false` to block and `true` to unblock.", - "x-example": false - }, - "reason": { - "type": "string", - "description": "Optional reason when blocking a user. Accepted for parity with the CLI task but not persisted.", - "default": "", - "x-example": "<REASON>" - } - }, - "required": [ - "status" - ] - } - } + "security": [ + { + "Project": [] } - } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "backupId", + "description": "Backup ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BACKUP_ID>" + }, + "in": "path" + } + ] } }, - "\/messaging\/messages": { + "\/mongo\/{databaseId}\/branches": { "get": { - "summary": "List messages", - "operationId": "messagingListMessages", + "summary": "List database branches.", + "operationId": "mongoListBranches", "tags": [ - "messaging" + "mongo" ], - "description": "Get a list of all messages from the current Appwrite project.", + "description": "List all ephemeral branches for a dedicated database. Returns branch metadata including ID, name, namespace, and expiration time.", "responses": { "200": { - "description": "Message list", + "description": "BranchList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/messageList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBranchList" } } } @@ -37564,86 +42714,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "listMessages", - "group": "messages", + "method": "listBranches", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/list-messages.md", + "demo": "mongo\/list-branches.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.read", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "schema": { "type": "string", - "x-example": "<SEARCH>", - "default": "" - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/messaging\/messages\/email": { + }, "post": { - "summary": "Create email", - "operationId": "messagingCreateEmail", + "summary": "Create a database branch.", + "operationId": "mongoCreateBranch", "tags": [ - "messaging" + "mongo" ], - "description": "Create a new email message.", + "description": "Create an ephemeral database branch from the primary via PVC snapshot. The branch is a full copy of the database at the current point in time, useful for testing schema migrations or running experiments without affecting production data. Branches expire after the configured TTL (default 24 hours). The branch is created asynchronously.", "responses": { - "201": { - "description": "Message", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -37651,30 +42771,39 @@ }, "deprecated": false, "x-appwrite": { - "method": "createEmail", - "group": "messages", + "method": "createBranch", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-email.md", + "demo": "mongo\/create-branch.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -37683,124 +42812,44 @@ "schema": { "type": "object", "properties": { - "messageId": { + "branchId": { "type": "string", - "description": "Message 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.", - "x-example": "<MESSAGE_ID>", + "description": "Branch 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.", + "default": "", + "x-example": "<BRANCH_ID>", "x-appwrite": { "idGenerator": "ID.unique" } }, - "subject": { - "type": "string", - "description": "Email Subject.", - "x-example": "<SUBJECT>" - }, - "content": { - "type": "string", - "description": "Email Content.", - "x-example": "<CONTENT>" - }, - "topics": { - "type": "array", - "description": "List of Topic IDs.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "description": "List of User IDs.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "targets": { - "type": "array", - "description": "List of Targets IDs.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "cc": { - "type": "array", - "description": "Array of target IDs to be added as CC.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "bcc": { - "type": "array", - "description": "Array of target IDs to be added as BCC.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "attachments": { - "type": "array", - "description": "Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as <BUCKET_ID>:<FILE_ID>.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "draft": { - "type": "boolean", - "description": "Is message a draft", - "default": false, - "x-example": false - }, - "html": { - "type": "boolean", - "description": "Is content of type HTML", - "default": false, - "x-example": false - }, - "scheduledAt": { - "type": "string", - "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", - "x-nullable": true + "ttl": { + "type": "integer", + "description": "Time-to-live in seconds before the branch expires. Min 300 (5 min), max 604800 (7 days). Default: 86400 (24h).", + "default": 86400, + "x-example": 300, + "format": "int32" } - }, - "required": [ - "messageId", - "subject", - "content" - ] + } } } } } } }, - "\/messaging\/messages\/email\/{messageId}": { - "patch": { - "summary": "Update email", - "operationId": "messagingUpdateEmail", + "\/mongo\/{databaseId}\/branches\/{branchId}": { + "delete": { + "summary": "Delete a database branch.", + "operationId": "mongoDeleteBranch", "tags": [ - "messaging" + "mongo" ], - "description": "Update an email message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", + "description": "Delete an ephemeral database branch. This removes the branch namespace, its PVC, and the associated VolumeSnapshot. The deletion runs asynchronously and is irreversible.", "responses": { - "200": { - "description": "Message", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -37808,157 +42857,125 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateEmail", - "group": "messages", + "method": "deleteBranch", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-email.md", + "demo": "mongo\/delete-branch.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "messageId", - "description": "Message ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<MESSAGE_ID>" + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "branchId", + "description": "Branch ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BRANCH_ID>" }, "in": "path" } + ] + } + }, + "\/mongo\/{databaseId}\/credentials": { + "get": { + "summary": "Get database credentials.", + "operationId": "mongoGetCredentials", + "tags": [ + "mongo" ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "topics": { - "type": "array", - "description": "List of Topic IDs.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "users": { - "type": "array", - "description": "List of User IDs.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "targets": { - "type": "array", - "description": "List of Targets IDs.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "subject": { - "type": "string", - "description": "Email Subject.", - "x-example": "<SUBJECT>", - "x-nullable": true - }, - "content": { - "type": "string", - "description": "Email Content.", - "x-example": "<CONTENT>", - "x-nullable": true - }, - "draft": { - "type": "boolean", - "description": "Is message a draft", - "x-example": false, - "x-nullable": true - }, - "html": { - "type": "boolean", - "description": "Is content of type HTML", - "x-example": false, - "x-nullable": true - }, - "cc": { - "type": "array", - "description": "Array of target IDs to be added as CC.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "bcc": { - "type": "array", - "description": "Array of target IDs to be added as BCC.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "scheduledAt": { - "type": "string", - "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", - "x-nullable": true - }, - "attachments": { - "type": "array", - "description": "Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as <BUCKET_ID>:<FILE_ID>.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - } + "description": "Get connection credentials for a dedicated database. Returns the hostname, port, username, password, database name, and full connection string.", + "responses": { + "200": { + "description": "Credentials", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" } } } } - } - } - }, - "\/messaging\/messages\/push": { - "post": { - "summary": "Create push notification", - "operationId": "messagingCreatePush", + }, + "deprecated": false, + "x-appwrite": { + "method": "getCredentials", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mongo\/get-credentials.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + } + ] + }, + "patch": { + "summary": "Update database credentials.", + "operationId": "mongoUpdateCredentials", "tags": [ - "messaging" + "mongo" ], - "description": "Create a new push notification.", + "description": "Rotate the primary credentials for a dedicated database. Generates a new password and updates the database. Previous credentials will stop working immediately.", "responses": { - "201": { - "description": "Message", + "200": { + "description": "Credentials", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" } } } @@ -37966,200 +42983,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPush", - "group": "messages", + "method": "updateCredentials", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-push.md", + "demo": "mongo\/update-credentials.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "messageId": { - "type": "string", - "description": "Message 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.", - "x-example": "<MESSAGE_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "title": { - "type": "string", - "description": "Title for push notification.", - "default": "", - "x-example": "<TITLE>" - }, - "body": { - "type": "string", - "description": "Body for push notification.", - "default": "", - "x-example": "<BODY>" - }, - "topics": { - "type": "array", - "description": "List of Topic IDs.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "description": "List of User IDs.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "targets": { - "type": "array", - "description": "List of Targets IDs.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "data": { - "type": "object", - "description": "Additional key-value pair data for push notification.", - "default": {}, - "x-example": "{}", - "x-nullable": true - }, - "action": { - "type": "string", - "description": "Action for push notification.", - "default": "", - "x-example": "<ACTION>" - }, - "image": { - "type": "string", - "description": "Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as <BUCKET_ID>:<FILE_ID>.", - "default": "", - "x-example": "<ID1:ID2>" - }, - "icon": { - "type": "string", - "description": "Icon for push notification. Available only for Android and Web Platform.", - "default": "", - "x-example": "<ICON>" - }, - "sound": { - "type": "string", - "description": "Sound for push notification. Available only for Android and iOS Platform.", - "default": "", - "x-example": "<SOUND>" - }, - "color": { - "type": "string", - "description": "Color for push notification. Available only for Android Platform.", - "default": "", - "x-example": "<COLOR>" - }, - "tag": { - "type": "string", - "description": "Tag for push notification. Available only for Android Platform.", - "default": "", - "x-example": "<TAG>" - }, - "badge": { - "type": "integer", - "description": "Badge for push notification. Available only for iOS Platform.", - "default": -1, - "x-example": null, - "format": "int32" - }, - "draft": { - "type": "boolean", - "description": "Is message a draft", - "default": false, - "x-example": false - }, - "scheduledAt": { - "type": "string", - "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", - "x-nullable": true - }, - "contentAvailable": { - "type": "boolean", - "description": "If set to true, the notification will be delivered in the background. Available only for iOS Platform.", - "default": false, - "x-example": false - }, - "critical": { - "type": "boolean", - "description": "If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform.", - "default": false, - "x-example": false - }, - "priority": { - "type": "string", - "description": "Set the notification priority. \"normal\" will consider device state and may not deliver notifications immediately. \"high\" will always attempt to immediately deliver the notification.", - "default": "high", - "x-example": "normal", - "enum": [ - "normal", - "high" - ], - "x-enum-name": "MessagePriority", - "x-enum-keys": [ - "normal", - "high" - ] - } - }, - "required": [ - "messageId" - ] - } - } + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } - } + ] } }, - "\/messaging\/messages\/push\/{messageId}": { - "patch": { - "summary": "Update push notification", - "operationId": "messagingUpdatePush", + "\/mongo\/{databaseId}\/failovers": { + "post": { + "summary": "Trigger manual failover.", + "operationId": "mongoCreateFailover", "tags": [ - "messaging" + "mongo" ], - "description": "Update a push notification by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", + "description": "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.", "responses": { - "200": { - "description": "Message", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -38167,40 +43042,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "updatePush", - "group": "messages", + "method": "createFailover", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-push.md", + "demo": "mongo\/create-failover.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "messageId", - "description": "Message ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<MESSAGE_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -38211,133 +43083,10 @@ "schema": { "type": "object", "properties": { - "topics": { - "type": "array", - "description": "List of Topic IDs.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "users": { - "type": "array", - "description": "List of User IDs.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "targets": { - "type": "array", - "description": "List of Targets IDs.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "title": { - "type": "string", - "description": "Title for push notification.", - "x-example": "<TITLE>", - "x-nullable": true - }, - "body": { - "type": "string", - "description": "Body for push notification.", - "x-example": "<BODY>", - "x-nullable": true - }, - "data": { - "type": "object", - "description": "Additional Data for push notification.", - "default": {}, - "x-example": "{}", - "x-nullable": true - }, - "action": { - "type": "string", - "description": "Action for push notification.", - "x-example": "<ACTION>", - "x-nullable": true - }, - "image": { - "type": "string", - "description": "Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as <BUCKET_ID>:<FILE_ID>.", - "x-example": "<ID1:ID2>", - "x-nullable": true - }, - "icon": { - "type": "string", - "description": "Icon for push notification. Available only for Android and Web platforms.", - "x-example": "<ICON>", - "x-nullable": true - }, - "sound": { - "type": "string", - "description": "Sound for push notification. Available only for Android and iOS platforms.", - "x-example": "<SOUND>", - "x-nullable": true - }, - "color": { - "type": "string", - "description": "Color for push notification. Available only for Android platforms.", - "x-example": "<COLOR>", - "x-nullable": true - }, - "tag": { - "type": "string", - "description": "Tag for push notification. Available only for Android platforms.", - "x-example": "<TAG>", - "x-nullable": true - }, - "badge": { - "type": "integer", - "description": "Badge for push notification. Available only for iOS platforms.", - "x-example": null, - "format": "int32", - "x-nullable": true - }, - "draft": { - "type": "boolean", - "description": "Is message a draft", - "x-example": false, - "x-nullable": true - }, - "scheduledAt": { - "type": "string", - "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", - "x-nullable": true - }, - "contentAvailable": { - "type": "boolean", - "description": "If set to true, the notification will be delivered in the background. Available only for iOS Platform.", - "x-example": false, - "x-nullable": true - }, - "critical": { - "type": "boolean", - "description": "If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform.", - "x-example": false, - "x-nullable": true - }, - "priority": { + "targetReplicaId": { "type": "string", - "description": "Set the notification priority. \"normal\" will consider device battery state and may send notifications later. \"high\" will always attempt to immediately deliver the notification.", - "x-example": "normal", - "enum": [ - "normal", - "high" - ], - "x-enum-name": "MessagePriority", - "x-enum-keys": [ - "normal", - "high" - ], + "description": "Target replica ID to promote. If not specified, the healthiest replica is selected.", + "x-example": "<TARGET_REPLICA_ID>", "x-nullable": true } } @@ -38347,122 +43096,61 @@ } } }, - "\/messaging\/messages\/sms": { - "post": { - "summary": "Create SMS", - "operationId": "messagingCreateSms", + "\/mongo\/{databaseId}\/maintenance": { + "patch": { + "summary": "Update database maintenance window.", + "operationId": "mongoUpdateMaintenanceWindow", "tags": [ - "messaging" + "mongo" ], - "description": "Create a new SMS message.", + "description": "Update the maintenance window for a dedicated database. Maintenance operations like minor version upgrades will be performed during this window.", "responses": { - "201": { - "description": "Message", + "200": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createSms", - "group": "messages", + "method": "updateMaintenanceWindow", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-sms.md", + "demo": "mongo\/update-maintenance-window.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, - "public": false, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.createSMS" - }, - "methods": [ - { - "name": "createSms", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "messageId", - "content", - "topics", - "users", - "targets", - "draft", - "scheduledAt" - ], - "required": [ - "messageId", - "content" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/message" - } - ], - "description": "Create a new SMS message.", - "demo": "messaging\/create-sms.md", - "public": false, - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.createSMS" - } - }, - { - "name": "createSMS", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "messageId", - "content", - "topics", - "users", - "targets", - "draft", - "scheduledAt" - ], - "required": [ - "messageId", - "content" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/message" - } - ], - "description": "Create a new SMS message.", - "demo": "messaging\/create-sms.md", - "public": true - } - ], + "public": true, "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -38471,63 +43159,21 @@ "schema": { "type": "object", "properties": { - "messageId": { - "type": "string", - "description": "Message 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.", - "x-example": "<MESSAGE_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "content": { + "day": { "type": "string", - "description": "SMS Content.", - "x-example": "<CONTENT>" - }, - "topics": { - "type": "array", - "description": "List of Topic IDs.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "description": "List of User IDs.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "targets": { - "type": "array", - "description": "List of Targets IDs.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "draft": { - "type": "boolean", - "description": "Is message a draft", - "default": false, - "x-example": false + "description": "Day of the week for the maintenance window. Allowed values: sun, mon, tue, wed, thu, fri, sat.", + "x-example": "sun" }, - "scheduledAt": { - "type": "string", - "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", - "x-nullable": true + "hourUtc": { + "type": "integer", + "description": "Hour in UTC (0-23) for maintenance window start.", + "x-example": 0, + "format": "int32" } }, "required": [ - "messageId", - "content" + "day", + "hourUtc" ] } } @@ -38535,130 +43181,59 @@ } } }, - "\/messaging\/messages\/sms\/{messageId}": { - "patch": { - "summary": "Update SMS", - "operationId": "messagingUpdateSms", + "\/mongo\/{databaseId}\/migrations": { + "post": { + "summary": "Migrate database between shared and dedicated.", + "operationId": "mongoCreateMigration", "tags": [ - "messaging" + "mongo" ], - "description": "Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", + "description": "Migrate a database between shared and dedicated types. Shared to dedicated provisions an always-on dedicated instance; dedicated to shared converts to a serverless instance that scales to zero when idle. Data is copied to the target with a brief read-only window during cutover.", "responses": { "200": { - "description": "Message", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateSms", - "group": "messages", + "method": "createMigration", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-sms.md", + "demo": "mongo\/create-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, - "public": false, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sms.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.updateSMS" - }, - "methods": [ - { - "name": "updateSms", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "messageId", - "topics", - "users", - "targets", - "content", - "draft", - "scheduledAt" - ], - "required": [ - "messageId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/message" - } - ], - "description": "Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", - "demo": "messaging\/update-sms.md", - "public": false, - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.updateSMS" - } - }, - { - "name": "updateSMS", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "messageId", - "topics", - "users", - "targets", - "content", - "draft", - "scheduledAt" - ], - "required": [ - "messageId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/message" - } - ], - "description": "Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n", - "demo": "messaging\/update-sms.md", - "public": true - } - ], + "public": true, "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "messageId", - "description": "Message ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<MESSAGE_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -38669,74 +43244,42 @@ "schema": { "type": "object", "properties": { - "topics": { - "type": "array", - "description": "List of Topic IDs.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "users": { - "type": "array", - "description": "List of User IDs.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "targets": { - "type": "array", - "description": "List of Targets IDs.", - "x-example": null, - "items": { - "type": "string" - }, - "x-nullable": true - }, - "content": { + "targetType": { "type": "string", - "description": "Email Content.", - "x-example": "<CONTENT>", - "x-nullable": true - }, - "draft": { - "type": "boolean", - "description": "Is message a draft", - "x-example": false, - "x-nullable": true + "description": "Target database type to migrate to. Allowed values: shared (serverless, scales to zero when idle), dedicated (always-on with persistent resources).", + "x-example": "shared" }, - "scheduledAt": { + "specification": { "type": "string", - "description": "Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", + "description": "Target compute specification to provision when migrating to dedicated. Ignored for shared. Defaults to the database's current specification.", + "x-example": "<SPECIFICATION>", "x-nullable": true } - } + }, + "required": [ + "targetType" + ] } } } } } }, - "\/messaging\/messages\/{messageId}": { + "\/mongo\/{databaseId}\/pitr": { "get": { - "summary": "Get message", - "operationId": "messagingGetMessage", + "summary": "Get PITR recovery windows.", + "operationId": "mongoGetPitrWindows", "tags": [ - "messaging" + "mongo" ], - "description": "Get a message by its unique ID.\n", + "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", "responses": { "200": { - "description": "Message", + "description": "PITRWindows", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" } } } @@ -38744,114 +43287,117 @@ }, "deprecated": false, "x-appwrite": { - "method": "getMessage", - "group": "messages", + "method": "getPitrWindows", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/get-message.md", + "demo": "mongo\/get-pitr-windows.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.read", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "messageId", - "description": "Message ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<MESSAGE_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] - }, - "delete": { - "summary": "Delete message", - "operationId": "messagingDelete", + } + }, + "\/mongo\/{databaseId}\/replicas": { + "get": { + "summary": "Get replica status.", + "operationId": "mongoGetReplicas", "tags": [ - "messaging" + "mongo" ], - "description": "Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message.", + "description": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "HAStatus", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseHAStatus" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", - "group": "messages", + "method": "getReplicas", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/delete.md", + "demo": "mongo\/get-replicas.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "messageId", - "description": "Message ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<MESSAGE_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] } }, - "\/messaging\/messages\/{messageId}\/logs": { + "\/mongo\/{databaseId}\/restorations": { "get": { - "summary": "List message logs", - "operationId": "messagingListMessageLogs", + "summary": "List database restorations.", + "operationId": "mongoListRestorations", "tags": [ - "messaging" + "mongo" ], - "description": "Get the message activity logs listed by its unique ID.", + "description": "List all restorations for a dedicated database. Results can be filtered by status and type.", "responses": { "200": { - "description": "Logs List", + "description": "Dedicated database restorations list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestorationList" } } } @@ -38859,85 +43405,189 @@ }, "deprecated": false, "x-appwrite": { - "method": "listMessageLogs", - "group": "logs", + "method": "listRestorations", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/list-message-logs.md", + "demo": "mongo\/list-restorations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.read", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-logs.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "messageId", - "description": "Message ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<MESSAGE_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" }, { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", + "name": "status", + "description": "Filter by restoration status.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "pending" }, "in": "query" }, { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "name": "type", + "description": "Filter by restoration type.", "required": false, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "backup" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of restorations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of restorations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 }, "in": "query" } ] + }, + "post": { + "summary": "Create a database restoration.", + "operationId": "mongoCreateRestoration", + "tags": [ + "mongo" + ], + "description": "Restore a database from a backup or to a specific point in time (PITR). For backup restoration, provide a backupId. For PITR, provide a targetTime. PITR requires the database to have PITR enabled and is only available for enterprise databases.", + "responses": { + "202": { + "description": "Restoration", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createRestoration", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mongo\/create-restoration.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Restoration type. Allowed values: backup, pitr. Use \"backup\" to restore from a specific backup, or \"pitr\" for point-in-time recovery.", + "default": "backup", + "x-example": "backup" + }, + "backupId": { + "type": "string", + "description": "Backup ID to restore from (required for backup type).", + "x-example": "<BACKUP_ID>", + "x-nullable": true + }, + "targetTime": { + "type": "integer", + "description": "Target time for PITR as Unix timestamp (required for pitr type).", + "x-example": null, + "format": "int32", + "x-nullable": true + } + } + } + } + } + } } }, - "\/messaging\/messages\/{messageId}\/targets": { + "\/mongo\/{databaseId}\/restorations\/{restorationId}": { "get": { - "summary": "List message targets", - "operationId": "messagingListTargets", + "summary": "Get a database restoration.", + "operationId": "mongoGetRestoration", "tags": [ - "messaging" + "mongo" ], - "description": "Get a list of the targets associated with a message.", + "description": "Get details of a specific database restoration including its status, type, and timestamps.", "responses": { "200": { - "description": "Target list", + "description": "Restoration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/targetList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" } } } @@ -38945,85 +43595,68 @@ }, "deprecated": false, "x-appwrite": { - "method": "listTargets", - "group": "messages", + "method": "getRestoration", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/list-targets.md", + "demo": "mongo\/get-restoration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.read", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "messageId", - "description": "Message ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<MESSAGE_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" }, { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, + "name": "restorationId", + "description": "Restoration ID.", + "required": true, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "<RESTORATION_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/messaging\/providers": { + "\/mongo\/{databaseId}\/status": { "get": { - "summary": "List providers", - "operationId": "messagingListProviders", + "summary": "Get database status.", + "operationId": "mongoGetStatus", "tags": [ - "messaging" + "mongo" ], - "description": "Get a list of all providers from the current Appwrite project.", + "description": "Get real-time health and status information for a dedicated database. Returns health status, readiness, uptime, connection info, replica status, and volume information.", "responses": { "200": { - "description": "Provider list", + "description": "Status", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/providerList" + "$ref": "#\/components\/schemas\/databaseStatus" } } } @@ -39031,189 +43664,98 @@ }, "deprecated": false, "x-appwrite": { - "method": "listProviders", - "group": "providers", + "method": "getStatus", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/list-providers.md", + "demo": "mongo\/get-status.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.read", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "schema": { "type": "string", - "x-example": "<SEARCH>", - "default": "" - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/messaging\/providers\/apns": { + "\/mongo\/{databaseId}\/upgrades": { "post": { - "summary": "Create APNS provider", - "operationId": "messagingCreateApnsProvider", + "summary": "Upgrade database version.", + "operationId": "mongoCreateUpgrade", "tags": [ - "messaging" + "mongo" ], - "description": "Create a new Apple Push Notification service provider.", + "description": "Upgrade a dedicated database to a new engine version. Uses blue-green deployment for zero-downtime cutover.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createApnsProvider", - "group": "providers", + "method": "createUpgrade", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-apns-provider.md", + "demo": "mongo\/create-upgrade.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, - "public": false, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.createAPNSProvider" - }, - "methods": [ - { - "name": "createApnsProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "authKey", - "authKeyId", - "teamId", - "bundleId", - "sandbox", - "enabled" - ], - "required": [ - "providerId", - "name" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Create a new Apple Push Notification service provider.", - "demo": "messaging\/create-apns-provider.md", - "public": false, - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.createAPNSProvider" - } - }, - { - "name": "createAPNSProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "authKey", - "authKeyId", - "teamId", - "bundleId", - "sandbox", - "enabled" - ], - "required": [ - "providerId", - "name" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Create a new Apple Push Notification service provider.", - "demo": "messaging\/create-apns-provider.md", - "public": true - } - ], + "public": true, "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -39222,59 +43764,14 @@ "schema": { "type": "object", "properties": { - "providerId": { - "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" - }, - "authKey": { - "type": "string", - "description": "APNS authentication key.", - "default": "", - "x-example": "<AUTH_KEY>" - }, - "authKeyId": { - "type": "string", - "description": "APNS authentication key ID.", - "default": "", - "x-example": "<AUTH_KEY_ID>" - }, - "teamId": { - "type": "string", - "description": "APNS team ID.", - "default": "", - "x-example": "<TEAM_ID>" - }, - "bundleId": { + "targetVersion": { "type": "string", - "description": "APNS bundle ID.", - "default": "", - "x-example": "<BUNDLE_ID>" - }, - "sandbox": { - "type": "boolean", - "description": "Use APNS sandbox environment.", - "default": false, - "x-example": false - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "description": "Target engine version to upgrade to.", + "x-example": "<TARGET_VERSION>" } }, "required": [ - "providerId", - "name" + "targetVersion" ] } } @@ -39282,301 +43779,109 @@ } } }, - "\/messaging\/providers\/apns\/{providerId}": { - "patch": { - "summary": "Update APNS provider", - "operationId": "messagingUpdateApnsProvider", + "\/mysql": { + "get": { + "summary": "List dedicated databases.", + "operationId": "mysqlList", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Apple Push Notification service provider by its unique ID.", + "description": "List all dedicated databases. Results support pagination.", "responses": { "200": { - "description": "Provider", + "description": "Dedicated databases list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateApnsProvider", - "group": "providers", + "method": "list", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-apns-provider.md", + "demo": "mysql\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, - "public": false, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.updateAPNSProvider" - }, - "methods": [ - { - "name": "updateApnsProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "enabled", - "authKey", - "authKeyId", - "teamId", - "bundleId", - "sandbox" - ], - "required": [ - "providerId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Update a Apple Push Notification service provider by its unique ID.", - "demo": "messaging\/update-apns-provider.md", - "public": false, - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.updateAPNSProvider" - } - }, - { - "name": "updateAPNSProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "enabled", - "authKey", - "authKeyId", - "teamId", - "bundleId", - "sandbox" - ], - "required": [ - "providerId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Update a Apple Push Notification service provider by its unique ID.", - "demo": "messaging\/update-apns-provider.md", - "public": true - } - ], + "public": true, "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", - "required": true, + "name": "queries", + "description": "Array of query strings.", + "required": false, "schema": { - "type": "string", - "x-example": "<PROVIDER_ID>" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - }, - "authKey": { - "type": "string", - "description": "APNS authentication key.", - "default": "", - "x-example": "<AUTH_KEY>" - }, - "authKeyId": { - "type": "string", - "description": "APNS authentication key ID.", - "default": "", - "x-example": "<AUTH_KEY_ID>" - }, - "teamId": { - "type": "string", - "description": "APNS team ID.", - "default": "", - "x-example": "<TEAM_ID>" - }, - "bundleId": { - "type": "string", - "description": "APNS bundle ID.", - "default": "", - "x-example": "<BUNDLE_ID>" - }, - "sandbox": { - "type": "boolean", - "description": "Use APNS sandbox environment.", - "x-example": false, - "x-nullable": true - } - } - } - } + "in": "query" } - } - } - }, - "\/messaging\/providers\/fcm": { + ] + }, "post": { - "summary": "Create FCM provider", - "operationId": "messagingCreateFcmProvider", + "summary": "Create a dedicated database.", + "operationId": "mysqlCreate", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Firebase Cloud Messaging provider.", + "description": "Create a new dedicated database with the chosen engine and configuration. Status will be 'provisioning' until the database is ready.", "responses": { "201": { - "description": "Provider", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createFcmProvider", - "group": "providers", + "method": "create", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-fcm-provider.md", + "demo": "mysql\/create.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, - "public": false, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.createFCMProvider" - }, - "methods": [ - { - "name": "createFcmProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "serviceAccountJSON", - "enabled" - ], - "required": [ - "providerId", - "name" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Create a new Firebase Cloud Messaging provider.", - "demo": "messaging\/create-fcm-provider.md", - "public": false, - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.createFCMProvider" - } - }, - { - "name": "createFCMProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "serviceAccountJSON", - "enabled" - ], - "required": [ - "providerId", - "name" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Create a new Firebase Cloud Messaging provider.", - "demo": "messaging\/create-fcm-provider.md", - "public": true - } - ], + "public": true, "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "requestBody": { @@ -39585,35 +43890,199 @@ "schema": { "type": "object", "properties": { - "providerId": { + "databaseId": { "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", + "description": "Database 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.", + "x-example": "<DATABASE_ID>", "x-appwrite": { "idGenerator": "ID.unique" } }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" + "name": { + "type": "string", + "description": "Database display name. Max length: 128 chars.", + "x-example": "<NAME>" + }, + "database": { + "type": "string", + "description": "Physical database\/catalog name. Defaults to databaseId.", + "default": "", + "x-example": "<DATABASE>" + }, + "engine": { + "type": "string", + "description": "Database engine. Allowed values: mysql, mariadb.", + "default": "mysql", + "x-example": "mysql" + }, + "version": { + "type": "string", + "description": "Database engine version. Defaults to latest for selected engine.", + "x-example": "17", + "x-nullable": true + }, + "specification": { + "type": "string", + "description": "Specification identifier.", + "default": "s-1vcpu-1gb", + "x-example": "<SPECIFICATION>" + }, + "backend": { + "type": "string", + "description": "Database backend provider: prisma, or edge.", + "default": "edge", + "x-example": "prisma" + }, + "cpu": { + "type": "integer", + "description": "CPU in millicores (125-16000).", + "default": 1000, + "x-example": 125, + "format": "int32" + }, + "memory": { + "type": "integer", + "description": "Memory in MB to allocate (128-65536).", + "default": 1024, + "x-example": 128, + "format": "int32" + }, + "storage": { + "type": "integer", + "description": "Storage in GB to allocate (1-16384).", + "default": 10, + "x-example": 1, + "format": "int32" + }, + "storageClass": { + "type": "string", + "description": "Storage class. Allowed values: ssd. DigitalOcean exposes a single block-storage class, so only 'ssd' is offered today.", + "default": "ssd", + "x-example": "ssd" + }, + "storageMaxGb": { + "type": "integer", + "description": "Maximum storage limit in GB. 0 uses system default.", + "default": 0, + "x-example": 0, + "format": "int32" + }, + "replicas": { + "type": "integer", + "description": "Number of high availability replicas (0-5). High availability is enabled when greater than 0.", + "default": 0, + "x-example": 0, + "format": "int32" + }, + "highAvailabilitySyncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true + }, + "networkMaxConnections": { + "type": "integer", + "description": "Maximum concurrent connections.", + "default": 100, + "x-example": 10, + "format": "int32" + }, + "networkIdleTimeoutSeconds": { + "type": "integer", + "description": "Connection idle timeout in seconds.", + "default": 900, + "x-example": 60, + "format": "int32" }, - "serviceAccountJSON": { - "type": "object", - "description": "FCM service account JSON.", - "default": {}, - "x-example": "{}", + "networkIPAllowlist": { + "type": "array", + "description": "IP addresses\/CIDR ranges allowed to connect.", + "x-example": null, + "items": { + "type": "string" + }, "x-nullable": true }, - "enabled": { + "idleTimeoutMinutes": { + "type": "integer", + "description": "Minutes of inactivity before container scales to zero.", + "default": 15, + "x-example": 5, + "format": "int32" + }, + "backupEnabled": { "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "description": "Enable automatic backups.", + "default": true, + "x-example": false + }, + "backupPitr": { + "type": "boolean", + "description": "Enable point-in-time recovery.", + "default": true, + "x-example": false + }, + "backupCron": { + "type": "string", + "description": "Backup schedule in cron format.", + "default": "0 3 * * *", + "x-example": null + }, + "backupRetentionDays": { + "type": "integer", + "description": "Number of days to retain backups.", + "default": 14, + "x-example": 1, + "format": "int32" + }, + "pitrRetentionDays": { + "type": "integer", + "description": "Number of days to retain PITR data.", + "default": 7, + "x-example": 1, + "format": "int32" + }, + "storageAutoscaling": { + "type": "boolean", + "description": "Enable automatic storage expansion when usage exceeds threshold.", + "default": false, + "x-example": false + }, + "storageAutoscalingThresholdPercent": { + "type": "integer", + "description": "Storage usage percentage (50-95) that triggers automatic expansion.", + "default": 85, + "x-example": 50, + "format": "int32" + }, + "storageAutoscalingMaxGb": { + "type": "integer", + "description": "Maximum storage size in GB for autoscaling. 0 means no limit.", + "default": 0, + "x-example": 0, + "format": "int32" + }, + "metricsEnabled": { + "type": "boolean", + "description": "Enable metrics collection. Enabled by default; pass false to opt out.", + "default": true, + "x-example": false + }, + "poolerEnabled": { + "type": "boolean", + "description": "Enable connection pooler on provision.", + "default": true, + "x-example": false + }, + "api": { + "type": "string", + "description": "Product API that owns this database: compute (raw, direct-access), tablesdb, documentsdb, or vectorsdb. tablesdb\/documentsdb\/vectorsdb computes are reached only through their product APIs.", + "default": "compute", + "x-example": "compute" } }, "required": [ - "providerId", + "databaseId", "name" ] } @@ -39622,175 +44091,68 @@ } } }, - "\/messaging\/providers\/fcm\/{providerId}": { - "patch": { - "summary": "Update FCM provider", - "operationId": "messagingUpdateFcmProvider", + "\/mysql\/specifications": { + "get": { + "summary": "List dedicated database specifications.", + "operationId": "mysqlListSpecifications", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Firebase Cloud Messaging provider by its unique ID.", + "description": "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.", "responses": { "200": { - "description": "Provider", + "description": "SpecificationList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseSpecificationList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateFcmProvider", - "group": "providers", + "method": "listSpecifications", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-fcm-provider.md", + "demo": "mysql\/list-specifications.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, - "public": false, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.updateFCMProvider" - }, - "methods": [ - { - "name": "updateFcmProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "enabled", - "serviceAccountJSON" - ], - "required": [ - "providerId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Update a Firebase Cloud Messaging provider by its unique ID.", - "demo": "messaging\/update-fcm-provider.md", - "public": false, - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.updateFCMProvider" - } - }, - { - "name": "updateFCMProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "enabled", - "serviceAccountJSON" - ], - "required": [ - "providerId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Update a Firebase Cloud Messaging provider by its unique ID.", - "demo": "messaging\/update-fcm-provider.md", - "public": true - } - ], + "public": true, "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "providerId", - "description": "Provider ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<PROVIDER_ID>" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - }, - "serviceAccountJSON": { - "type": "object", - "description": "FCM service account JSON.", - "default": {}, - "x-example": "{}", - "x-nullable": true - } - } - } - } + "Project": [] } - } + ] } }, - "\/messaging\/providers\/mailgun": { - "post": { - "summary": "Create Mailgun provider", - "operationId": "messagingCreateMailgunProvider", + "\/mysql\/{databaseId}": { + "get": { + "summary": "Get dedicated database.", + "operationId": "mysqlGet", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Mailgun provider.", + "description": "Get a dedicated database by its unique ID. Returns the database configuration and current status.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -39798,127 +44160,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "createMailgunProvider", - "group": "providers", + "method": "get", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-mailgun-provider.md", + "demo": "mysql\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "providerId": { - "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" - }, - "apiKey": { - "type": "string", - "description": "Mailgun API Key.", - "default": "", - "x-example": "<API_KEY>" - }, - "domain": { - "type": "string", - "description": "Mailgun Domain.", - "default": "", - "x-example": "<DOMAIN>" - }, - "isEuRegion": { - "type": "boolean", - "description": "Set as EU region.", - "x-example": false, - "x-nullable": true - }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" - }, - "fromEmail": { - "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "replyToName": { - "type": "string", - "description": "Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.", - "default": "", - "x-example": "<REPLY_TO_NAME>" - }, - "replyToEmail": { - "type": "string", - "description": "Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - } - }, - "required": [ - "providerId", - "name" - ] - } - } + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } - } - } - }, - "\/messaging\/providers\/mailgun\/{providerId}": { + ] + }, "patch": { - "summary": "Update Mailgun provider", - "operationId": "messagingUpdateMailgunProvider", + "summary": "Update dedicated database.", + "operationId": "mysqlUpdate", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Mailgun provider by its unique ID.", + "description": "Update a dedicated database configuration. All changes are applied with zero downtime. Resource changes (cpu, memory) are handled via rolling cutover. Storage expansion is done online. All other settings are applied in-place.", "responses": { "200": { - "description": "Provider", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -39926,40 +44217,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateMailgunProvider", - "group": "providers", + "method": "update", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-mailgun-provider.md", + "demo": "mysql\/update.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -39972,183 +44260,281 @@ "properties": { "name": { "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" + "description": "Database display name.", + "x-example": "<NAME>", + "x-nullable": true + }, + "status": { + "type": "string", + "description": "Database status. Allowed values: ready, paused, inactive. Set to \"paused\" to pause, \"ready\" to resume (also recovers a failed database whose infrastructure is healthy), or \"inactive\" to spin down a shared-pool database.", + "x-example": "ready", + "x-nullable": true + }, + "specification": { + "type": "string", + "description": "Specification. Changes cpu, memory, and node pool based on specification config.", + "x-example": "<SPECIFICATION>", + "x-nullable": true + }, + "cpu": { + "type": "number", + "description": "CPU cores to allocate (125-16000).", + "x-example": 125, + "format": "float", + "x-nullable": true + }, + "memory": { + "type": "integer", + "description": "Memory in MB to allocate (128-65536).", + "x-example": 128, + "format": "int32", + "x-nullable": true + }, + "storage": { + "type": "integer", + "description": "Storage in GB to allocate (1-16384).", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "storageClass": { + "type": "string", + "description": "Storage class. Allowed values: ssd.", + "x-example": "ssd", + "x-nullable": true + }, + "replicas": { + "type": "integer", + "description": "Number of high availability replicas (0-5). High availability is enabled when greater than 0.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "highAvailabilitySyncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true + }, + "networkMaxConnections": { + "type": "integer", + "description": "Maximum concurrent connections.", + "x-example": 10, + "format": "int32", + "x-nullable": true + }, + "networkIdleTimeoutSeconds": { + "type": "integer", + "description": "Connection idle timeout in seconds (60-86400).", + "x-example": 60, + "format": "int32", + "x-nullable": true + }, + "networkIPAllowlist": { + "type": "array", + "description": "IP addresses\/CIDR ranges allowed to connect.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "idleTimeoutMinutes": { + "type": "integer", + "description": "Minutes before container scales to zero.", + "x-example": 5, + "format": "int32", + "x-nullable": true + }, + "backupEnabled": { + "type": "boolean", + "description": "Enable automatic backups.", + "x-example": false, + "x-nullable": true + }, + "backupPitr": { + "type": "boolean", + "description": "Enable point-in-time recovery.", + "x-example": false, + "x-nullable": true + }, + "backupCron": { + "type": "string", + "description": "Backup schedule in cron format.", + "x-example": null, + "x-nullable": true + }, + "backupRetentionDays": { + "type": "integer", + "description": "Days to retain backups.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "pitrRetentionDays": { + "type": "integer", + "description": "Days to retain PITR data.", + "x-example": 1, + "format": "int32", + "x-nullable": true }, - "apiKey": { - "type": "string", - "description": "Mailgun API Key.", - "default": "", - "x-example": "<API_KEY>" + "storageAutoscaling": { + "type": "boolean", + "description": "Enable automatic storage expansion when usage exceeds threshold.", + "x-example": false, + "x-nullable": true }, - "domain": { - "type": "string", - "description": "Mailgun Domain.", - "default": "", - "x-example": "<DOMAIN>" + "storageAutoscalingThresholdPercent": { + "type": "integer", + "description": "Storage usage percentage (50-95) that triggers automatic expansion.", + "x-example": 50, + "format": "int32", + "x-nullable": true }, - "isEuRegion": { + "storageAutoscalingMaxGb": { + "type": "integer", + "description": "Maximum storage size in GB for autoscaling. 0 means no limit.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "poolerEnabled": { "type": "boolean", - "description": "Set as EU region.", + "description": "Attach or detach the connection pooler sidecar. Set to true to add the sidecar (no-op if already attached) or false to remove it.", "x-example": false, "x-nullable": true }, - "enabled": { + "metricsEnabled": { "type": "boolean", - "description": "Set as enabled.", + "description": "Enable or disable the metrics-agent sidecar.", "x-example": false, "x-nullable": true }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" + "metricsTraceSampleRate": { + "type": "number", + "description": "Fraction of queries to trace (0.0\u20131.0). Forwarded to the sidecar.", + "x-example": null, + "format": "float", + "x-nullable": true }, - "fromEmail": { - "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" + "metricsSlowQueryLogThresholdMs": { + "type": "integer", + "description": "Threshold in ms above which queries are logged as slow. Forwarded to the sidecar.", + "x-example": 0, + "format": "int32", + "x-nullable": true }, - "replyToName": { - "type": "string", - "description": "Name set in the reply to field for the mail. Default value is sender name.", - "default": "", - "x-example": "<REPLY_TO_NAME>" + "sqlApiEnabled": { + "type": "boolean", + "description": "Enable the SQL API sidecar for this database.", + "x-example": false, + "x-nullable": true }, - "replyToEmail": { - "type": "string", - "description": "Email set in the reply to field for the mail. Default value is sender email.", - "default": "", - "x-example": "<REPLY_TO_EMAIL>" + "sqlApiAllowedStatements": { + "type": "array", + "description": "Statement types the SQL API accepts. Allowed values: SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, TRUNCATE, GRANT, REVOKE.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "sqlApiMaxRows": { + "type": "integer", + "description": "Maximum rows returned per SQL API execution (1-1000000).", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "sqlApiMaxBytes": { + "type": "integer", + "description": "Maximum serialised SQL API result payload in bytes (1024-104857600).", + "x-example": 1024, + "format": "int32", + "x-nullable": true + }, + "sqlApiTimeoutSeconds": { + "type": "integer", + "description": "Per-call SQL API execution timeout in seconds (1-300).", + "x-example": 1, + "format": "int32", + "x-nullable": true } } } } } } - } - }, - "\/messaging\/providers\/msg91": { - "post": { - "summary": "Create Msg91 provider", - "operationId": "messagingCreateMsg91Provider", + }, + "delete": { + "summary": "Delete dedicated database.", + "operationId": "mysqlDelete", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new MSG91 provider.", + "description": "Delete a dedicated database. This action is irreversible. The database status will be set to 'deleting' and all resources will be cleaned up. Deletion is allowed from any state, and repeating the call re-dispatches the cleanup.", "responses": { - "201": { - "description": "Provider", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/provider" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "createMsg91Provider", - "group": "providers", + "method": "delete", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-msg-91-provider.md", + "demo": "mysql\/delete.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "providerId": { - "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" - }, - "templateId": { - "type": "string", - "description": "Msg91 template ID", - "default": "", - "x-example": "<TEMPLATE_ID>" - }, - "senderId": { - "type": "string", - "description": "Msg91 sender ID.", - "default": "", - "x-example": "<SENDER_ID>" - }, - "authKey": { - "type": "string", - "description": "Msg91 auth key.", - "default": "", - "x-example": "<AUTH_KEY>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - } - }, - "required": [ - "providerId", - "name" - ] - } - } + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } - } + ] } }, - "\/messaging\/providers\/msg91\/{providerId}": { - "patch": { - "summary": "Update Msg91 provider", - "operationId": "messagingUpdateMsg91Provider", + "\/mysql\/{databaseId}\/backups": { + "get": { + "summary": "List database backups.", + "operationId": "mysqlListBackups", "tags": [ - "messaging" + "mysql" ], - "description": "Update a MSG91 provider by its unique ID.", + "description": "List all backups for a dedicated database. Results can be filtered by status and type.", "responses": { "200": { - "description": "Provider", + "description": "BackupList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupList" } } } @@ -40156,102 +44542,69 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateMsg91Provider", - "group": "providers", + "method": "listBackups", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-msg-91-provider.md", + "demo": "mysql\/list-backups.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, type, databaseId", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - }, - "templateId": { - "type": "string", - "description": "Msg91 template ID.", - "default": "", - "x-example": "<TEMPLATE_ID>" - }, - "senderId": { - "type": "string", - "description": "Msg91 sender ID.", - "default": "", - "x-example": "<SENDER_ID>" - }, - "authKey": { - "type": "string", - "description": "Msg91 auth key.", - "default": "", - "x-example": "<AUTH_KEY>" - } - } - } - } - } - } - } - }, - "\/messaging\/providers\/resend": { + ] + }, "post": { - "summary": "Create Resend provider", - "operationId": "messagingCreateResendProvider", + "summary": "Create a database backup.", + "operationId": "mysqlCreateBackup", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Resend provider.", + "description": "Create a manual backup of a dedicated database. The backup will be created asynchronously and its status can be checked via the get backup endpoint.", "responses": { - "201": { - "description": "Provider", + "202": { + "description": "Backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -40259,30 +44612,39 @@ }, "deprecated": false, "x-appwrite": { - "method": "createResendProvider", - "group": "providers", + "method": "createBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-resend-provider.md", + "demo": "mysql\/create-backup.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-resend-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -40291,83 +44653,34 @@ "schema": { "type": "object", "properties": { - "providerId": { - "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" - }, - "apiKey": { - "type": "string", - "description": "Resend API key.", - "default": "", - "x-example": "<API_KEY>" - }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" - }, - "fromEmail": { - "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "replyToName": { - "type": "string", - "description": "Name set in the reply to field for the mail. Default value is sender name.", - "default": "", - "x-example": "<REPLY_TO_NAME>" - }, - "replyToEmail": { + "type": { "type": "string", - "description": "Email set in the reply to field for the mail. Default value is sender email.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" } - }, - "required": [ - "providerId", - "name" - ] + } } } } } } }, - "\/messaging\/providers\/resend\/{providerId}": { - "patch": { - "summary": "Update Resend provider", - "operationId": "messagingUpdateResendProvider", + "\/mysql\/{databaseId}\/backups\/policies": { + "get": { + "summary": "List database backup policies.", + "operationId": "mysqlListBackupPolicies", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Resend provider by its unique ID.", + "description": "List scheduled backup policies for a dedicated database.", "responses": { "200": { - "description": "Provider", + "description": "Backup policy list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/backupPolicyList" } } } @@ -40375,146 +44688,109 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateResendProvider", - "group": "providers", + "method": "listBackupPolicies", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-resend-provider.md", + "demo": "mysql\/list-backup-policies.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-resend-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - }, - "apiKey": { - "type": "string", - "description": "Resend API key.", - "default": "", - "x-example": "<API_KEY>" - }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" - }, - "fromEmail": { - "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "replyToName": { - "type": "string", - "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", - "default": "", - "x-example": "<REPLY_TO_NAME>" - }, - "replyToEmail": { - "type": "string", - "description": "Email set in the Reply To field for the mail. Default value is Sender Email.", - "default": "", - "x-example": "<REPLY_TO_EMAIL>" - } - } - } - } - } - } - } - }, - "\/messaging\/providers\/sendgrid": { + ] + }, "post": { - "summary": "Create Sendgrid provider", - "operationId": "messagingCreateSendgridProvider", + "summary": "Create a database backup policy.", + "operationId": "mysqlCreateBackupPolicy", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Sendgrid provider.", + "description": "Create a scheduled backup policy for a dedicated database.", "responses": { "201": { - "description": "Provider", + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/backupPolicy" } } } } }, "deprecated": false, - "x-appwrite": { - "method": "createSendgridProvider", - "group": "providers", + "x-appwrite": { + "method": "createBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-sendgrid-provider.md", + "demo": "mysql\/create-backup-policy.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sendgrid-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -40523,61 +44799,48 @@ "schema": { "type": "object", "properties": { - "providerId": { + "policyId": { "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", + "description": "Policy 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.", + "x-example": "<POLICY_ID>", "x-appwrite": { "idGenerator": "ID.unique" } }, "name": { "type": "string", - "description": "Provider name.", + "description": "Policy name. Max length: 128 chars.", "x-example": "<NAME>" }, - "apiKey": { - "type": "string", - "description": "Sendgrid API key.", - "default": "", - "x-example": "<API_KEY>" - }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" - }, - "fromEmail": { + "schedule": { "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" + "description": "Schedule CRON syntax.", + "x-example": null }, - "replyToName": { - "type": "string", - "description": "Name set in the reply to field for the mail. Default value is sender name.", - "default": "", - "x-example": "<REPLY_TO_NAME>" + "retention": { + "type": "integer", + "description": "Days to keep backups before deletion.", + "x-example": 1, + "format": "int32" }, - "replyToEmail": { + "type": { "type": "string", - "description": "Email set in the reply to field for the mail. Default value is sender email.", - "default": "", - "x-example": "email@example.com", - "format": "email" + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" }, "enabled": { "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "description": "Is policy enabled? When disabled, no backups will be taken.", + "default": true, + "x-example": false } }, "required": [ - "providerId", - "name" + "policyId", + "name", + "schedule", + "retention" ] } } @@ -40585,21 +44848,21 @@ } } }, - "\/messaging\/providers\/sendgrid\/{providerId}": { - "patch": { - "summary": "Update Sendgrid provider", - "operationId": "messagingUpdateSendgridProvider", + "\/mysql\/{databaseId}\/backups\/storage": { + "put": { + "summary": "Update database backup storage.", + "operationId": "mysqlUpdateBackupStorage", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Sendgrid provider by its unique ID.", + "description": "Configure off-cluster backup storage for a dedicated database. Supports S3, GCS, and Azure Blob Storage destinations. Backups will be stored to the configured destination in addition to on-cluster storage.", "responses": { "200": { - "description": "Provider", + "description": "BackupStorageConfig", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupStorage" } } } @@ -40607,40 +44870,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateSendgridProvider", - "group": "providers", + "method": "updateBackupStorage", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-sendgrid-provider.md", + "demo": "mysql\/update-backup-storage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -40651,71 +44911,72 @@ "schema": { "type": "object", "properties": { - "name": { + "provider": { "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" + "description": "Storage provider for off-cluster backups. Allowed values: s3 (Amazon S3 or S3-compatible), gcs (Google Cloud Storage), azure (Azure Blob Storage).", + "x-example": "s3" }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "bucket": { + "type": "string", + "description": "Storage bucket or container name.", + "x-example": "<BUCKET>" }, - "apiKey": { + "region": { "type": "string", - "description": "Sendgrid API key.", + "description": "Storage region.", "default": "", - "x-example": "<API_KEY>" + "x-example": "<REGION>" }, - "fromName": { + "prefix": { "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" + "description": "Object key prefix for backups.", + "default": "backups\/", + "x-example": "<PREFIX>" }, - "fromEmail": { + "endpoint": { "type": "string", - "description": "Sender email address.", + "description": "Custom endpoint for S3-compatible storage (e.g. MinIO).", "default": "", - "x-example": "email@example.com", - "format": "email" + "x-example": "<ENDPOINT>" }, - "replyToName": { + "accessKey": { "type": "string", - "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", - "default": "", - "x-example": "<REPLY_TO_NAME>" + "description": "Access key or client ID for authentication.", + "x-example": "<ACCESS_KEY>" }, - "replyToEmail": { + "secretKey": { "type": "string", - "description": "Email set in the Reply To field for the mail. Default value is Sender Email.", - "default": "", - "x-example": "<REPLY_TO_EMAIL>" + "description": "Secret key or service account JSON for authentication.", + "x-example": "<SECRET_KEY>" } - } + }, + "required": [ + "provider", + "bucket", + "accessKey", + "secretKey" + ] } } } } } }, - "\/messaging\/providers\/ses": { - "post": { - "summary": "Create Amazon SES provider", - "operationId": "messagingCreateSesProvider", + "\/mysql\/{databaseId}\/backups\/{backupId}": { + "get": { + "summary": "Get a database backup.", + "operationId": "mysqlGetBackup", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Amazon SES provider.", + "description": "Get details of a specific database backup including its status, size, and timestamps.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "Backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -40723,372 +44984,228 @@ }, "deprecated": false, "x-appwrite": { - "method": "createSesProvider", - "group": "providers", + "method": "getBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-ses-provider.md", + "demo": "mysql\/get-backup.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-ses-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "providerId": { - "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" - }, - "accessKey": { - "type": "string", - "description": "AWS access key ID.", - "default": "", - "x-example": "<ACCESS_KEY>" - }, - "secretKey": { - "type": "string", - "description": "AWS secret access key.", - "default": "", - "x-example": "<SECRET_KEY>" - }, - "region": { - "type": "string", - "description": "AWS region, for example us-east-1.", - "default": "", - "x-example": "<REGION>" - }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" - }, - "fromEmail": { - "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "replyToName": { - "type": "string", - "description": "Name set in the reply to field for the mail. Default value is sender name.", - "default": "", - "x-example": "<REPLY_TO_NAME>" - }, - "replyToEmail": { - "type": "string", - "description": "Email set in the reply to field for the mail. Default value is sender email.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - } - }, - "required": [ - "providerId", - "name" - ] - } - } + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "backupId", + "description": "Backup ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BACKUP_ID>" + }, + "in": "path" } - } - } - }, - "\/messaging\/providers\/ses\/{providerId}": { - "patch": { - "summary": "Update Amazon SES provider", - "operationId": "messagingUpdateSesProvider", + ] + }, + "delete": { + "summary": "Delete a database backup.", + "operationId": "mysqlDeleteBackup", "tags": [ - "messaging" + "mysql" ], - "description": "Update an Amazon SES provider by its unique ID.", + "description": "Delete a database backup. This will permanently remove the backup from storage and cannot be undone.", "responses": { - "200": { - "description": "Provider", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/provider" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "updateSesProvider", - "group": "providers", + "method": "deleteBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-ses-provider.md", + "demo": "mysql\/delete-backup.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-ses-provider.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "backupId", + "description": "Backup ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BACKUP_ID>" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - }, - "accessKey": { - "type": "string", - "description": "AWS access key ID.", - "default": "", - "x-example": "<ACCESS_KEY>" - }, - "secretKey": { - "type": "string", - "description": "AWS secret access key.", - "default": "", - "x-example": "<SECRET_KEY>" - }, - "region": { - "type": "string", - "description": "AWS region, for example us-east-1.", - "default": "", - "x-example": "<REGION>" - }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" - }, - "fromEmail": { - "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "replyToName": { - "type": "string", - "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", - "default": "", - "x-example": "<REPLY_TO_NAME>" - }, - "replyToEmail": { - "type": "string", - "description": "Email set in the Reply To field for the mail. Default value is Sender Email.", - "default": "", - "x-example": "<REPLY_TO_EMAIL>" - } - } - } - } - } - } + ] } }, - "\/messaging\/providers\/smtp": { - "post": { - "summary": "Create SMTP provider", - "operationId": "messagingCreateSmtpProvider", + "\/mysql\/{databaseId}\/branches": { + "get": { + "summary": "List database branches.", + "operationId": "mysqlListBranches", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new SMTP provider.", + "description": "List all ephemeral branches for a dedicated database. Returns branch metadata including ID, name, namespace, and expiration time.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "BranchList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBranchList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createSmtpProvider", - "group": "providers", + "method": "listBranches", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-smtp-provider.md", + "demo": "mysql\/list-branches.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, - "public": false, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.createSMTPProvider" - }, - "methods": [ - { - "name": "createSmtpProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "host", - "port", - "username", - "password", - "encryption", - "autoTLS", - "mailer", - "fromName", - "fromEmail", - "replyToName", - "replyToEmail", - "enabled" - ], - "required": [ - "providerId", - "name", - "host" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Create a new SMTP provider.", - "demo": "messaging\/create-smtp-provider.md", - "public": false, - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.createSMTPProvider" - } + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" }, - { - "name": "createSMTPProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "host", - "port", - "username", - "password", - "encryption", - "autoTLS", - "mailer", - "fromName", - "fromEmail", - "replyToName", - "replyToEmail", - "enabled" - ], - "required": [ - "providerId", - "name", - "host" - ], - "responses": [ - { - "code": 201, - "model": "#\/components\/schemas\/provider" + "in": "path" + } + ] + }, + "post": { + "summary": "Create a database branch.", + "operationId": "mysqlCreateBranch", + "tags": [ + "mysql" + ], + "description": "Create an ephemeral database branch from the primary via PVC snapshot. The branch is a full copy of the database at the current point in time, useful for testing schema migrations or running experiments without affecting production data. Branches expire after the configured TTL (default 24 hours). The branch is created asynchronously.", + "responses": { + "202": { + "description": "DedicatedDatabase", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabase" } - ], - "description": "Create a new SMTP provider.", - "demo": "messaging\/create-smtp-provider.md", - "public": true + } } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createBranch", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/create-branch.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console" ], + "packaging": false, + "public": true, "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -41097,377 +45214,229 @@ "schema": { "type": "object", "properties": { - "providerId": { + "branchId": { "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", + "description": "Branch 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.", + "default": "", + "x-example": "<BRANCH_ID>", "x-appwrite": { "idGenerator": "ID.unique" } }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" - }, - "host": { - "type": "string", - "description": "SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"`. Hosts will be tried in order.", - "x-example": "<HOST>" - }, - "port": { + "ttl": { "type": "integer", - "description": "The default SMTP server port.", - "default": 587, - "x-example": 1, + "description": "Time-to-live in seconds before the branch expires. Min 300 (5 min), max 604800 (7 days). Default: 86400 (24h).", + "default": 86400, + "x-example": 300, "format": "int32" - }, - "username": { - "type": "string", - "description": "Authentication username.", - "default": "", - "x-example": "<USERNAME>" - }, - "password": { - "type": "string", - "description": "Authentication password.", - "default": "", - "x-example": "password", - "format": "password" - }, - "encryption": { - "type": "string", - "description": "Encryption type. Can be omitted, 'ssl', or 'tls'", - "x-example": "none", - "enum": [ - "none", - "ssl", - "tls" - ], - "x-enum-name": "SmtpEncryption", - "x-enum-keys": [ - "none", - "ssl", - "tls" - ] - }, - "autoTLS": { - "type": "boolean", - "description": "Enable SMTP AutoTLS feature.", - "default": true, - "x-example": false - }, - "mailer": { - "type": "string", - "description": "The value to use for the X-Mailer header.", - "default": "", - "x-example": "<MAILER>" - }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" - }, - "fromEmail": { - "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "replyToName": { - "type": "string", - "description": "Name set in the reply to field for the mail. Default value is sender name.", - "default": "", - "x-example": "<REPLY_TO_NAME>" - }, - "replyToEmail": { - "type": "string", - "description": "Email set in the reply to field for the mail. Default value is sender email.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true } - }, - "required": [ - "providerId", - "name", - "host" - ] + } } } } } } }, - "\/messaging\/providers\/smtp\/{providerId}": { - "patch": { - "summary": "Update SMTP provider", - "operationId": "messagingUpdateSmtpProvider", + "\/mysql\/{databaseId}\/branches\/{branchId}": { + "delete": { + "summary": "Delete a database branch.", + "operationId": "mysqlDeleteBranch", "tags": [ - "messaging" + "mysql" ], - "description": "Update a SMTP provider by its unique ID.", + "description": "Delete an ephemeral database branch. This removes the branch namespace, its PVC, and the associated VolumeSnapshot. The deletion runs asynchronously and is irreversible.", "responses": { - "200": { - "description": "Provider", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateSmtpProvider", - "group": "providers", + "method": "deleteBranch", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-smtp-provider.md", + "demo": "mysql\/delete-branch.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, - "public": false, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.updateSMTPProvider" + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" }, - "methods": [ - { - "name": "updateSmtpProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "host", - "port", - "username", - "password", - "encryption", - "autoTLS", - "mailer", - "fromName", - "fromEmail", - "replyToName", - "replyToEmail", - "enabled" - ], - "required": [ - "providerId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/provider" - } - ], - "description": "Update a SMTP provider by its unique ID.", - "demo": "messaging\/update-smtp-provider.md", - "public": false, - "deprecated": { - "since": "1.8.0", - "replaceWith": "messaging.updateSMTPProvider" - } + { + "name": "branchId", + "description": "Branch ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BRANCH_ID>" }, - { - "name": "updateSMTPProvider", - "namespace": "messaging", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "providerId", - "name", - "host", - "port", - "username", - "password", - "encryption", - "autoTLS", - "mailer", - "fromName", - "fromEmail", - "replyToName", - "replyToEmail", - "enabled" - ], - "required": [ - "providerId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/provider" + "in": "path" + } + ] + } + }, + "\/mysql\/{databaseId}\/credentials": { + "get": { + "summary": "Get database credentials.", + "operationId": "mysqlGetCredentials", + "tags": [ + "mysql" + ], + "description": "Get connection credentials for a dedicated database. Returns the hostname, port, username, password, database name, and full connection string.", + "responses": { + "200": { + "description": "Credentials", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" } - ], - "description": "Update a SMTP provider by its unique ID.", - "demo": "messaging\/update-smtp-provider.md", - "public": true + } } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getCredentials", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/get-credentials.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console" ], + "packaging": false, + "public": true, "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } + ] + }, + "patch": { + "summary": "Update database credentials.", + "operationId": "mysqlUpdateCredentials", + "tags": [ + "mysql" ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "host": { - "type": "string", - "description": "SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"`. Hosts will be tried in order.", - "default": "", - "x-example": "<HOST>" - }, - "port": { - "type": "integer", - "description": "SMTP port.", - "x-example": 1, - "format": "int32", - "x-nullable": true - }, - "username": { - "type": "string", - "description": "Authentication username.", - "default": "", - "x-example": "<USERNAME>" - }, - "password": { - "type": "string", - "description": "Authentication password.", - "default": "", - "x-example": "password", - "format": "password" - }, - "encryption": { - "type": "string", - "description": "Encryption type. Can be 'ssl' or 'tls'", - "x-example": "none", - "enum": [ - "none", - "ssl", - "tls" - ], - "x-enum-name": "SmtpEncryption", - "x-enum-keys": [ - "none", - "ssl", - "tls" - ] - }, - "autoTLS": { - "type": "boolean", - "description": "Enable SMTP AutoTLS feature.", - "x-example": false, - "x-nullable": true - }, - "mailer": { - "type": "string", - "description": "The value to use for the X-Mailer header.", - "default": "", - "x-example": "<MAILER>" - }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" - }, - "fromEmail": { - "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" - }, - "replyToName": { - "type": "string", - "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", - "default": "", - "x-example": "<REPLY_TO_NAME>" - }, - "replyToEmail": { - "type": "string", - "description": "Email set in the Reply To field for the mail. Default value is Sender Email.", - "default": "", - "x-example": "<REPLY_TO_EMAIL>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - } + "description": "Rotate the primary credentials for a dedicated database. Generates a new password and updates the database. Previous credentials will stop working immediately.", + "responses": { + "200": { + "description": "Credentials", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" } } } } - } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateCredentials", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/update-credentials.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + } + ] } }, - "\/messaging\/providers\/telesign": { + "\/mysql\/{databaseId}\/executions": { "post": { - "summary": "Create Telesign provider", - "operationId": "messagingCreateTelesignProvider", + "summary": "Execute a SQL statement against a dedicated database.", + "operationId": "mysqlCreateExecution", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Telesign provider.", + "description": "Execute SQL through the console-facing Cloud endpoint. Cloud proxies through the edge platform to the per-database SQL API sidecar. Application traffic should bypass cloud entirely and POST directly to the per-database hostname: `https:\/\/db-{project}-{db}.{region}.appwrite.center\/v1\/sql\/executions` with an `X-Appwrite-Key` header \u2014 that path scales to the whole DB fleet without a per-query cloud round-trip. The statement type must be on the database's configured allow-list. Use bound parameters for any user-supplied values \u2014 the API does not interpolate raw strings.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "Execution", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseExecution" } } } @@ -41475,30 +45444,39 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTelesignProvider", - "group": "providers", + "method": "createExecution", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-telesign-provider.md", + "demo": "mysql\/create-execution.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -41507,48 +45485,28 @@ "schema": { "type": "object", "properties": { - "providerId": { - "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" - }, - "from": { - "type": "string", - "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", - "default": "", - "x-example": "+12065550100", - "format": "phone" - }, - "customerId": { + "sql": { "type": "string", - "description": "Telesign customer ID.", - "default": "", - "x-example": "<CUSTOMER_ID>" + "description": "SQL statement to execute. Exactly one statement per request.", + "x-example": "<SQL>" }, - "apiKey": { - "type": "string", - "description": "Telesign API key.", - "default": "", - "x-example": "<API_KEY>" + "bindings": { + "type": "object", + "description": "Optional bound parameters. Pass either a positional list or a name => value map matching the placeholder style used in the SQL.", + "default": {}, + "x-example": "{}", + "x-nullable": true }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, + "timeoutSeconds": { + "type": "integer", + "description": "Per-call execution timeout override. Must be less than or equal to the database's configured sqlApiTimeoutSeconds.", + "x-example": 1, + "format": "int32", "x-nullable": true } }, "required": [ - "providerId", - "name" + "sql" ] } } @@ -41556,21 +45514,21 @@ } } }, - "\/messaging\/providers\/telesign\/{providerId}": { - "patch": { - "summary": "Update Telesign provider", - "operationId": "messagingUpdateTelesignProvider", + "\/mysql\/{databaseId}\/failovers": { + "post": { + "summary": "Trigger manual failover.", + "operationId": "mysqlCreateFailover", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Telesign provider by its unique ID.", + "description": "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.", "responses": { - "200": { - "description": "Provider", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -41578,40 +45536,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTelesignProvider", - "group": "providers", + "method": "createFailover", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-telesign-provider.md", + "demo": "mysql\/create-failover.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -41622,35 +45577,11 @@ "schema": { "type": "object", "properties": { - "name": { + "targetReplicaId": { "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, + "description": "Target replica ID to promote. If not specified, the healthiest replica is selected.", + "x-example": "<TARGET_REPLICA_ID>", "x-nullable": true - }, - "customerId": { - "type": "string", - "description": "Telesign customer ID.", - "default": "", - "x-example": "<CUSTOMER_ID>" - }, - "apiKey": { - "type": "string", - "description": "Telesign API key.", - "default": "", - "x-example": "<API_KEY>" - }, - "from": { - "type": "string", - "description": "Sender number.", - "default": "", - "x-example": "<FROM>" } } } @@ -41659,21 +45590,21 @@ } } }, - "\/messaging\/providers\/textmagic": { - "post": { - "summary": "Create Textmagic provider", - "operationId": "messagingCreateTextmagicProvider", + "\/mysql\/{databaseId}\/maintenance": { + "patch": { + "summary": "Update database maintenance window.", + "operationId": "mysqlUpdateMaintenanceWindow", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Textmagic provider.", + "description": "Update the maintenance window for a dedicated database. Maintenance operations like minor version upgrades will be performed during this window.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -41681,30 +45612,39 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTextmagicProvider", - "group": "providers", + "method": "updateMaintenanceWindow", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-textmagic-provider.md", + "demo": "mysql\/update-maintenance-window.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -41713,48 +45653,21 @@ "schema": { "type": "object", "properties": { - "providerId": { - "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" - }, - "from": { - "type": "string", - "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", - "default": "", - "x-example": "+12065550100", - "format": "phone" - }, - "username": { - "type": "string", - "description": "Textmagic username.", - "default": "", - "x-example": "<USERNAME>" - }, - "apiKey": { + "day": { "type": "string", - "description": "Textmagic apiKey.", - "default": "", - "x-example": "<API_KEY>" + "description": "Day of the week for the maintenance window. Allowed values: sun, mon, tue, wed, thu, fri, sat.", + "x-example": "sun" }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "hourUtc": { + "type": "integer", + "description": "Hour in UTC (0-23) for maintenance window start.", + "x-example": 0, + "format": "int32" } }, "required": [ - "providerId", - "name" + "day", + "hourUtc" ] } } @@ -41762,21 +45675,21 @@ } } }, - "\/messaging\/providers\/textmagic\/{providerId}": { - "patch": { - "summary": "Update Textmagic provider", - "operationId": "messagingUpdateTextmagicProvider", + "\/mysql\/{databaseId}\/migrations": { + "post": { + "summary": "Migrate database between shared and dedicated.", + "operationId": "mysqlCreateMigration", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Textmagic provider by its unique ID.", + "description": "Migrate a database between shared and dedicated types. Shared to dedicated provisions an always-on dedicated instance; dedicated to shared converts to a serverless instance that scales to zero when idle. Data is copied to the target with a brief read-only window during cutover.", "responses": { "200": { - "description": "Provider", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -41784,40 +45697,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTextmagicProvider", - "group": "providers", + "method": "createMigration", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-textmagic-provider.md", + "demo": "mysql\/create-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -41828,58 +45738,42 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - }, - "username": { - "type": "string", - "description": "Textmagic username.", - "default": "", - "x-example": "<USERNAME>" - }, - "apiKey": { + "targetType": { "type": "string", - "description": "Textmagic apiKey.", - "default": "", - "x-example": "<API_KEY>" + "description": "Target database type to migrate to. Allowed values: shared (serverless, scales to zero when idle), dedicated (always-on with persistent resources).", + "x-example": "shared" }, - "from": { + "specification": { "type": "string", - "description": "Sender number.", - "default": "", - "x-example": "<FROM>" + "description": "Target compute specification to provision when migrating to dedicated. Ignored for shared. Defaults to the database's current specification.", + "x-example": "<SPECIFICATION>", + "x-nullable": true } - } + }, + "required": [ + "targetType" + ] } } } } } }, - "\/messaging\/providers\/twilio": { - "post": { - "summary": "Create Twilio provider", - "operationId": "messagingCreateTwilioProvider", + "\/mysql\/{databaseId}\/pitr": { + "get": { + "summary": "Get PITR recovery windows.", + "operationId": "mysqlGetPitrWindows", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Twilio provider.", + "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "PITRWindows", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" } } } @@ -41887,30 +45781,155 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTwilioProvider", - "group": "providers", + "method": "getPitrWindows", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-twilio-provider.md", + "demo": "mysql\/get-pitr-windows.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + } + ] + } + }, + "\/mysql\/{databaseId}\/pooler": { + "get": { + "summary": "Get connection pooler configuration.", + "operationId": "mysqlGetPooler", + "tags": [ + "mysql" + ], + "description": "Get the connection pooler configuration for a dedicated database. Returns pooler mode, max connections, and pool size settings.", + "responses": { + "200": { + "description": "PoolerConfig", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getPooler", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/get-pooler.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + } + ] + }, + "patch": { + "summary": "Update connection pooler configuration.", + "operationId": "mysqlUpdatePooler", + "tags": [ + "mysql" + ], + "description": "Update the connection pooler configuration for a dedicated database. Configure pool mode, max connections, and pool sizes.", + "responses": { + "200": { + "description": "PoolerConfig", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updatePooler", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/update-pooler.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -41919,70 +45938,78 @@ "schema": { "type": "object", "properties": { - "providerId": { + "mode": { "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Connection pool mode. Allowed values: transaction, session. Transaction mode returns connections to the pool after each transaction; session mode holds connections for the entire session lifetime.", + "x-example": "transaction", + "x-nullable": true }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" + "maxConnections": { + "type": "integer", + "description": "Maximum pooled connections.", + "x-example": 10, + "format": "int32", + "x-nullable": true }, - "from": { + "defaultPoolSize": { + "type": "integer", + "description": "Default pool size per user.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "readWriteSplitting": { + "type": "boolean", + "description": "Route SELECTs to HA replicas, writes and locked reads to the primary. Defaults to true when HA is enabled.", + "x-example": false, + "x-nullable": true + }, + "poolerCpuRequest": { "type": "string", - "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", - "default": "", - "x-example": "+12065550100", - "format": "phone" + "description": "Pooler sidecar CPU request override (Kubernetes quantity, e.g. \"250m\" or \"1\"). Leave null for the proportional default (5% of DB CPU, floor 100m).", + "x-example": "<POOLER_CPU_REQUEST>", + "x-nullable": true }, - "accountSid": { + "poolerCpuLimit": { "type": "string", - "description": "Twilio account secret ID.", - "default": "", - "x-example": "<ACCOUNT_SID>" + "description": "Pooler sidecar CPU limit override (Kubernetes quantity, e.g. \"500m\" or \"1\"). Leave null for the proportional default (10% of DB CPU, floor 200m). Changing this field rolls the database pod.", + "x-example": "<POOLER_CPU_LIMIT>", + "x-nullable": true }, - "authToken": { + "poolerMemoryRequest": { "type": "string", - "description": "Twilio authentication token.", - "default": "", - "x-example": "<AUTH_TOKEN>" + "description": "Pooler sidecar memory request override (Kubernetes quantity, e.g. \"128Mi\" or \"1Gi\"). Leave null for the proportional default (7.5% of DB memory, floor 64Mi).", + "x-example": "<POOLER_MEMORY_REQUEST>", + "x-nullable": true }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, + "poolerMemoryLimit": { + "type": "string", + "description": "Pooler sidecar memory limit override (Kubernetes quantity, e.g. \"256Mi\" or \"1Gi\"). Leave null for the proportional default (15% of DB memory, floor 128Mi). Changing this field rolls the database pod.", + "x-example": "<POOLER_MEMORY_LIMIT>", "x-nullable": true } - }, - "required": [ - "providerId", - "name" - ] + } } } } } } }, - "\/messaging\/providers\/twilio\/{providerId}": { - "patch": { - "summary": "Update Twilio provider", - "operationId": "messagingUpdateTwilioProvider", + "\/mysql\/{databaseId}\/replicas": { + "get": { + "summary": "Get replica status.", + "operationId": "mysqlGetReplicas", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Twilio provider by its unique ID.", + "description": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", "responses": { "200": { - "description": "Provider", + "description": "HAStatus", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseHAStatus" } } } @@ -41990,102 +46017,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTwilioProvider", - "group": "providers", + "method": "getReplicas", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-twilio-provider.md", + "demo": "mysql\/get-replicas.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - }, - "accountSid": { - "type": "string", - "description": "Twilio account secret ID.", - "default": "", - "x-example": "<ACCOUNT_SID>" - }, - "authToken": { - "type": "string", - "description": "Twilio authentication token.", - "default": "", - "x-example": "<AUTH_TOKEN>" - }, - "from": { - "type": "string", - "description": "Sender number.", - "default": "", - "x-example": "<FROM>" - } - } - } - } - } - } + ] } }, - "\/messaging\/providers\/vonage": { - "post": { - "summary": "Create Vonage provider", - "operationId": "messagingCreateVonageProvider", + "\/mysql\/{databaseId}\/restorations": { + "get": { + "summary": "List database restorations.", + "operationId": "mysqlListRestorations", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Vonage provider.", + "description": "List all restorations for a dedicated database. Results can be filtered by status and type.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "Dedicated database restorations list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestorationList" } } } @@ -42093,102 +46076,100 @@ }, "deprecated": false, "x-appwrite": { - "method": "createVonageProvider", - "group": "providers", + "method": "listRestorations", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-vonage-provider.md", + "demo": "mysql\/list-restorations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "providerId": { - "type": "string", - "description": "Provider 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.", - "x-example": "<PROVIDER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" - }, - "from": { - "type": "string", - "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", - "default": "", - "x-example": "+12065550100", - "format": "phone" - }, - "apiKey": { - "type": "string", - "description": "Vonage API key.", - "default": "", - "x-example": "<API_KEY>" - }, - "apiSecret": { - "type": "string", - "description": "Vonage API secret.", - "default": "", - "x-example": "<API_SECRET>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - } - }, - "required": [ - "providerId", - "name" - ] - } - } + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by restoration status.", + "required": false, + "schema": { + "type": "string", + "x-example": "pending" + }, + "in": "query" + }, + { + "name": "type", + "description": "Filter by restoration type.", + "required": false, + "schema": { + "type": "string", + "x-example": "backup" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of restorations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of restorations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" } - } - } - }, - "\/messaging\/providers\/vonage\/{providerId}": { - "patch": { - "summary": "Update Vonage provider", - "operationId": "messagingUpdateVonageProvider", + ] + }, + "post": { + "summary": "Create a database restoration.", + "operationId": "mysqlCreateRestoration", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Vonage provider by its unique ID.", + "description": "Restore a database from a backup or to a specific point in time (PITR). For backup restoration, provide a backupId. For PITR, provide a targetTime. PITR requires the database to have PITR enabled and is only available for enterprise databases.", "responses": { - "200": { - "description": "Provider", + "202": { + "description": "Restoration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" } } } @@ -42196,40 +46177,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateVonageProvider", - "group": "providers", + "method": "createRestoration", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-vonage-provider.md", + "demo": "mysql\/create-restoration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -42240,35 +46218,24 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true - }, - "apiKey": { + "type": { "type": "string", - "description": "Vonage API key.", - "default": "", - "x-example": "<API_KEY>" + "description": "Restoration type. Allowed values: backup, pitr. Use \"backup\" to restore from a specific backup, or \"pitr\" for point-in-time recovery.", + "default": "backup", + "x-example": "backup" }, - "apiSecret": { + "backupId": { "type": "string", - "description": "Vonage API secret.", - "default": "", - "x-example": "<API_SECRET>" + "description": "Backup ID to restore from (required for backup type).", + "x-example": "<BACKUP_ID>", + "x-nullable": true }, - "from": { - "type": "string", - "description": "Sender number.", - "default": "", - "x-example": "<FROM>" + "targetTime": { + "type": "integer", + "description": "Target time for PITR as Unix timestamp (required for pitr type).", + "x-example": null, + "format": "int32", + "x-nullable": true } } } @@ -42277,21 +46244,21 @@ } } }, - "\/messaging\/providers\/{providerId}": { + "\/mysql\/{databaseId}\/restorations\/{restorationId}": { "get": { - "summary": "Get provider", - "operationId": "messagingGetProvider", + "summary": "Get a database restoration.", + "operationId": "mysqlGetRestoration", "tags": [ - "messaging" + "mysql" ], - "description": "Get a provider by its unique ID.\n", + "description": "Get details of a specific database restoration including its status, type, and timestamps.", "responses": { "200": { - "description": "Provider", + "description": "Restoration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" } } } @@ -42299,114 +46266,127 @@ }, "deprecated": false, "x-appwrite": { - "method": "getProvider", - "group": "providers", + "method": "getRestoration", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/get-provider.md", + "demo": "mysql\/get-restoration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.read", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "restorationId", + "description": "Restoration ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<RESTORATION_ID>" }, "in": "path" } ] - }, - "delete": { - "summary": "Delete provider", - "operationId": "messagingDeleteProvider", + } + }, + "\/mysql\/{databaseId}\/status": { + "get": { + "summary": "Get database status.", + "operationId": "mysqlGetStatus", "tags": [ - "messaging" + "mysql" ], - "description": "Delete a provider by its unique ID.", + "description": "Get real-time health and status information for a dedicated database. Returns health status, readiness, uptime, connection info, replica status, and volume information.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/databaseStatus" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteProvider", - "group": "providers", + "method": "getStatus", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/delete-provider.md", + "demo": "mysql\/get-status.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "databases.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] } }, - "\/messaging\/providers\/{providerId}\/logs": { - "get": { - "summary": "List provider logs", - "operationId": "messagingListProviderLogs", + "\/mysql\/{databaseId}\/upgrades": { + "post": { + "summary": "Upgrade database version.", + "operationId": "mysqlCreateUpgrade", "tags": [ - "messaging" + "mysql" ], - "description": "Get the provider activity logs listed by its unique ID.", + "description": "Upgrade a dedicated database to a new engine version. Uses blue-green deployment for zero-downtime cutover.", "responses": { "200": { - "description": "Logs List", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -42414,85 +46394,171 @@ }, "deprecated": false, "x-appwrite": { - "method": "listProviderLogs", - "group": "providers", + "method": "createUpgrade", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/list-provider-logs.md", + "demo": "mysql\/create-upgrade.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.read", + "scope": "databases.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-provider-logs.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" - }, + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "targetVersion": { + "type": "string", + "description": "Target engine version to upgrade to.", + "x-example": "<TARGET_VERSION>" + } + }, + "required": [ + "targetVersion" + ] + } + } + } + } + } + }, + "\/oauth2\/{project_id}\/approve": { + "post": { + "summary": "Approve OAuth2", + "operationId": "oauth2Approve", + "tags": [ + "oauth2" + ], + "description": "Approve an OAuth2 grant after the user gives consent. Returns the `redirectUrl` the end user should be sent to. The consent screen may optionally pass enriched `authorization_details` to record the concrete resources the user selected. You can pass Accept header of `application\/json` to receive a JSON response instead of a redirect.", + "responses": { + "200": { + "description": "OAuth2 Approve", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/oauth2Approve" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "approve", + "group": null, + "cookies": false, + "type": "", + "demo": "oauth2\/approve.md", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "oauth2.write", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "ProjectPath": [] + } + }, + "security": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, + "ProjectPath": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", + "required": true, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "<PROJECT_ID>" }, - "in": "query" + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "grant_id": { + "type": "string", + "description": "Grant ID made during authorization, provided to consent screen in URL search params.", + "x-example": "<GRANT_ID>" + }, + "authorization_details": { + "type": "string", + "description": "Enriched `authorization_details` the user consented to, replacing what the client requested. Each entry must use a `type` the project accepts. Optional; omit to keep the originally requested details.", + "default": "", + "x-example": "<AUTHORIZATION_DETAILS>" + }, + "scope": { + "type": "string", + "description": "Space-separated scopes the user consented to. Must be a subset of the scopes originally requested; identity scopes such as `openid` are always retained. Optional; omit to keep the originally requested scopes.", + "default": "", + "x-example": "<SCOPE>" + } + }, + "required": [ + "grant_id" + ] + } + } } - ] + } } }, - "\/messaging\/subscribers\/{subscriberId}\/logs": { + "\/oauth2\/{project_id}\/authorize": { "get": { - "summary": "List subscriber logs", - "operationId": "messagingListSubscriberLogs", + "summary": "OAuth2 Authorize", + "operationId": "oauth2Authorize", "tags": [ - "messaging" + "oauth2" ], - "description": "Get the subscriber activity logs listed by its unique ID.", + "description": "Begin the OAuth2 authorization flow. When called without a session, the user is redirected to the consent screen without grant ID. When called with a session, the redirect URL includes param for grant ID. You can pass Accept header of `application\/json` to receive a JSON response instead of a redirect.", "responses": { "200": { - "description": "Logs List", + "description": "OAuth2 Authorize", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/oauth2Authorize" } } } @@ -42500,170 +46566,191 @@ }, "deprecated": false, "x-appwrite": { - "method": "listSubscriberLogs", - "group": "subscribers", + "method": "authorize", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/list-subscriber-logs.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/authorize.md", + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.read", + "scope": "public", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscriber-logs.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "Key": [] + "ProjectPath": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "subscriberId", - "description": "Subscriber ID.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<SUBSCRIBER_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" }, { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", + "name": "client_id", + "description": "OAuth2 client ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<CLIENT_ID>" + }, + "in": "query" + }, + { + "name": "redirect_uri", + "description": "Redirect URI where visitor will be redirected after authorization, whether successful or not.", + "required": true, + "schema": { + "type": "string", + "format": "url", + "x-example": "https:\/\/example.com" + }, + "in": "query" + }, + { + "name": "response_type", + "description": "OAuth2 \/ OIDC response type. One of `code` (Authorization Code Flow), `id_token` (Implicit Flow, OIDC login only), or `code id_token` (Hybrid Flow).", + "required": true, + "schema": { + "type": "string", + "x-example": "code" + }, + "in": "query" + }, + { + "name": "scope", + "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`, `phone`.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "<SCOPE>", + "default": "" }, "in": "query" }, { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "name": "state", + "description": "OAuth2 state. You receive this back in the redirect URI.", "required": false, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "<STATE>", + "default": "" }, "in": "query" - } - ] - } - }, - "\/messaging\/topics": { - "get": { - "summary": "List topics", - "operationId": "messagingListTopics", - "tags": [ - "messaging" - ], - "description": "Get a list of all topics from the current Appwrite project.", - "responses": { - "200": { - "description": "Topic list", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/topicList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listTopics", - "group": "topics", - "cookies": false, - "type": "", - "demo": "messaging\/list-topics.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "topics.read", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md", - "auth": { - "Project": [] - } - }, - "security": [ + }, { - "Project": [], - "Key": [] - } - ], - "parameters": [ + "name": "nonce", + "description": "OIDC nonce parameter to prevent replay attacks. Required when response_type includes `id_token`.", + "required": false, + "schema": { + "type": "string", + "x-example": "<NONCE>", + "default": "" + }, + "in": "query" + }, { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal", + "name": "code_challenge", + "description": "PKCE code challenge. Required when OAuth2 app is public.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "<CODE_CHALLENGE>", + "default": "" }, "in": "query" }, { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", + "name": "code_challenge_method", + "description": "PKCE code challenge method. Required when OAuth2 app is public.", "required": false, "schema": { "type": "string", - "x-example": "<SEARCH>", + "x-example": "s256", "default": "" }, "in": "query" }, { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "name": "prompt", + "description": "OIDC prompt parameter for customization of consent screen. Space-separated list of: none, login, consent, select_account.", "required": false, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "<PROMPT>", + "default": "" + }, + "in": "query" + }, + { + "name": "max_age", + "description": "OIDC max_age paraleter for customization of consent screen. Maximum allowable elapsed time in seconds since the user last authenticated. If exceeded, re-authentication is required.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0 + }, + "in": "query" + }, + { + "name": "authorization_details", + "description": "Rich authorization request. JSON array of objects, each with a `type` and project-defined fields", + "required": false, + "schema": { + "type": "string", + "x-example": "<AUTHORIZATION_DETAILS>", + "default": "" + }, + "in": "query" + }, + { + "name": "resource", + "description": "RFC 8707 resource indicator URI or URI list. Each value must be an absolute URI without a fragment.", + "required": false, + "schema": { + "type": "string", + "default": [] }, "in": "query" } ] - }, + } + }, + "\/oauth2\/{project_id}\/device_authorization": { "post": { - "summary": "Create topic", - "operationId": "messagingCreateTopic", + "summary": "OAuth2 Device Authorization", + "operationId": "oauth2CreateDeviceAuthorization", "tags": [ - "messaging" + "oauth2" ], - "description": "Create a new topic.", + "description": "Start the OAuth2 Device Authorization Grant. Returns the device code, user code, verification URL, expiration, and polling interval.", "responses": { - "201": { - "description": "Topic", + "200": { + "description": "OAuth2 Device Authorization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/topic" + "$ref": "#\/components\/schemas\/oauth2DeviceAuthorization" } } } @@ -42671,88 +46758,98 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTopic", - "group": "topics", + "method": "createDeviceAuthorization", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/create-topic.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/create-device-authorization.md", + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "topics.write", + "scope": "public", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], + "ProjectPath": [], + "Session": [], + "JWT": [], "Key": [] } ], + "parameters": [ + { + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + } + ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "topicId": { + "client_id": { "type": "string", - "description": "Topic ID. Choose a custom Topic ID or a new Topic ID.", - "x-example": "<TOPIC_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "OAuth2 client ID.", + "default": "", + "x-example": "<CLIENT_ID>" }, - "name": { + "scope": { "type": "string", - "description": "Topic Name.", - "x-example": "<NAME>" + "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`.", + "default": "", + "x-example": "<SCOPE>" }, - "subscribe": { - "type": "array", - "description": "An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", - "default": [ - "users" - ], - "x-example": "[\"any\"]", - "items": { - "type": "string" - } + "authorization_details": { + "type": "string", + "description": "Rich authorization request. JSON array of objects, each with a `type` and project-defined fields", + "default": "", + "x-example": "<AUTHORIZATION_DETAILS>" + }, + "resource": { + "type": "string", + "description": "RFC 8707 resource indicator URI or URI list. Each value must be an absolute URI without a fragment.", + "default": [], + "x-example": null } - }, - "required": [ - "topicId", - "name" - ] + } } } } } } }, - "\/messaging\/topics\/{topicId}": { - "get": { - "summary": "Get topic", - "operationId": "messagingGetTopic", + "\/oauth2\/{project_id}\/grants": { + "post": { + "summary": "Create OAuth2 Grant", + "operationId": "oauth2CreateGrant", "tags": [ - "messaging" + "oauth2" ], - "description": "Get a topic by its unique ID.\n", + "description": "Exchange a device flow user code for an OAuth2 grant. The authenticated user is bound to the pending grant. Pass the returned grant ID to the get grant endpoint to render the consent screen, then to the approve or reject endpoint to complete the flow.", "responses": { - "200": { - "description": "Topic", + "201": { + "description": "OAuth2 Grant", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/topic" + "$ref": "#\/components\/schemas\/oauth2Grant" } } } @@ -42760,59 +46857,81 @@ }, "deprecated": false, "x-appwrite": { - "method": "getTopic", - "group": "topics", + "method": "createGrant", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/get-topic.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "topics.read", + "demo": "oauth2\/create-grant.md", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "oauth2.write", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "Key": [] + "ProjectPath": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "topicId", - "description": "Topic ID.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" } - ] - }, - "patch": { - "summary": "Update topic", - "operationId": "messagingUpdateTopic", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "user_code": { + "type": "string", + "description": "User code displayed on the device.", + "x-example": "<USER_CODE>" + } + }, + "required": [ + "user_code" + ] + } + } + } + } + } + }, + "\/oauth2\/{project_id}\/grants\/{grant_id}": { + "get": { + "summary": "Get OAuth2 Grant", + "operationId": "oauth2GetGrant", "tags": [ - "messaging" + "oauth2" ], - "description": "Update a topic by its unique ID.\n", + "description": "Get an OAuth2 grant by its ID. Used by the consent screen to display the details of the authorization the user is being asked to approve. A grant can only be read by the user it belongs to, or by server SDK.", "responses": { "200": { - "description": "Topic", + "description": "OAuth2 Grant", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/topic" + "$ref": "#\/components\/schemas\/oauth2Grant" } } } @@ -42820,78 +46939,66 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTopic", - "group": "topics", + "method": "getGrant", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/update-topic.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "topics.write", + "demo": "oauth2\/get-grant.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "oauth2.read", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], + "ProjectPath": [], + "Session": [], + "JWT": [], "Key": [] } ], "parameters": [ { - "name": "topicId", - "description": "Topic ID.", + "name": "project_id", + "description": "Project ID in which OAuth2 client that created grant during authorization exists.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "grant_id", + "description": "Grant ID made during authorization, provided to consent screen in URL search params.", + "required": true, + "schema": { + "type": "string", + "x-example": "<GRANT_ID>" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Topic Name.", - "x-example": "<NAME>", - "x-nullable": true - }, - "subscribe": { - "type": "array", - "description": "An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", - "x-example": "[\"any\"]", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - } - } - } - } - }, - "delete": { - "summary": "Delete topic", - "operationId": "messagingDeleteTopic", + ] + } + }, + "\/oauth2\/{project_id}\/logout": { + "get": { + "summary": "OAuth2 Logout", + "operationId": "oauth2Logout", "tags": [ - "messaging" + "oauth2" ], - "description": "Delete a topic by its unique ID.", + "description": "OpenID Connect RP-Initiated Logout. Ends the user session and revokes the tokens issued to the app identified by the `id_token_hint`, then redirects the user to `post_logout_redirect_uri` when it matches a URI registered on the app.", "responses": { "204": { "description": "No content" @@ -42899,61 +47006,130 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteTopic", - "group": "topics", + "method": "logout", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/delete-topic.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/logout.md", + "rate-limit": 10, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "topics.write", + "scope": "public", "platforms": [ "console", - "server" + "client" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md", + "produces": [ + "application\/json" + ], "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "Key": [] + "ProjectPath": [], + "Session": [] } ], "parameters": [ { - "name": "topicId", - "description": "Topic ID.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" + }, + { + "name": "id_token_hint", + "description": "ID Token previously issued to the app, used as proof of the logout request. Required to end the session; signature and issuer are validated while expiry is ignored.", + "required": false, + "schema": { + "type": "string", + "x-example": "<ID_TOKEN_HINT>", + "default": "" + }, + "in": "query" + }, + { + "name": "logout_hint", + "description": "Hint about the user that is logging out. Accepted for OIDC compatibility.", + "required": false, + "schema": { + "type": "string", + "x-example": "<LOGOUT_HINT>", + "default": "" + }, + "in": "query" + }, + { + "name": "client_id", + "description": "OAuth2 client ID. When both `client_id` and `id_token_hint` are provided, they must identify the same app.", + "required": false, + "schema": { + "type": "string", + "x-example": "<CLIENT_ID>", + "default": "" + }, + "in": "query" + }, + { + "name": "post_logout_redirect_uri", + "description": "URI to redirect the user to after logout. Must exactly match a URI registered in the app's `postLogoutRedirectUris`.", + "required": false, + "schema": { + "type": "string", + "format": "url", + "x-example": "https:\/\/example.com", + "default": "" + }, + "in": "query" + }, + { + "name": "state", + "description": "Opaque value passed back unchanged in the `state` query param of the post-logout redirect.", + "required": false, + "schema": { + "type": "string", + "x-example": "<STATE>", + "default": "" + }, + "in": "query" + }, + { + "name": "ui_locales", + "description": "Preferred languages for any logout UI, as space-separated BCP47 tags. Accepted for OIDC compatibility.", + "required": false, + "schema": { + "type": "string", + "x-example": "<UI_LOCALES>", + "default": "" + }, + "in": "query" } ] } }, - "\/messaging\/topics\/{topicId}\/logs": { - "get": { - "summary": "List topic logs", - "operationId": "messagingListTopicLogs", + "\/oauth2\/{project_id}\/reject": { + "post": { + "summary": "Reject OAuth2", + "operationId": "oauth2Reject", "tags": [ - "messaging" + "oauth2" ], - "description": "Get the topic activity logs listed by its unique ID.", + "description": "Reject an OAuth2 grant when the user denies consent. Returns the `redirectUrl` the end user should be sent to with an `access_denied` error. You can pass Accept header of `application\/json` to receive a JSON response instead of a redirect.", "responses": { "200": { - "description": "Logs List", + "description": "OAuth2 Reject", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/oauth2Reject" } } } @@ -42961,85 +47137,82 @@ }, "deprecated": false, "x-appwrite": { - "method": "listTopicLogs", - "group": "topics", + "method": "reject", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/list-topic-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "topics.read", + "demo": "oauth2\/reject.md", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "oauth2.write", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topic-logs.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "Key": [] + "ProjectPath": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "topicId", - "description": "Topic ID.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "grant_id": { + "type": "string", + "description": "Grant ID made during authorization, provided to consent screen in URL search params.", + "x-example": "<GRANT_ID>" + } + }, + "required": [ + "grant_id" + ] + } + } + } + } } }, - "\/messaging\/topics\/{topicId}\/subscribers": { - "get": { - "summary": "List subscribers", - "operationId": "messagingListSubscribers", + "\/oauth2\/{project_id}\/revoke": { + "post": { + "summary": "OAuth2 Revoke", + "operationId": "oauth2Revoke", "tags": [ - "messaging" + "oauth2" ], - "description": "Get a list of all subscribers from the current Appwrite project.", + "description": "Revoke an OAuth2 access token or refresh token.", "responses": { "200": { - "description": "Subscriber list", + "description": "File", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/subscriberList" + "type": "string", + "format": "binary" } } } @@ -43047,94 +47220,100 @@ }, "deprecated": false, "x-appwrite": { - "method": "listSubscribers", - "group": "subscribers", + "method": "revoke", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/list-subscribers.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/revoke.md", + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.read", + "scope": "public", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], + "ProjectPath": [], + "Session": [], + "JWT": [], "Key": [] } ], "parameters": [ { - "name": "topicId", - "description": "Topic ID. The topic ID subscribed to.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: targetId, topicId, userId, providerType", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, - "schema": { - "type": "string", - "x-example": "<SEARCH>", - "default": "" - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" } - ] - }, + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string", + "description": "The access or refresh token to revoke.", + "x-example": "<TOKEN>" + }, + "token_type_hint": { + "type": "string", + "description": "Type of token to revoke (access_token or refresh_token).", + "default": "", + "x-example": "access_token" + }, + "client_id": { + "type": "string", + "description": "OAuth2 client ID.", + "default": "", + "x-example": "<CLIENT_ID>" + }, + "client_secret": { + "type": "string", + "description": "OAuth2 client secret. Required for confidential apps; omitted for public apps.", + "default": "", + "x-example": "<CLIENT_SECRET>" + } + }, + "required": [ + "token" + ] + } + } + } + } + } + }, + "\/oauth2\/{project_id}\/token": { "post": { - "summary": "Create subscriber", - "operationId": "messagingCreateSubscriber", + "summary": "OAuth2 Token", + "operationId": "oauth2CreateToken", "tags": [ - "messaging" + "oauth2" ], - "description": "Create a new subscriber.", + "description": "Exchange an OAuth2 authorization code, refresh token, or device code for access and refresh tokens.", "responses": { - "201": { - "description": "Subscriber", + "200": { + "description": "OAuth2 Token", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/subscriber" + "$ref": "#\/components\/schemas\/oauth2Token" } } } @@ -43142,43 +47321,42 @@ }, "deprecated": false, "x-appwrite": { - "method": "createSubscriber", - "group": "subscribers", + "method": "createToken", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/create-subscriber.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/create-token.md", + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.write", + "scope": "public", "platforms": [ - "server", + "console", "client", - "console" + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "JWT": [], + "ProjectPath": [], "Session": [], + "JWT": [], "Key": [] } ], "parameters": [ { - "name": "topicId", - "description": "Topic ID. The topic ID to subscribe to.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" } @@ -43189,23 +47367,63 @@ "schema": { "type": "object", "properties": { - "subscriberId": { + "grant_type": { "type": "string", - "description": "Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.", - "x-example": "<SUBSCRIBER_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "OAuth2 grant type. Can be one of: `authorization_code`, `refresh_token`, `urn:ietf:params:oauth:grant-type:device_code`.", + "x-example": "<GRANT_TYPE>" }, - "targetId": { + "code": { "type": "string", - "description": "Target ID. The target ID to link to the specified Topic ID.", - "x-example": "<TARGET_ID>" + "description": "Authorization code to be exchanged for access and refresh tokens. Required for `authorization_code` grant type.", + "default": "", + "x-example": "<CODE>" + }, + "refresh_token": { + "type": "string", + "description": "Refresh token to be exchanged for a new access and refresh tokens. Required for `refresh_token` grant type.", + "default": "", + "x-example": "<REFRESH_TOKEN>" + }, + "device_code": { + "type": "string", + "description": "Device code obtained from the device authorization endpoint. Required for `urn:ietf:params:oauth:grant-type:device_code` grant type.", + "default": "", + "x-example": "<DEVICE_CODE>" + }, + "client_id": { + "type": "string", + "description": "OAuth2 client ID.", + "default": "", + "x-example": "<CLIENT_ID>" + }, + "client_secret": { + "type": "string", + "description": "OAuth2 client secret. Required for confidential apps.", + "default": "", + "x-example": "<CLIENT_SECRET>" + }, + "code_verifier": { + "type": "string", + "description": "PKCE code verifier. Required for public apps.", + "default": "", + "x-example": "<CODE_VERIFIER>" + }, + "redirect_uri": { + "type": "string", + "description": "Redirect URI. Required for `authorization_code` grant type.", + "default": "", + "x-example": "https:\/\/example.com", + "format": "url" + }, + "resource": { + "type": "string", + "description": "RFC 8707 resource indicator URI or URI list. Each value must be an absolute URI without a fragment.", + "default": [], + "x-example": null } }, "required": [ - "subscriberId", - "targetId" + "grant_type" ] } } @@ -43213,21 +47431,21 @@ } } }, - "\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}": { + "\/organization\/keys": { "get": { - "summary": "Get subscriber", - "operationId": "messagingGetSubscriber", + "summary": "List organization keys", + "operationId": "organizationListKeys", "tags": [ - "messaging" + "organization" ], - "description": "Get a subscriber by its unique ID.\n", + "description": "Get a list of all API keys from the current organization.", "responses": { "200": { - "description": "Subscriber", + "description": "API Keys List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/subscriber" + "$ref": "#\/components\/schemas\/keyList" } } } @@ -43235,22 +47453,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getSubscriber", - "group": "subscribers", + "method": "listKeys", + "group": "keys", "cookies": false, "type": "", - "demo": "messaging\/get-subscriber.md", + "demo": "organization\/list-keys.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.read", + "scope": "organization.keys.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md", "auth": { "Project": [] } @@ -43263,58 +47480,67 @@ ], "parameters": [ { - "name": "topicId", - "description": "Topic ID. The topic ID subscribed to.", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: expire, accessedAt, name, scopes", + "required": false, "schema": { - "type": "string", - "x-example": "<TOPIC_ID>" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" + "in": "query" }, { - "name": "subscriberId", - "description": "Subscriber ID.", - "required": true, + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, "schema": { - "type": "string", - "x-example": "<SUBSCRIBER_ID>" + "type": "boolean", + "x-example": false, + "default": true }, - "in": "path" + "in": "query" } ] }, - "delete": { - "summary": "Delete subscriber", - "operationId": "messagingDeleteSubscriber", + "post": { + "summary": "Create organization key", + "operationId": "organizationCreateKey", "tags": [ - "messaging" + "organization" ], - "description": "Delete a subscriber by its unique ID.", + "description": "Create a new organization API key.", "responses": { - "204": { - "description": "No content" + "201": { + "description": "Key", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/key" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteSubscriber", - "group": "subscribers", + "method": "createKey", + "group": "keys", "cookies": false, "type": "", - "demo": "messaging\/delete-subscriber.md", + "demo": "organization\/create-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.write", + "scope": "organization.keys.write", "platforms": [ - "server", - "client", - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md", "auth": { "Project": [] } @@ -43322,50 +47548,95 @@ "security": [ { "Project": [], - "JWT": [], - "Session": [], "Key": [] } ], - "parameters": [ - { - "name": "topicId", - "description": "Topic ID. The topic ID subscribed to.", - "required": true, - "schema": { - "type": "string", - "x-example": "<TOPIC_ID>" - }, - "in": "path" - }, - { - "name": "subscriberId", - "description": "Subscriber ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<SUBSCRIBER_ID>" - }, - "in": "path" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "keyId": { + "type": "string", + "description": "Key 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.", + "x-example": "<KEY_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Key name. Max length: 128 chars.", + "x-example": "<NAME>" + }, + "scopes": { + "type": "array", + "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "x-example": null, + "items": { + "type": "string", + "enum": [ + "projects.read", + "projects.write", + "devKeys.read", + "devKeys.write", + "organization.keys.read", + "organization.keys.write", + "domains.read", + "domains.write", + "keys.read", + "keys.write" + ], + "x-enum-name": "OrganizationKeyScopes", + "x-enum-keys": [ + "projects.read", + "projects.write", + "devKeys.read", + "devKeys.write", + "organization.keys.read", + "organization.keys.write", + "domains.read", + "domains.write", + "keys.read", + "keys.write" + ] + } + }, + "expire": { + "type": "string", + "description": "Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true + } + }, + "required": [ + "keyId", + "name", + "scopes" + ] + } + } } - ] + } } }, - "\/migrations": { + "\/organization\/keys\/{keyId}": { "get": { - "summary": "List migrations", - "operationId": "migrationsList", + "summary": "Get organization key", + "operationId": "organizationGetKey", "tags": [ - "migrations" + "organization" ], - "description": "List all migrations in the current project. This endpoint returns a list of all migrations including their status, progress, and any errors that occurred during the migration process.", + "description": "Get a key by its unique ID. This endpoint returns details about a specific API key in your organization including its scopes.", "responses": { "200": { - "description": "Migrations List", + "description": "Key", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migrationList" + "$ref": "#\/components\/schemas\/key" } } } @@ -43373,84 +47644,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "list", - "group": null, + "method": "getKey", + "group": "keys", "cookies": false, "type": "", - "demo": "migrations\/list.md", + "demo": "organization\/get-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.read", + "scope": "organization.keys.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, destination, resources, resourceId, resourceType, statusCounters, resourceData, errors", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, + "name": "keyId", + "description": "Key unique ID.", + "required": true, "schema": { "type": "string", - "x-example": "<SEARCH>", - "default": "" - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true + "x-example": "<KEY_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/migrations\/appwrite": { - "post": { - "summary": "Create Appwrite migration", - "operationId": "migrationsCreateAppwriteMigration", + }, + "put": { + "summary": "Update organization key", + "operationId": "organizationUpdateKey", "tags": [ - "migrations" + "organization" ], - "description": "Migrate data from another Appwrite project to your current project. This endpoint allows you to migrate resources like databases, collections, documents, users, and files from an existing Appwrite project. ", + "description": "Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.", "responses": { - "202": { - "description": "Migration", + "200": { + "description": "Key", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/key" } } } @@ -43458,28 +47703,41 @@ }, "deprecated": false, "x-appwrite": { - "method": "createAppwriteMigration", - "group": null, + "method": "updateKey", + "group": "keys", "cookies": false, "type": "", - "demo": "migrations\/create-appwrite-migration.md", + "demo": "organization\/update-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "organization.keys.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "keyId", + "description": "Key unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<KEY_ID>" + }, + "in": "path" } ], "requestBody": { @@ -43488,158 +47746,129 @@ "schema": { "type": "object", "properties": { - "resources": { + "name": { + "type": "string", + "description": "Key name. Max length: 128 chars.", + "x-example": "<NAME>" + }, + "scopes": { "type": "array", - "description": "List of resources to migrate", + "description": "Key scopes list. Maximum of 100 scopes are allowed.", "x-example": null, "items": { "type": "string", "enum": [ - "user", - "team", - "membership", - "auth-methods", - "policies", - "oauth2-provider", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "documentsdb", - "vectorsdb", - "bucket", - "file", - "function", - "deployment", - "environment-variable", - "provider", - "topic", - "subscriber", - "message", - "site", - "site-deployment", - "site-variable", - "platform", - "api-key", - "webhook", - "smtp", - "backup-policy", - "project-variable", - "project-protocols", - "project-labels", - "project-services", - "project-email-template", - "rule" + "projects.read", + "projects.write", + "devKeys.read", + "devKeys.write", + "organization.keys.read", + "organization.keys.write", + "domains.read", + "domains.write", + "keys.read", + "keys.write" ], - "x-enum-name": "AppwriteMigrationResource", + "x-enum-name": "OrganizationKeyScopes", "x-enum-keys": [ - "user", - "team", - "membership", - "auth-methods", - "policies", - "oauth2-provider", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "documentsdb", - "vectorsdb", - "bucket", - "file", - "function", - "deployment", - "environment-variable", - "provider", - "topic", - "subscriber", - "message", - "site", - "site-deployment", - "site-variable", - "platform", - "api-key", - "webhook", - "smtp", - "backup-policy", - "project-variable", - "project-protocols", - "project-labels", - "project-services", - "project-email-template", - "rule" + "projects.read", + "projects.write", + "devKeys.read", + "devKeys.write", + "organization.keys.read", + "organization.keys.write", + "domains.read", + "domains.write", + "keys.read", + "keys.write" ] } }, - "endpoint": { - "type": "string", - "description": "Source Appwrite endpoint", - "x-example": "https:\/\/example.com", - "format": "url" - }, - "projectId": { - "type": "string", - "description": "Source Project ID", - "x-example": "<PROJECT_ID>" - }, - "apiKey": { - "type": "string", - "description": "Source API Key", - "x-example": "<API_KEY>" - }, - "onDuplicate": { + "expire": { "type": "string", - "description": "Behavior when a row with an existing $id is encountered. \"fail\" (default): abort on first conflict. \"skip\": silently ignore. \"overwrite\": replace existing row.", - "default": "fail", - "x-example": "fail", - "enum": [ - "fail", - "skip", - "overwrite" - ], - "x-enum-name": "OnDuplicate", - "x-enum-keys": [ - "fail", - "skip", - "overwrite" - ] + "description": "Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true } }, "required": [ - "resources", - "endpoint", - "projectId", - "apiKey" + "name", + "scopes" ] } } } } + }, + "delete": { + "summary": "Delete organization key", + "operationId": "organizationDeleteKey", + "tags": [ + "organization" + ], + "description": "Delete a key by its unique ID. Once deleted, the key can no longer be used to authenticate API calls.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteKey", + "group": "keys", + "cookies": false, + "type": "", + "demo": "organization\/delete-key.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "organization.keys.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "keyId", + "description": "Key unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<KEY_ID>" + }, + "in": "path" + } + ] } }, - "\/migrations\/appwrite\/report": { + "\/organization\/projects": { "get": { - "summary": "Get Appwrite migration report", - "operationId": "migrationsGetAppwriteReport", + "summary": "List organization projects", + "operationId": "organizationListProjects", "tags": [ - "migrations" + "organization" ], - "description": "Generate a report of the data in an Appwrite project before migrating. This endpoint analyzes the source project and returns information about the resources that can be migrated.", + "description": "Get a list of all projects. You can use the query params to filter your results.", "responses": { "200": { - "description": "Migration Report", + "description": "Projects List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migrationReport" + "$ref": "#\/components\/schemas\/projectList" } } } @@ -43647,175 +47876,83 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAppwriteReport", - "group": null, + "method": "listProjects", + "group": "projects", "cookies": false, "type": "", - "demo": "migrations\/get-appwrite-report.md", + "demo": "organization\/list-projects.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "projects.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "resources", - "description": "List of resources to migrate", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId, labels, search", + "required": false, "schema": { "type": "array", "items": { - "type": "string", - "enum": [ - "user", - "team", - "membership", - "auth-methods", - "policies", - "oauth2-provider", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "documentsdb", - "vectorsdb", - "bucket", - "file", - "function", - "deployment", - "environment-variable", - "provider", - "topic", - "subscriber", - "message", - "site", - "site-deployment", - "site-variable", - "platform", - "api-key", - "webhook", - "smtp", - "backup-policy", - "project-variable", - "project-protocols", - "project-labels", - "project-services", - "project-email-template", - "rule" - ], - "x-enum-name": "AppwriteMigrationResource", - "x-enum-keys": [ - "user", - "team", - "membership", - "auth-methods", - "policies", - "oauth2-provider", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "documentsdb", - "vectorsdb", - "bucket", - "file", - "function", - "deployment", - "environment-variable", - "provider", - "topic", - "subscriber", - "message", - "site", - "site-deployment", - "site-variable", - "platform", - "api-key", - "webhook", - "smtp", - "backup-policy", - "project-variable", - "project-protocols", - "project-labels", - "project-services", - "project-email-template", - "rule" - ] - } - }, - "in": "query" - }, - { - "name": "endpoint", - "description": "Source's Appwrite Endpoint", - "required": true, - "schema": { - "type": "string", - "format": "url", - "x-example": "https:\/\/example.com" + "type": "string" + }, + "default": [] }, "in": "query" }, { - "name": "projectID", - "description": "Source's Project ID", - "required": true, + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<SEARCH>", + "default": "" }, "in": "query" - }, - { - "name": "key", - "description": "Source's API Key", - "required": true, + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, "schema": { - "type": "string", - "x-example": "<KEY>" + "type": "boolean", + "x-example": false, + "default": true }, "in": "query" } ] - } - }, - "\/migrations\/csv\/exports": { + }, "post": { - "summary": "Export documents to CSV", - "operationId": "migrationsCreateCSVExport", + "summary": "Create organization project", + "operationId": "organizationCreateProject", "tags": [ - "migrations" + "organization" ], - "description": "Export documents to a CSV file from your Appwrite database. This endpoint allows you to export documents to a CSV file stored in a secure internal bucket. You'll receive an email with a download link when the export is complete.", + "description": "Create a new project.", "responses": { - "202": { - "description": "Migration", + "201": { + "description": "Project", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/project" } } } @@ -43823,28 +47960,29 @@ }, "deprecated": false, "x-appwrite": { - "method": "createCSVExport", - "group": null, + "method": "createProject", + "group": "projects", "cookies": false, "type": "", - "demo": "migrations\/create-csv-export.md", + "demo": "organization\/create-project.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "projects.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-csv-export.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "requestBody": { @@ -43853,68 +47991,42 @@ "schema": { "type": "object", "properties": { - "resourceId": { - "type": "string", - "description": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database to export.", - "x-example": "<ID1:ID2>" - }, - "filename": { - "type": "string", - "description": "The name of the file to be created for the export, excluding the .csv extension.", - "x-example": "<FILENAME>" - }, - "columns": { - "type": "array", - "description": "List of attributes to export. If empty, all attributes will be exported. You can use the `*` wildcard to export all attributes from the collection.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "queries": { - "type": "array", - "description": "Array of query strings generated using the Query class provided by the SDK to filter documents to export. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "delimiter": { + "projectId": { "type": "string", - "description": "The character that separates each column value. Default is comma.", - "default": ",", - "x-example": "<DELIMITER>" + "description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.", + "x-example": null }, - "enclosure": { + "name": { "type": "string", - "description": "The character that encloses each column value. Default is double quotes.", - "default": "\"", - "x-example": "<ENCLOSURE>" + "description": "Project name. Max length: 128 chars.", + "x-example": "<NAME>" }, - "escape": { + "region": { "type": "string", - "description": "The escape character for the enclosure character. Default is double quotes.", - "default": "\"", - "x-example": "<ESCAPE>" - }, - "header": { - "type": "boolean", - "description": "Whether to include the header row with column names. Default is true.", - "default": true, - "x-example": false - }, - "notify": { - "type": "boolean", - "description": "Set to true to receive an email when the export is complete. Default is true.", - "default": true, - "x-example": false + "description": "Project Region.", + "x-example": "fra", + "enum": [ + "fra", + "nyc", + "syd", + "sfo", + "sgp", + "tor" + ], + "x-enum-name": "Region", + "x-enum-keys": [ + "fra", + "nyc", + "syd", + "sfo", + "sgp", + "tor" + ] } }, "required": [ - "resourceId", - "filename" + "projectId", + "name" ] } } @@ -43922,21 +48034,21 @@ } } }, - "\/migrations\/csv\/imports": { - "post": { - "summary": "Import documents from a CSV", - "operationId": "migrationsCreateCSVImport", + "\/organization\/projects\/{projectId}": { + "get": { + "summary": "Get organization project", + "operationId": "organizationGetProject", "tags": [ - "migrations" + "organization" ], - "description": "Import documents from a CSV file into your Appwrite database. This endpoint allows you to import documents from a CSV file uploaded to Appwrite Storage bucket.", + "description": "Get a project.", "responses": { - "202": { - "description": "Migration", + "200": { + "description": "Project", "content": { - "application\/json": { + "": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/project" } } } @@ -43944,101 +48056,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "createCSVImport", - "group": null, + "method": "getProject", + "group": "projects", "cookies": false, "type": "", - "demo": "migrations\/create-csv-import.md", + "demo": "organization\/get-project.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "projects.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-csv-import.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "bucketId": { - "type": "string", - "description": "Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).", - "x-example": "<BUCKET_ID>" - }, - "fileId": { - "type": "string", - "description": "File ID.", - "x-example": "<FILE_ID>" - }, - "resourceId": { - "type": "string", - "description": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database.", - "x-example": "<ID1:ID2>" - }, - "internalFile": { - "type": "boolean", - "description": "Is the file stored in an internal bucket?", - "default": false, - "x-example": false - }, - "onDuplicate": { - "type": "string", - "description": "Behavior when a row with an existing $id is encountered. \"fail\" (default): abort on first conflict. \"skip\": silently ignore. \"overwrite\": replace existing row.", - "default": "fail", - "x-example": "fail", - "enum": [ - "fail", - "skip", - "overwrite" - ], - "x-enum-name": "OnDuplicate", - "x-enum-keys": [ - "fail", - "skip", - "overwrite" - ] - } - }, - "required": [ - "bucketId", - "fileId", - "resourceId" - ] - } - } + "parameters": [ + { + "name": "projectId", + "description": "Project unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" } - } - } - }, - "\/migrations\/firebase": { - "post": { - "summary": "Create Firebase migration", - "operationId": "migrationsCreateFirebaseMigration", + ] + }, + "patch": { + "summary": "Update organization project", + "operationId": "organizationUpdateProject", "tags": [ - "migrations" + "organization" ], - "description": "Migrate data from a Firebase project to your Appwrite project. This endpoint allows you to migrate resources like authentication and other supported services from a Firebase project. ", + "description": "Update a project by its unique ID.", "responses": { - "202": { - "description": "Migration", + "200": { + "description": "Project", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/project" } } } @@ -44046,28 +48115,41 @@ }, "deprecated": false, "x-appwrite": { - "method": "createFirebaseMigration", - "group": null, + "method": "updateProject", + "group": "projects", "cookies": false, "type": "", - "demo": "migrations\/create-firebase-migration.md", + "demo": "organization\/update-project.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "projects.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "projectId", + "description": "Project unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" } ], "requestBody": { @@ -44076,70 +48158,88 @@ "schema": { "type": "object", "properties": { - "resources": { - "type": "array", - "description": "List of resources to migrate", - "x-example": null, - "items": { - "type": "string", - "enum": [ - "user", - "database", - "table", - "column", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ], - "x-enum-name": "FirebaseMigrationResource", - "x-enum-keys": [ - "user", - "database", - "table", - "column", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ] - } - }, - "serviceAccount": { + "name": { "type": "string", - "description": "JSON of the Firebase service account credentials", - "x-example": "<SERVICE_ACCOUNT>" + "description": "Project name. Max length: 128 chars.", + "x-example": "<NAME>" } }, "required": [ - "resources", - "serviceAccount" + "name" ] } } } } + }, + "delete": { + "summary": "Delete organization project", + "operationId": "organizationDeleteProject", + "tags": [ + "organization" + ], + "description": "Delete a project by its unique ID.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteProject", + "group": "projects", + "cookies": false, + "type": "", + "demo": "organization\/delete-project.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "projects.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "projectId", + "description": "Project unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + } + ] } }, - "\/migrations\/firebase\/report": { + "\/organizations": { "get": { - "summary": "Get Firebase migration report", - "operationId": "migrationsGetFirebaseReport", + "summary": "List Orgnizations", + "operationId": "organizationsList", "tags": [ - "migrations" + "organizations" ], - "description": "Generate a report of the data in a Firebase project before migrating. This endpoint analyzes the source project and returns information about the resources that can be migrated.", + "description": "Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.", "responses": { "200": { - "description": "Migration Report", + "description": "Organizations list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migrationReport" + "$ref": "#\/components\/schemas\/organizationList" } } } @@ -44147,21 +48247,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getFirebaseReport", + "method": "list", "group": null, "cookies": false, "type": "", - "demo": "migrations\/get-firebase-report.md", + "demo": "organizations\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "teams.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md", "auth": { "Project": [] } @@ -44173,70 +48273,52 @@ ], "parameters": [ { - "name": "resources", - "description": "List of resources to migrate", - "required": true, + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan, paymentMethodId, backupPaymentMethodId, platform", + "required": false, "schema": { "type": "array", "items": { - "type": "string", - "enum": [ - "user", - "database", - "table", - "column", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ], - "x-enum-name": "FirebaseMigrationResource", - "x-enum-keys": [ - "user", - "database", - "table", - "column", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ] - } + "type": "string" + }, + "default": [] }, "in": "query" }, { - "name": "serviceAccount", - "description": "JSON of the Firebase service account credentials", - "required": true, + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, "schema": { "type": "string", - "x-example": "<SERVICE_ACCOUNT>" + "x-example": "<SEARCH>", + "default": "" }, "in": "query" } ] - } - }, - "\/migrations\/json\/exports": { + }, "post": { - "summary": "Export documents to JSON", - "operationId": "migrationsCreateJSONExport", + "summary": "Create Organization", + "operationId": "organizationsCreate", "tags": [ - "migrations" + "organizations" ], - "description": "Export documents to a JSON file from your Appwrite database. This endpoint allows you to export documents to a JSON file stored in a secure internal bucket. You'll receive an email with a download link when the export is complete.\n", + "description": "Create a new organization.\n", "responses": { - "202": { - "description": "Migration", + "201": { + "description": "Organization, or PaymentAuthentication", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "oneOf": [ + { + "$ref": "#\/components\/schemas\/organization" + }, + { + "$ref": "#\/components\/schemas\/paymentAuthentication" + } + ] } } } @@ -44244,21 +48326,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createJSONExport", + "method": "create", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-json-export.md", - "rate-limit": 0, + "demo": "organizations\/create.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "teams.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-json-export.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md", "auth": { "Project": [] } @@ -44274,44 +48356,85 @@ "schema": { "type": "object", "properties": { - "resourceId": { + "organizationId": { "type": "string", - "description": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database to export.", - "x-example": "<ID1:ID2>" + "description": "Organization 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.", + "x-example": "<ORGANIZATION_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } }, - "filename": { + "name": { "type": "string", - "description": "The name of the file to be created for the export, excluding the .json extension.", - "x-example": "<FILENAME>" + "description": "Organization name. Max length: 128 chars.", + "x-example": "<NAME>" }, - "columns": { + "billingPlan": { + "type": "string", + "description": "Organization billing plan chosen", + "x-example": "tier-0" + }, + "paymentMethodId": { + "type": "string", + "description": "Payment method ID. Required for pro plans when trial is not available and user doesn't have default payment method set.", + "x-example": "<PAYMENT_METHOD_ID>", + "x-nullable": true + }, + "billingAddressId": { + "type": "string", + "description": "Unique ID of billing address", + "default": "", + "x-example": "<BILLING_ADDRESS_ID>", + "x-nullable": true + }, + "invites": { "type": "array", - "description": "List of attributes to export. If empty, all attributes will be exported. You can use the `*` wildcard to export all attributes from the collection.", + "description": "Additional member invites", "default": [], "x-example": null, "items": { "type": "string" } }, - "queries": { - "type": "array", - "description": "Array of query strings generated using the Query class provided by the SDK to filter documents to export. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } + "couponId": { + "type": "string", + "description": "Coupon id", + "x-example": "<COUPON_ID>", + "x-nullable": true + }, + "taxId": { + "type": "string", + "description": "Tax Id associated to billing.", + "x-example": "<TAX_ID>", + "x-nullable": true + }, + "budget": { + "type": "integer", + "description": "Budget limit for additional usage set for the organization", + "x-example": 0, + "format": "int32", + "x-nullable": true }, - "notify": { - "type": "boolean", - "description": "Set to true to receive an email when the export is complete. Default is true.", - "default": true, - "x-example": false + "platform": { + "type": "string", + "description": "Platform type", + "default": "appwrite", + "x-example": "appwrite", + "enum": [ + "appwrite", + "imagine" + ], + "x-enum-name": "Platform", + "x-enum-keys": [ + "appwrite", + "imagine" + ] } }, "required": [ - "resourceId", - "filename" + "organizationId", + "name", + "billingPlan" ] } } @@ -44319,21 +48442,21 @@ } } }, - "\/migrations\/json\/imports": { - "post": { - "summary": "Import documents from a JSON", - "operationId": "migrationsCreateJSONImport", + "\/organizations\/estimations\/create-organization": { + "patch": { + "summary": "Estimate create Organization", + "operationId": "organizationsEstimationCreateOrganization", "tags": [ - "migrations" + "organizations" ], - "description": "Import documents from a JSON file into your Appwrite database. This endpoint allows you to import documents from a JSON file uploaded to Appwrite Storage bucket.\n", + "description": "Get estimation for creating an organization.", "responses": { - "202": { - "description": "Migration", + "200": { + "description": "Estimation", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/estimation" } } } @@ -44341,21 +48464,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createJSONImport", + "method": "estimationCreateOrganization", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-json-import.md", - "rate-limit": 0, + "demo": "organizations\/estimation-create-organization.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "teams.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-json-import.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/estimation-create-organization.md", "auth": { "Project": [] } @@ -44371,49 +48494,50 @@ "schema": { "type": "object", "properties": { - "bucketId": { + "billingPlan": { "type": "string", - "description": "Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).", - "x-example": "<BUCKET_ID>" + "description": "Organization billing plan chosen", + "x-example": "tier-0" }, - "fileId": { + "paymentMethodId": { "type": "string", - "description": "File ID.", - "x-example": "<FILE_ID>" + "description": "Payment method ID. Required for pro plans when trial is not available and user doesn't have default payment method set.", + "x-example": "<PAYMENT_METHOD_ID>", + "x-nullable": true }, - "resourceId": { - "type": "string", - "description": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database.", - "x-example": "<ID1:ID2>" + "invites": { + "type": "array", + "description": "Additional member invites", + "default": [], + "x-example": null, + "items": { + "type": "string" + } }, - "internalFile": { - "type": "boolean", - "description": "Is the file stored in an internal bucket?", - "default": false, - "x-example": false + "couponId": { + "type": "string", + "description": "Coupon id", + "x-example": "<COUPON_ID>", + "x-nullable": true }, - "onDuplicate": { + "platform": { "type": "string", - "description": "Behavior when a row with an existing $id is encountered. \"fail\" (default): abort on first conflict. \"skip\": silently ignore. \"overwrite\": replace existing row.", - "default": "fail", - "x-example": "fail", + "description": "Platform type", + "default": "appwrite", + "x-example": "appwrite", "enum": [ - "fail", - "skip", - "overwrite" + "appwrite", + "imagine" ], - "x-enum-name": "OnDuplicate", + "x-enum-name": "Platform", "x-enum-keys": [ - "fail", - "skip", - "overwrite" + "appwrite", + "imagine" ] } }, "required": [ - "bucketId", - "fileId", - "resourceId" + "billingPlan" ] } } @@ -44421,43 +48545,39 @@ } } }, - "\/migrations\/nhost": { - "post": { - "summary": "Create NHost migration", - "operationId": "migrationsCreateNHostMigration", + "\/organizations\/{organizationId}": { + "delete": { + "summary": "Delete team", + "operationId": "organizationsDelete", "tags": [ - "migrations" + "organizations" ], - "description": "Migrate data from an NHost project to your Appwrite project. This endpoint allows you to migrate resources like authentication, databases, and other supported services from an NHost project. ", + "description": "Delete an organization.", "responses": { - "202": { - "description": "Migration", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/migration" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "createNHostMigration", + "method": "delete", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-n-host-migration.md", + "demo": "organizations\/delete.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "organizations.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } @@ -44467,116 +48587,35 @@ "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "resources": { - "type": "array", - "description": "List of resources to migrate", - "x-example": null, - "items": { - "type": "string", - "enum": [ - "user", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ], - "x-enum-name": "NHostMigrationResource", - "x-enum-keys": [ - "user", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ] - } - }, - "subdomain": { - "type": "string", - "description": "Source's Subdomain", - "x-example": "<SUBDOMAIN>" - }, - "region": { - "type": "string", - "description": "Source's Region", - "x-example": "<REGION>" - }, - "adminSecret": { - "type": "string", - "description": "Source's Admin Secret", - "x-example": "<ADMIN_SECRET>" - }, - "database": { - "type": "string", - "description": "Source's Database Name", - "x-example": "<DATABASE>" - }, - "username": { - "type": "string", - "description": "Source's Database Username", - "x-example": "<USERNAME>" - }, - "password": { - "type": "string", - "description": "Source's Database Password", - "x-example": "password", - "format": "password" - }, - "port": { - "type": "integer", - "description": "Source's Database Port", - "default": 5432, - "x-example": null, - "format": "int32" - } - }, - "required": [ - "resources", - "subdomain", - "region", - "adminSecret", - "database", - "username", - "password" - ] - } - } + "parameters": [ + { + "name": "organizationId", + "description": "Team ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" } - } + ] } }, - "\/migrations\/nhost\/report": { + "\/organizations\/{organizationId}\/addons": { "get": { - "summary": "Get NHost migration report", - "operationId": "migrationsGetNHostReport", + "summary": "List addons", + "operationId": "organizationsListAddons", "tags": [ - "migrations" + "organizations" ], - "description": "Generate a detailed report of the data in an NHost project before migrating. This endpoint analyzes the source project and returns information about the resources that can be migrated. ", + "description": "List all billing addons for an organization.\n", "responses": { "200": { - "description": "Migration Report", + "description": "Addons list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migrationReport" + "$ref": "#\/components\/schemas\/addonList" } } } @@ -44584,21 +48623,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getNHostReport", + "method": "listAddons", "group": null, "cookies": false, "type": "", - "demo": "migrations\/get-n-host-report.md", + "demo": "organizations\/list-addons.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "billing.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-addons.md", "auth": { "Project": [] } @@ -44610,134 +48649,33 @@ ], "parameters": [ { - "name": "resources", - "description": "List of resources to migrate.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "user", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ], - "x-enum-name": "NHostMigrationResource", - "x-enum-keys": [ - "user", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ] - } - }, - "in": "query" - }, - { - "name": "subdomain", - "description": "Source's Subdomain.", - "required": true, - "schema": { - "type": "string", - "x-example": "<SUBDOMAIN>" - }, - "in": "query" - }, - { - "name": "region", - "description": "Source's Region.", - "required": true, - "schema": { - "type": "string", - "x-example": "<REGION>" - }, - "in": "query" - }, - { - "name": "adminSecret", - "description": "Source's Admin Secret.", - "required": true, - "schema": { - "type": "string", - "x-example": "<ADMIN_SECRET>" - }, - "in": "query" - }, - { - "name": "database", - "description": "Source's Database Name.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DATABASE>" - }, - "in": "query" - }, - { - "name": "username", - "description": "Source's Database Username.", - "required": true, - "schema": { - "type": "string", - "x-example": "<USERNAME>" - }, - "in": "query" - }, - { - "name": "password", - "description": "Source's Database Password.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "format": "password", - "x-example": "password" - }, - "in": "query" - }, - { - "name": "port", - "description": "Source's Database Port.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 5432 + "x-example": "<ORGANIZATION_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/migrations\/supabase": { + "\/organizations\/{organizationId}\/addons\/baa": { "post": { - "summary": "Create Supabase migration", - "operationId": "migrationsCreateSupabaseMigration", + "summary": "Create BAA addon", + "operationId": "organizationsCreateBaaAddon", "tags": [ - "migrations" + "organizations" ], - "description": "Migrate data from a Supabase project to your Appwrite project. This endpoint allows you to migrate resources like authentication, databases, and other supported services from a Supabase project. ", + "description": "Create the BAA billing addon for an organization.\n", "responses": { - "202": { - "description": "Migration", + "201": { + "description": "Addon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/addon" } } } @@ -44745,21 +48683,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createSupabaseMigration", + "method": "createBaaAddon", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-supabase-migration.md", - "rate-limit": 0, + "demo": "organizations\/create-baa-addon.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "billing.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-baa-addon.md", "auth": { "Project": [] } @@ -44769,111 +48707,35 @@ "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "resources": { - "type": "array", - "description": "List of resources to migrate", - "x-example": null, - "items": { - "type": "string", - "enum": [ - "user", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ], - "x-enum-name": "SupabaseMigrationResource", - "x-enum-keys": [ - "user", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ] - } - }, - "endpoint": { - "type": "string", - "description": "Source's Supabase Endpoint", - "x-example": "https:\/\/example.com", - "format": "url" - }, - "apiKey": { - "type": "string", - "description": "Source's API Key", - "x-example": "<API_KEY>" - }, - "databaseHost": { - "type": "string", - "description": "Source's Database Host", - "x-example": "<DATABASE_HOST>" - }, - "username": { - "type": "string", - "description": "Source's Database Username", - "x-example": "<USERNAME>" - }, - "password": { - "type": "string", - "description": "Source's Database Password", - "x-example": "password", - "format": "password" - }, - "port": { - "type": "integer", - "description": "Source's Database Port", - "default": 5432, - "x-example": null, - "format": "int32" - } - }, - "required": [ - "resources", - "endpoint", - "apiKey", - "databaseHost", - "username", - "password" - ] - } - } + "parameters": [ + { + "name": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" } - } + ] } }, - "\/migrations\/supabase\/report": { + "\/organizations\/{organizationId}\/addons\/{addonId}": { "get": { - "summary": "Get Supabase migration report", - "operationId": "migrationsGetSupabaseReport", + "summary": "Get addon", + "operationId": "organizationsGetAddon", "tags": [ - "migrations" + "organizations" ], - "description": "Generate a report of the data in a Supabase project before migrating. This endpoint analyzes the source project and returns information about the resources that can be migrated. ", + "description": "Get the details of a billing addon for an organization.\n", "responses": { "200": { - "description": "Migration Report", + "description": "Addon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migrationReport" + "$ref": "#\/components\/schemas\/addon" } } } @@ -44881,21 +48743,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getSupabaseReport", + "method": "getAddon", "group": null, "cookies": false, "type": "", - "demo": "migrations\/get-supabase-report.md", + "demo": "organizations\/get-addon.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "billing.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-addon.md", "auth": { "Project": [] } @@ -44907,147 +48769,59 @@ ], "parameters": [ { - "name": "resources", - "description": "List of resources to migrate", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "user", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ], - "x-enum-name": "SupabaseMigrationResource", - "x-enum-keys": [ - "user", - "database", - "table", - "column", - "index", - "row", - "document", - "attribute", - "collection", - "bucket", - "file" - ] - } - }, - "in": "query" - }, - { - "name": "endpoint", - "description": "Source's Supabase Endpoint.", - "required": true, - "schema": { - "type": "string", - "format": "url", - "x-example": "https:\/\/example.com" - }, - "in": "query" - }, - { - "name": "apiKey", - "description": "Source's API Key.", - "required": true, - "schema": { - "type": "string", - "x-example": "<API_KEY>" - }, - "in": "query" - }, - { - "name": "databaseHost", - "description": "Source's Database Host.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DATABASE_HOST>" - }, - "in": "query" - }, - { - "name": "username", - "description": "Source's Database Username.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<USERNAME>" + "x-example": "<ORGANIZATION_ID>" }, - "in": "query" + "in": "path" }, { - "name": "password", - "description": "Source's Database Password.", + "name": "addonId", + "description": "Addon ID", "required": true, "schema": { "type": "string", - "format": "password", - "x-example": "password" - }, - "in": "query" - }, - { - "name": "port", - "description": "Source's Database Port.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 5432 + "x-example": "<ADDON_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/migrations\/{migrationId}": { - "get": { - "summary": "Get migration", - "operationId": "migrationsGet", + }, + "delete": { + "summary": "Delete addon", + "operationId": "organizationsDeleteAddon", "tags": [ - "migrations" + "organizations" ], - "description": "Get a migration by its unique ID. This endpoint returns detailed information about a specific migration including its current status, progress, and any errors that occurred during the migration process. ", + "description": "Delete a billing addon for an organization.\n", "responses": { - "200": { - "description": "Migration", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/migration" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "get", + "method": "deleteAddon", "group": null, "cookies": false, "type": "", - "demo": "migrations\/get.md", - "rate-limit": 0, + "demo": "organizations\/delete-addon.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.read", + "scope": "billing.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/delete-addon.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } @@ -45059,31 +48833,43 @@ ], "parameters": [ { - "name": "migrationId", - "description": "Migration unique ID.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<MIGRATION_ID>" + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + }, + { + "name": "addonId", + "description": "Addon ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ADDON_ID>" }, "in": "path" } ] - }, - "patch": { - "summary": "Update retry migration", - "operationId": "migrationsRetry", + } + }, + "\/organizations\/{organizationId}\/addons\/{addonId}\/confirmations": { + "post": { + "summary": "Confirm addon payment after 3DS authentication", + "operationId": "organizationsConfirmAddonPayment", "tags": [ - "migrations" + "organizations" ], - "description": "Retry a failed migration. This endpoint allows you to retry a migration that has previously failed.", + "description": "Confirm payment for a billing addon for an organization.\n", "responses": { - "202": { - "description": "Migration", + "200": { + "description": "Addon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/addon" } } } @@ -45091,21 +48877,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "retry", + "method": "confirmAddonPayment", "group": null, "cookies": false, "type": "", - "demo": "migrations\/retry.md", - "rate-limit": 0, + "demo": "organizations\/confirm-addon-payment.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "billing.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/confirm-addon-payment.md", "auth": { "Project": [] } @@ -45117,46 +48903,65 @@ ], "parameters": [ { - "name": "migrationId", - "description": "Migration unique ID.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<MIGRATION_ID>" + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + }, + { + "name": "addonId", + "description": "Addon ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ADDON_ID>" }, "in": "path" } ] - }, - "delete": { - "summary": "Delete migration", - "operationId": "migrationsDelete", + } + }, + "\/organizations\/{organizationId}\/addons\/{addon}\/price": { + "get": { + "summary": "Get addon price", + "operationId": "organizationsGetAddonPrice", "tags": [ - "migrations" + "organizations" ], - "description": "Delete a migration by its unique ID. This endpoint allows you to remove a migration from your project's migration history. ", + "description": "Get the price details for a billing addon for an organization.\n", "responses": { - "204": { - "description": "No content" + "200": { + "description": "AddonPrice", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/addonPrice" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", + "method": "getAddonPrice", "group": null, "cookies": false, "type": "", - "demo": "migrations\/delete.md", + "demo": "organizations\/get-addon-price.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", + "scope": "billing.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/delete-migration.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-addon-price.md", "auth": { "Project": [] } @@ -45168,33 +48973,52 @@ ], "parameters": [ { - "name": "migrationId", - "description": "Migration ID.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<MIGRATION_ID>" + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + }, + { + "name": "addon", + "description": "Addon key identifier (e.g. baa).", + "required": true, + "schema": { + "type": "string", + "x-example": "baa", + "enum": [ + "baa", + "backup_recovery" + ], + "x-enum-name": "Addon", + "x-enum-keys": [ + "baa", + "backup_recovery" + ] }, "in": "path" } ] } }, - "\/oauth2\/{project_id}\/approve": { - "post": { - "summary": "Approve OAuth2", - "operationId": "oauth2Approve", + "\/organizations\/{organizationId}\/aggregations": { + "get": { + "summary": "List aggregations", + "operationId": "organizationsListAggregations", "tags": [ - "oauth2" + "organizations" ], - "description": "Approve an OAuth2 grant after the user gives consent. Returns the `redirectUrl` the end user should be sent to. The consent screen may optionally pass enriched `authorization_details` to record the concrete resources the user selected. You can pass Accept header of `application\/json` to receive a JSON response instead of a redirect.", + "description": "Get a list of all aggregations for an organization.", "responses": { "200": { - "description": "OAuth2 Approve", + "description": "Aggregation team list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Approve" + "$ref": "#\/components\/schemas\/aggregationTeamList" } } } @@ -45202,87 +49026,72 @@ }, "deprecated": false, "x-appwrite": { - "method": "approve", + "method": "listAggregations", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/approve.md", + "demo": "organizations\/list-aggregations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": "teams.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-aggregations.md", "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: teamId, aggregationId, from, to", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "grant_id": { - "type": "string", - "description": "Grant ID made during authorization, provided to consent screen in URL search params.", - "x-example": "<GRANT_ID>" - }, - "authorization_details": { - "type": "string", - "description": "Enriched `authorization_details` the user consented to, replacing what the client requested. Each entry must use a `type` the project accepts. Optional; omit to keep the originally requested details.", - "default": "", - "x-example": "<AUTHORIZATION_DETAILS>" - } - }, - "required": [ - "grant_id" - ] - } - } - } - } + ] } }, - "\/oauth2\/{project_id}\/authorize": { + "\/organizations\/{organizationId}\/aggregations\/{aggregationId}": { "get": { - "summary": "OAuth2 Authorize", - "operationId": "oauth2Authorize", + "summary": "Get aggregation", + "operationId": "organizationsGetAggregation", "tags": [ - "oauth2" + "organizations" ], - "description": "Begin the OAuth2 authorization flow. When called without a session, the user is redirected to the consent screen without grant ID. When called with a session, the redirect URL includes param for grant ID. You can pass Accept header of `application\/json` to receive a JSON response instead of a redirect.", + "description": "Get a specific aggregation using it's aggregation ID.", "responses": { "200": { - "description": "OAuth2 Authorize", + "description": "Team", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Authorize" + "$ref": "#\/components\/schemas\/aggregationTeam" } } } @@ -45290,190 +49099,92 @@ }, "deprecated": false, "x-appwrite": { - "method": "authorize", + "method": "getAggregation", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/authorize.md", + "demo": "organizations\/get-aggregation.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "teams.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-aggregation.md", "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" }, { - "name": "client_id", - "description": "OAuth2 client ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<CLIENT_ID>" - }, - "in": "query" - }, - { - "name": "redirect_uri", - "description": "Redirect URI where visitor will be redirected after authorization, whether successful or not.", - "required": true, - "schema": { - "type": "string", - "format": "url", - "x-example": "https:\/\/example.com" - }, - "in": "query" - }, - { - "name": "response_type", - "description": "OAuth2 \/ OIDC response type. One of `code` (Authorization Code Flow), `id_token` (Implicit Flow, OIDC login only), or `code id_token` (Hybrid Flow).", - "required": true, - "schema": { - "type": "string", - "x-example": "code" - }, - "in": "query" - }, - { - "name": "scope", - "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`.", + "name": "aggregationId", + "description": "Invoice unique ID", "required": true, "schema": { "type": "string", - "x-example": "<SCOPE>" - }, - "in": "query" - }, - { - "name": "state", - "description": "OAuth2 state. You receive this back in the redirect URI.", - "required": false, - "schema": { - "type": "string", - "x-example": "<STATE>", - "default": "" - }, - "in": "query" - }, - { - "name": "nonce", - "description": "OIDC nonce parameter to prevent replay attacks. Required when response_type includes `id_token`.", - "required": false, - "schema": { - "type": "string", - "x-example": "<NONCE>", - "default": "" - }, - "in": "query" - }, - { - "name": "code_challenge", - "description": "PKCE code challenge. Required when OAuth2 app is public.", - "required": false, - "schema": { - "type": "string", - "x-example": "<CODE_CHALLENGE>", - "default": "" - }, - "in": "query" - }, - { - "name": "code_challenge_method", - "description": "PKCE code challenge method. Required when OAuth2 app is public.", - "required": false, - "schema": { - "type": "string", - "x-example": "s256", - "default": "" - }, - "in": "query" - }, - { - "name": "prompt", - "description": "OIDC prompt parameter for customization of consent screen. Space-separated list of: none, login, consent, select_account.", - "required": false, - "schema": { - "type": "string", - "x-example": "<PROMPT>", - "default": "" + "x-example": "<AGGREGATION_ID>" }, - "in": "query" + "in": "path" }, { - "name": "max_age", - "description": "OIDC max_age paraleter for customization of consent screen. Maximum allowable elapsed time in seconds since the user last authenticated. If exceeded, re-authentication is required.", + "name": "limit", + "description": "Maximum number of project aggregations to return in response. By default will return maximum 5 results. Maximum of 10 results allowed per request.", "required": false, "schema": { "type": "integer", - "format": "int32", - "x-example": 0 - }, - "in": "query" - }, - { - "name": "authorization_details", - "description": "Rich authorization request. JSON array of objects, each with a `type` and project-defined fields", - "required": false, - "schema": { - "type": "string", - "x-example": "<AUTHORIZATION_DETAILS>", - "default": "" + "format": "int32", + "x-example": 0, + "default": 5 }, "in": "query" }, { - "name": "resource", - "description": "RFC 8707 resource indicator URI or URI list. Each value must be an absolute URI without a fragment.", + "name": "offset", + "description": "Offset value. The default value is 0. Use this param to manage pagination.", "required": false, "schema": { - "type": "string", - "default": [] + "type": "integer", + "format": "int32", + "default": 0 }, "in": "query" } ] } }, - "\/oauth2\/{project_id}\/device_authorization": { - "post": { - "summary": "OAuth2 Device Authorization", - "operationId": "oauth2CreateDeviceAuthorization", + "\/organizations\/{organizationId}\/billing-address": { + "patch": { + "summary": "Set team's billing address", + "operationId": "organizationsSetBillingAddress", "tags": [ - "oauth2" + "organizations" ], - "description": "Start the OAuth2 Device Authorization Grant. Returns the device code, user code, verification URL, expiration, and polling interval.", + "description": "Set a billing address for an organization.", "responses": { "200": { - "description": "OAuth2 Device Authorization", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2DeviceAuthorization" + "$ref": "#\/components\/schemas\/organization" } } } @@ -45481,42 +49192,38 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDeviceAuthorization", + "method": "setBillingAddress", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/create-device-authorization.md", + "demo": "organizations\/set-billing-address.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "billing.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-billing-address.md", "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [], - "JWT": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } @@ -45527,134 +49234,90 @@ "schema": { "type": "object", "properties": { - "client_id": { - "type": "string", - "description": "OAuth2 client ID.", - "default": "", - "x-example": "<CLIENT_ID>" - }, - "scope": { - "type": "string", - "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`.", - "default": "", - "x-example": "<SCOPE>" - }, - "authorization_details": { - "type": "string", - "description": "Rich authorization request. JSON array of objects, each with a `type` and project-defined fields", - "default": "", - "x-example": "<AUTHORIZATION_DETAILS>" - }, - "resource": { + "billingAddressId": { "type": "string", - "description": "RFC 8707 resource indicator URI or URI list. Each value must be an absolute URI without a fragment.", - "default": [], - "x-example": null + "description": "Unique ID of billing address", + "x-example": "<BILLING_ADDRESS_ID>" } - } + }, + "required": [ + "billingAddressId" + ] } } } } - } - }, - "\/oauth2\/{project_id}\/grants": { - "post": { - "summary": "Create OAuth2 Grant", - "operationId": "oauth2CreateGrant", + }, + "delete": { + "summary": "Delete team's billing address", + "operationId": "organizationsDeleteBillingAddress", "tags": [ - "oauth2" + "organizations" ], - "description": "Exchange a device flow user code for an OAuth2 grant. The authenticated user is bound to the pending grant. Pass the returned grant ID to the get grant endpoint to render the consent screen, then to the approve or reject endpoint to complete the flow.", + "description": "Delete a team's billing address.", "responses": { - "201": { - "description": "OAuth2 Grant", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/oauth2Grant" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "createGrant", + "method": "deleteBillingAddress", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/create-grant.md", - "rate-limit": 10, - "rate-time": 60, - "rate-key": "ip:{ip},userId:{userId}", - "scope": "oauth2.write", + "demo": "organizations\/delete-billing-address.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "billing.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/delete-billing-address.md", + "produces": [ + "application\/json" + ], "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "user_code": { - "type": "string", - "description": "User code displayed on the device.", - "x-example": "<USER_CODE>" - } - }, - "required": [ - "user_code" - ] - } - } - } - } + ] } }, - "\/oauth2\/{project_id}\/grants\/{grant_id}": { + "\/organizations\/{organizationId}\/billing-addresses\/{billingAddressId}": { "get": { - "summary": "Get OAuth2 Grant", - "operationId": "oauth2GetGrant", + "summary": "Get billing address", + "operationId": "organizationsGetBillingAddress", "tags": [ - "oauth2" + "organizations" ], - "description": "Get an OAuth2 grant by its ID. Used by the consent screen to display the details of the authorization the user is being asked to approve. A grant can only be read by the user it belongs to, or by server SDK.", + "description": "Get a billing address using it's ID.", "responses": { "200": { - "description": "OAuth2 Grant", + "description": "Address", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Grant" + "$ref": "#\/components\/schemas\/billingAddress" } } } @@ -45662,197 +49325,149 @@ }, "deprecated": false, "x-appwrite": { - "method": "getGrant", + "method": "getBillingAddress", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/get-grant.md", + "demo": "organizations\/get-billing-address.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.read", + "scope": "billing.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-billing-address.md", "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [], - "JWT": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client that created grant during authorization exists.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" }, { - "name": "grant_id", - "description": "Grant ID made during authorization, provided to consent screen in URL search params.", + "name": "billingAddressId", + "description": "Unique ID of billing address", "required": true, "schema": { "type": "string", - "x-example": "<GRANT_ID>" + "x-example": "<BILLING_ADDRESS_ID>" }, "in": "path" } ] } }, - "\/oauth2\/{project_id}\/logout": { - "get": { - "summary": "OAuth2 Logout", - "operationId": "oauth2Logout", + "\/organizations\/{organizationId}\/billing-email": { + "patch": { + "summary": "Set team's billing email", + "operationId": "organizationsSetBillingEmail", "tags": [ - "oauth2" + "organizations" ], - "description": "OpenID Connect RP-Initiated Logout. Ends the user session and revokes the tokens issued to the app identified by the `id_token_hint`, then redirects the user to `post_logout_redirect_uri` when it matches a URI registered on the app.", + "description": "Set the current billing email for the organization.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Organization", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/organization" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "logout", + "method": "setBillingEmail", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/logout.md", + "demo": "organizations\/set-billing-email.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "billing.write", "platforms": [ - "console", - "client" + "console" ], "packaging": false, "public": true, - "produces": [ - "application\/json" - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-billing-email.md", "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" - }, - { - "name": "id_token_hint", - "description": "ID Token previously issued to the app, used as proof of the logout request. Required to end the session; signature and issuer are validated while expiry is ignored.", - "required": false, - "schema": { - "type": "string", - "x-example": "<ID_TOKEN_HINT>", - "default": "" - }, - "in": "query" - }, - { - "name": "logout_hint", - "description": "Hint about the user that is logging out. Accepted for OIDC compatibility.", - "required": false, - "schema": { - "type": "string", - "x-example": "<LOGOUT_HINT>", - "default": "" - }, - "in": "query" - }, - { - "name": "client_id", - "description": "OAuth2 client ID. When both `client_id` and `id_token_hint` are provided, they must identify the same app.", - "required": false, - "schema": { - "type": "string", - "x-example": "<CLIENT_ID>", - "default": "" - }, - "in": "query" - }, - { - "name": "post_logout_redirect_uri", - "description": "URI to redirect the user to after logout. Must exactly match a URI registered in the app's `postLogoutRedirectUris`.", - "required": false, - "schema": { - "type": "string", - "format": "url", - "x-example": "https:\/\/example.com", - "default": "" - }, - "in": "query" - }, - { - "name": "state", - "description": "Opaque value passed back unchanged in the `state` query param of the post-logout redirect.", - "required": false, - "schema": { - "type": "string", - "x-example": "<STATE>", - "default": "" - }, - "in": "query" - }, - { - "name": "ui_locales", - "description": "Preferred languages for any logout UI, as space-separated BCP47 tags. Accepted for OIDC compatibility.", - "required": false, - "schema": { - "type": "string", - "x-example": "<UI_LOCALES>", - "default": "" - }, - "in": "query" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "billingEmail": { + "type": "string", + "description": "Billing email for the organization.", + "x-example": "email@example.com", + "format": "email" + } + }, + "required": [ + "billingEmail" + ] + } + } + } + } } }, - "\/oauth2\/{project_id}\/reject": { - "post": { - "summary": "Reject OAuth2", - "operationId": "oauth2Reject", + "\/organizations\/{organizationId}\/budget": { + "patch": { + "summary": "Update organization budget", + "operationId": "organizationsUpdateBudget", "tags": [ - "oauth2" + "organizations" ], - "description": "Reject an OAuth2 grant when the user denies consent. Returns the `redirectUrl` the end user should be sent to with an `access_denied` error. You can pass Accept header of `application\/json` to receive a JSON response instead of a redirect.", + "description": "Update the budget limit for an organization.", "responses": { "200": { - "description": "OAuth2 Reject", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Reject" + "$ref": "#\/components\/schemas\/organization" } } } @@ -45860,41 +49475,38 @@ }, "deprecated": false, "x-appwrite": { - "method": "reject", + "method": "updateBudget", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/reject.md", + "demo": "organizations\/update-budget.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": "billing.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/update-budget.md", "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "name": "organizationId", + "description": "Organization Unique ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } @@ -45905,14 +49517,27 @@ "schema": { "type": "object", "properties": { - "grant_id": { - "type": "string", - "description": "Grant ID made during authorization, provided to consent screen in URL search params.", - "x-example": "<GRANT_ID>" + "budget": { + "type": "integer", + "description": "Budget limit for additional usage set for the organization", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "alerts": { + "type": "array", + "description": "Budget alert limit percentage", + "default": [ + 75 + ], + "x-example": null, + "items": { + "type": "integer" + } } }, "required": [ - "grant_id" + "budget" ] } } @@ -45920,22 +49545,21 @@ } } }, - "\/oauth2\/{project_id}\/revoke": { - "post": { - "summary": "OAuth2 Revoke", - "operationId": "oauth2Revoke", + "\/organizations\/{organizationId}\/credits": { + "get": { + "summary": "List credits", + "operationId": "organizationsListCredits", "tags": [ - "oauth2" + "organizations" ], - "description": "Revoke an OAuth2 access token or refresh token.", + "description": "List all credits for an organization.\n", "responses": { "200": { - "description": "File", + "description": "CreditList", "content": { "application\/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#\/components\/schemas\/creditList" } } } @@ -45943,42 +49567,109 @@ }, "deprecated": false, "x-appwrite": { - "method": "revoke", + "method": "listCredits", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/revoke.md", + "demo": "organizations\/list-credits.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "billing.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-credits.md", "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [], - "JWT": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "name": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: teamId, couponId, credits, expiration, status", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + } + ] + }, + "post": { + "summary": "Add credits from coupon", + "operationId": "organizationsAddCredit", + "tags": [ + "organizations" + ], + "description": "Add credit to an organization using a coupon.", + "responses": { + "201": { + "description": "Credit", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/credit" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "addCredit", + "group": null, + "cookies": false, + "type": "", + "demo": "organizations\/add-credit.md", + "rate-limit": 10, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "billing.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/add-credit.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } @@ -45989,32 +49680,14 @@ "schema": { "type": "object", "properties": { - "token": { - "type": "string", - "description": "The access or refresh token to revoke.", - "x-example": "<TOKEN>" - }, - "token_type_hint": { - "type": "string", - "description": "Type of token to revoke (access_token or refresh_token).", - "default": "", - "x-example": "access_token" - }, - "client_id": { - "type": "string", - "description": "OAuth2 client ID.", - "default": "", - "x-example": "<CLIENT_ID>" - }, - "client_secret": { + "couponId": { "type": "string", - "description": "OAuth2 client secret. Required for confidential apps; omitted for public apps.", - "default": "", - "x-example": "<CLIENT_SECRET>" + "description": "ID of the coupon", + "x-example": "<COUPON_ID>" } }, "required": [ - "token" + "couponId" ] } } @@ -46022,21 +49695,21 @@ } } }, - "\/oauth2\/{project_id}\/token": { - "post": { - "summary": "OAuth2 Token", - "operationId": "oauth2CreateToken", + "\/organizations\/{organizationId}\/credits\/available": { + "get": { + "summary": "Get available credits", + "operationId": "organizationsGetAvailableCredits", "tags": [ - "oauth2" + "organizations" ], - "description": "Exchange an OAuth2 authorization code, refresh token, or device code for access and refresh tokens.", + "description": "Get total available valid credits for an organization.", "responses": { "200": { - "description": "OAuth2 Token", + "description": "CreditAvailable", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Token" + "$ref": "#\/components\/schemas\/creditAvailable" } } } @@ -46044,131 +49717,59 @@ }, "deprecated": false, "x-appwrite": { - "method": "createToken", + "method": "getAvailableCredits", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/create-token.md", + "demo": "organizations\/get-available-credits.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "billing.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-available-credits.md", "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [], - "JWT": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "grant_type": { - "type": "string", - "description": "OAuth2 grant type. Can be one of: `authorization_code`, `refresh_token`, `urn:ietf:params:oauth:grant-type:device_code`.", - "x-example": "<GRANT_TYPE>" - }, - "code": { - "type": "string", - "description": "Authorization code to be exchanged for access and refresh tokens. Required for `authorization_code` grant type.", - "default": "", - "x-example": "<CODE>" - }, - "refresh_token": { - "type": "string", - "description": "Refresh token to be exchanged for a new access and refresh tokens. Required for `refresh_token` grant type.", - "default": "", - "x-example": "<REFRESH_TOKEN>" - }, - "device_code": { - "type": "string", - "description": "Device code obtained from the device authorization endpoint. Required for `urn:ietf:params:oauth:grant-type:device_code` grant type.", - "default": "", - "x-example": "<DEVICE_CODE>" - }, - "client_id": { - "type": "string", - "description": "OAuth2 client ID.", - "default": "", - "x-example": "<CLIENT_ID>" - }, - "client_secret": { - "type": "string", - "description": "OAuth2 client secret. Required for confidential apps.", - "default": "", - "x-example": "<CLIENT_SECRET>" - }, - "code_verifier": { - "type": "string", - "description": "PKCE code verifier. Required for public apps.", - "default": "", - "x-example": "<CODE_VERIFIER>" - }, - "redirect_uri": { - "type": "string", - "description": "Redirect URI. Required for `authorization_code` grant type.", - "default": "", - "x-example": "https:\/\/example.com", - "format": "url" - }, - "resource": { - "type": "string", - "description": "RFC 8707 resource indicator URI or URI list. Each value must be an absolute URI without a fragment.", - "default": [], - "x-example": null - } - }, - "required": [ - "grant_type" - ] - } - } - } - } + ] } }, - "\/organization\/keys": { + "\/organizations\/{organizationId}\/credits\/{creditId}": { "get": { - "summary": "List organization keys", - "operationId": "organizationListKeys", + "summary": "Get credit details", + "operationId": "organizationsGetCredit", "tags": [ - "organization" + "organizations" ], - "description": "Get a list of all API keys from the current organization.", + "description": "Get credit details.", "responses": { "200": { - "description": "API Keys List", + "description": "Credit", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/keyList" + "$ref": "#\/components\/schemas\/credit" } } } @@ -46176,72 +49777,69 @@ }, "deprecated": false, "x-appwrite": { - "method": "listKeys", - "group": "keys", + "method": "getCredit", + "group": null, "cookies": false, "type": "", - "demo": "organization\/list-keys.md", + "demo": "organizations\/get-credit.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "organization.keys.read", + "scope": "billing.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-credit.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: expire, accessedAt, name, scopes", - "required": false, + "name": "organizationId", + "description": "Organization ID", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "<ORGANIZATION_ID>" }, - "in": "query" + "in": "path" }, { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, + "name": "creditId", + "description": "Credit Unique ID", + "required": true, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "<CREDIT_ID>" }, - "in": "query" + "in": "path" } ] - }, - "post": { - "summary": "Create organization key", - "operationId": "organizationCreateKey", + } + }, + "\/organizations\/{organizationId}\/estimations\/delete-organization": { + "patch": { + "summary": "Estimate delete team", + "operationId": "organizationsEstimationDeleteOrganization", "tags": [ - "organization" + "organizations" ], - "description": "Create a new organization API key.", + "description": "Get estimation for deleting an organization.", "responses": { - "201": { - "description": "Key", + "200": { + "description": "DeleteOrganization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/key" + "$ref": "#\/components\/schemas\/estimationDeleteOrganization" } } } @@ -46249,117 +49847,59 @@ }, "deprecated": false, "x-appwrite": { - "method": "createKey", - "group": "keys", + "method": "estimationDeleteOrganization", + "group": null, "cookies": false, "type": "", - "demo": "organization\/create-key.md", - "rate-limit": 0, + "demo": "organizations\/estimation-delete-organization.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "organization.keys.write", + "scope": "organizations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/estimation-delete-organization.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "keyId": { - "type": "string", - "description": "Key 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.", - "x-example": "<KEY_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Key name. Max length: 128 chars.", - "x-example": "<NAME>" - }, - "scopes": { - "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", - "x-example": null, - "items": { - "type": "string", - "enum": [ - "projects.read", - "projects.write", - "devKeys.read", - "devKeys.write", - "organization.keys.read", - "organization.keys.write", - "domains.read", - "domains.write", - "keys.read", - "keys.write" - ], - "x-enum-name": "OrganizationKeyScopes", - "x-enum-keys": [ - "projects.read", - "projects.write", - "devKeys.read", - "devKeys.write", - "organization.keys.read", - "organization.keys.write", - "domains.read", - "domains.write", - "keys.read", - "keys.write" - ] - } - }, - "expire": { - "type": "string", - "description": "Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", - "x-nullable": true - } - }, - "required": [ - "keyId", - "name", - "scopes" - ] - } - } + "parameters": [ + { + "name": "organizationId", + "description": "Team ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" } - } + ] } }, - "\/organization\/keys\/{keyId}": { - "get": { - "summary": "Get organization key", - "operationId": "organizationGetKey", + "\/organizations\/{organizationId}\/estimations\/update-plan": { + "patch": { + "summary": "Estimate for update plan", + "operationId": "organizationsEstimationUpdatePlan", "tags": [ - "organization" + "organizations" ], - "description": "Get a key by its unique ID. This endpoint returns details about a specific API key in your organization including its scopes.", + "description": "Get estimation for updating the organization plan.", "responses": { "200": { - "description": "Key", + "description": "UpdatePlan", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/key" + "$ref": "#\/components\/schemas\/estimationUpdatePlan" } } } @@ -46367,58 +49907,93 @@ }, "deprecated": false, "x-appwrite": { - "method": "getKey", - "group": "keys", + "method": "estimationUpdatePlan", + "group": null, "cookies": false, "type": "", - "demo": "organization\/get-key.md", - "rate-limit": 0, + "demo": "organizations\/estimation-update-plan.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "organization.keys.read", + "scope": "billing.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/estimation-update-plan.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "keyId", - "description": "Key unique ID.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<KEY_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } - ] - }, - "put": { - "summary": "Update organization key", - "operationId": "organizationUpdateKey", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "billingPlan": { + "type": "string", + "description": "Organization billing plan chosen", + "x-example": "tier-0" + }, + "invites": { + "type": "array", + "description": "Additional member invites", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "couponId": { + "type": "string", + "description": "Coupon id", + "x-example": "<COUPON_ID>", + "x-nullable": true + } + }, + "required": [ + "billingPlan" + ] + } + } + } + } + } + }, + "\/organizations\/{organizationId}\/feedbacks\/downgrade": { + "post": { + "summary": "Create downgrade feedback", + "operationId": "organizationsCreateDowngradeFeedback", "tags": [ - "organization" + "organizations" ], - "description": "Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.", + "description": "Submit feedback about downgrading from a paid plan to a lower tier. This helps the team understand user experience and improve the platform.\n", "responses": { - "200": { - "description": "Key", + "201": { + "description": "Downgrade Feedback", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/key" + "$ref": "#\/components\/schemas\/downgradeFeedback" } } } @@ -46426,39 +50001,38 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateKey", - "group": "keys", + "method": "createDowngradeFeedback", + "group": null, "cookies": false, "type": "", - "demo": "organization\/update-key.md", + "demo": "organizations\/create-downgrade-feedback.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "organization.keys.write", + "scope": "billing.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-downgrade-feedback.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "keyId", - "description": "Key unique ID.", + "name": "organizationId", + "description": "Organization Unique ID", "required": true, "schema": { "type": "string", - "x-example": "<KEY_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } @@ -46469,129 +50043,127 @@ "schema": { "type": "object", "properties": { - "name": { + "reason": { "type": "string", - "description": "Key name. Max length: 128 chars.", - "x-example": "<NAME>" + "description": "Feedback reason", + "x-example": "<REASON>" }, - "scopes": { - "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", - "x-example": null, - "items": { - "type": "string", - "enum": [ - "projects.read", - "projects.write", - "devKeys.read", - "devKeys.write", - "organization.keys.read", - "organization.keys.write", - "domains.read", - "domains.write", - "keys.read", - "keys.write" - ], - "x-enum-name": "OrganizationKeyScopes", - "x-enum-keys": [ - "projects.read", - "projects.write", - "devKeys.read", - "devKeys.write", - "organization.keys.read", - "organization.keys.write", - "domains.read", - "domains.write", - "keys.read", - "keys.write" - ] - } + "message": { + "type": "string", + "description": "Feedback message", + "x-example": "<MESSAGE>" }, - "expire": { + "fromPlanId": { "type": "string", - "description": "Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime", - "x-nullable": true + "description": "Plan downgrading from", + "x-example": "<FROM_PLAN_ID>" + }, + "toPlanId": { + "type": "string", + "description": "Plan downgrading to", + "x-example": "<TO_PLAN_ID>" } }, "required": [ - "name", - "scopes" + "reason", + "message", + "fromPlanId", + "toPlanId" ] } } } } - }, - "delete": { - "summary": "Delete organization key", - "operationId": "organizationDeleteKey", + } + }, + "\/organizations\/{organizationId}\/invoices": { + "get": { + "summary": "List invoices", + "operationId": "organizationsListInvoices", "tags": [ - "organization" + "organizations" ], - "description": "Delete a key by its unique ID. Once deleted, the key can no longer be used to authenticate API calls.", + "description": "List all invoices for an organization.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Billing invoices list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/invoiceList" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteKey", - "group": "keys", + "method": "listInvoices", + "group": null, "cookies": false, "type": "", - "demo": "organization\/delete-key.md", + "demo": "organizations\/list-invoices.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "organization.keys.write", + "scope": "billing.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-invoices.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "keyId", - "description": "Key unique ID.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<KEY_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: teamId, aggregationId, type, amount, currency, from, to, dueAt, attempts, status, grossAmount", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" } ] } }, - "\/organization\/projects": { + "\/organizations\/{organizationId}\/invoices\/{invoiceId}": { "get": { - "summary": "List organization projects", - "operationId": "organizationListProjects", + "summary": "Get invoice", + "operationId": "organizationsGetInvoice", "tags": [ - "organization" + "organizations" ], - "description": "Get a list of all projects. You can use the query params to filter your results.", + "description": "Get an invoice by its unique ID.", "responses": { "200": { - "description": "Projects List", + "description": "Invoice", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/projectList" + "$ref": "#\/components\/schemas\/invoice" } } } @@ -46599,83 +50171,141 @@ }, "deprecated": false, "x-appwrite": { - "method": "listProjects", - "group": "projects", + "method": "getInvoice", + "group": null, "cookies": false, "type": "", - "demo": "organization\/list-projects.md", + "demo": "organizations\/get-invoice.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "billing.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-invoice.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId, labels, search", - "required": false, + "name": "organizationId", + "description": "Organization ID", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "<ORGANIZATION_ID>" }, - "in": "query" + "in": "path" }, { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, + "name": "invoiceId", + "description": "Invoice unique ID", + "required": true, "schema": { "type": "string", - "x-example": "<SEARCH>", - "default": "" + "x-example": "<INVOICE_ID>" }, - "in": "query" + "in": "path" + } + ] + } + }, + "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/download": { + "get": { + "summary": "Download invoice in PDF", + "operationId": "organizationsGetInvoiceDownload", + "tags": [ + "organizations" + ], + "description": "Download invoice in PDF", + "responses": { + "200": { + "description": "paymentMethod", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/paymentMethod" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getInvoiceDownload", + "group": null, + "cookies": false, + "type": "location", + "demo": "organizations\/get-invoice-download.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "billing.read", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-invoice-download.md", + "auth": { + "Project": [], + "ImpersonateUserId": [] + } + }, + "security": [ + { + "Project": [], + "ImpersonateUserId": [] + } + ], + "parameters": [ + { + "name": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" }, { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, + "name": "invoiceId", + "description": "Invoice unique ID", + "required": true, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "<INVOICE_ID>" }, - "in": "query" + "in": "path" } ] - }, + } + }, + "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/payments": { "post": { - "summary": "Create organization project", - "operationId": "organizationCreateProject", + "summary": "Initiate payment for failed invoice to pay live from console", + "operationId": "organizationsCreateInvoicePayment", "tags": [ - "organization" + "organizations" ], - "description": "Create a new project.", + "description": "Initiate payment for failed invoice to pay live from console", "responses": { - "201": { - "description": "Project", + "200": { + "description": "Invoice", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/project" + "$ref": "#\/components\/schemas\/invoice" } } } @@ -46683,29 +50313,50 @@ }, "deprecated": false, "x-appwrite": { - "method": "createProject", - "group": "projects", + "method": "createInvoicePayment", + "group": null, "cookies": false, "type": "", - "demo": "organization\/create-project.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "organizations\/create-invoice-payment.md", + "rate-limit": 10, + "rate-time": 86400, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "billing.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-invoice-payment.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + }, + { + "name": "invoiceId", + "description": "Invoice unique ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<INVOICE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -46714,42 +50365,14 @@ "schema": { "type": "object", "properties": { - "projectId": { - "type": "string", - "description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.", - "x-example": null - }, - "name": { - "type": "string", - "description": "Project name. Max length: 128 chars.", - "x-example": "<NAME>" - }, - "region": { + "paymentMethodId": { "type": "string", - "description": "Project Region.", - "x-example": "fra", - "enum": [ - "fra", - "nyc", - "syd", - "sfo", - "sgp", - "tor" - ], - "x-enum-name": "Region", - "x-enum-keys": [ - "fra", - "nyc", - "syd", - "sfo", - "sgp", - "tor" - ] + "description": "Payment method ID", + "x-example": "<PAYMENT_METHOD_ID>" } }, "required": [ - "projectId", - "name" + "paymentMethodId" ] } } @@ -46757,21 +50380,21 @@ } } }, - "\/organization\/projects\/{projectId}": { - "get": { - "summary": "Get organization project", - "operationId": "organizationGetProject", + "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/status": { + "patch": { + "summary": "Validate the payment for an invoice and update status", + "operationId": "organizationsValidateInvoice", "tags": [ - "organization" + "organizations" ], - "description": "Get a project.", + "description": "Validates the payment linked with the invoice and updates the invoice status if the payment status is changed.", "responses": { "200": { - "description": "Project", + "description": "Invoice", "content": { - "": { + "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/project" + "$ref": "#\/components\/schemas\/invoice" } } } @@ -46779,58 +50402,69 @@ }, "deprecated": false, "x-appwrite": { - "method": "getProject", - "group": "projects", + "method": "validateInvoice", + "group": null, "cookies": false, "type": "", - "demo": "organization\/get-project.md", + "demo": "organizations\/validate-invoice.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "billing.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/update-invoice-status.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "projectId", - "description": "Project unique ID.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + }, + { + "name": "invoiceId", + "description": "Invoice unique ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<INVOICE_ID>" }, "in": "path" } ] - }, - "patch": { - "summary": "Update organization project", - "operationId": "organizationUpdateProject", + } + }, + "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/view": { + "get": { + "summary": "View invoice in PDF", + "operationId": "organizationsGetInvoiceView", "tags": [ - "organization" + "organizations" ], - "description": "Update a project by its unique ID.", + "description": "View invoice in PDF", "responses": { "200": { - "description": "Project", + "description": "paymentMethod", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/project" + "$ref": "#\/components\/schemas\/paymentMethod" } } } @@ -46838,131 +50472,148 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateProject", - "group": "projects", + "method": "getInvoiceView", + "group": null, "cookies": false, - "type": "", - "demo": "organization\/update-project.md", + "type": "location", + "demo": "organizations\/get-invoice-view.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "billing.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-invoice-view.md", "auth": { - "Project": [] + "Project": [], + "ImpersonateUserId": [] } }, "security": [ { "Project": [], - "Key": [] + "ImpersonateUserId": [] } ], "parameters": [ { - "name": "projectId", - "description": "Project unique ID.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + }, + { + "name": "invoiceId", + "description": "Invoice unique ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<INVOICE_ID>" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Project name. Max length: 128 chars.", - "x-example": "<NAME>" - } - }, - "required": [ - "name" - ] - } - } - } - } - }, - "delete": { - "summary": "Delete organization project", - "operationId": "organizationDeleteProject", + ] + } + }, + "\/organizations\/{organizationId}\/payment-method": { + "patch": { + "summary": "Set team's payment method", + "operationId": "organizationsSetDefaultPaymentMethod", "tags": [ - "organization" + "organizations" ], - "description": "Delete a project by its unique ID.", + "description": "Set a organization's default payment method.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Organization", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/organization" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteProject", - "group": "projects", + "method": "setDefaultPaymentMethod", + "group": null, "cookies": false, "type": "", - "demo": "organization\/delete-project.md", + "demo": "organizations\/set-default-payment-method.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "billing.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-default-payment-method.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "projectId", - "description": "Project unique ID.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } - ] - } - }, - "\/organizations": { - "get": { - "summary": "List Orgnizations", - "operationId": "organizationsList", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string", + "description": "Unique ID of payment method", + "x-example": "<PAYMENT_METHOD_ID>" + } + }, + "required": [ + "paymentMethodId" + ] + } + } + } + } + }, + "delete": { + "summary": "Delete team's default payment method", + "operationId": "organizationsDeleteDefaultPaymentMethod", "tags": [ "organizations" ], - "description": "Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.", + "description": "Delete the default payment method for an organization.", "responses": { "200": { - "description": "Organizations list", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organizationList" + "$ref": "#\/components\/schemas\/organization" } } } @@ -46970,21 +50621,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "list", + "method": "deleteDefaultPaymentMethod", "group": null, "cookies": false, "type": "", - "demo": "organizations\/list.md", + "demo": "organizations\/delete-default-payment-method.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.read", + "scope": "billing.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/delete-default-payment-method.md", "auth": { "Project": [] } @@ -46996,52 +50647,33 @@ ], "parameters": [ { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan, paymentMethodId, backupPaymentMethodId, platform", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "search", - "description": "Search term to filter your list results. Max length: 256 chars.", - "required": false, + "name": "organizationId", + "description": "Organization ID", + "required": true, "schema": { "type": "string", - "x-example": "<SEARCH>", - "default": "" + "x-example": "<ORGANIZATION_ID>" }, - "in": "query" + "in": "path" } ] - }, - "post": { - "summary": "Create Organization", - "operationId": "organizationsCreate", + } + }, + "\/organizations\/{organizationId}\/payment-method\/backup": { + "patch": { + "summary": "Set team's backup payment method", + "operationId": "organizationsSetBackupPaymentMethod", "tags": [ "organizations" ], - "description": "Create a new organization.\n", + "description": "Set an organization's backup payment method.\n", "responses": { - "201": { - "description": "Organization, or PaymentAuthentication", + "200": { + "description": "Organization", "content": { "application\/json": { "schema": { - "oneOf": [ - { - "$ref": "#\/components\/schemas\/organization" - }, - { - "$ref": "#\/components\/schemas\/paymentAuthentication" - } - ] + "$ref": "#\/components\/schemas\/organization" } } } @@ -47049,21 +50681,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "create", + "method": "setBackupPaymentMethod", "group": null, "cookies": false, "type": "", - "demo": "organizations\/create.md", - "rate-limit": 10, + "demo": "organizations\/set-backup-payment-method.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.write", + "scope": "billing.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-backup-payment-method.md", "auth": { "Project": [] } @@ -47073,113 +50705,52 @@ "Project": [] } ], + "parameters": [ + { + "name": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + } + ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "organizationId": { - "type": "string", - "description": "Organization 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.", - "x-example": "<ORGANIZATION_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "name": { - "type": "string", - "description": "Organization name. Max length: 128 chars.", - "x-example": "<NAME>" - }, - "billingPlan": { - "type": "string", - "description": "Organization billing plan chosen", - "x-example": "tier-0" - }, "paymentMethodId": { "type": "string", - "description": "Payment method ID. Required for pro plans when trial is not available and user doesn't have default payment method set.", - "x-example": "<PAYMENT_METHOD_ID>", - "x-nullable": true - }, - "billingAddressId": { - "type": "string", - "description": "Unique ID of billing address", - "default": "", - "x-example": "<BILLING_ADDRESS_ID>", - "x-nullable": true - }, - "invites": { - "type": "array", - "description": "Additional member invites", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "couponId": { - "type": "string", - "description": "Coupon id", - "x-example": "<COUPON_ID>", - "x-nullable": true - }, - "taxId": { - "type": "string", - "description": "Tax Id associated to billing.", - "x-example": "<TAX_ID>", - "x-nullable": true - }, - "budget": { - "type": "integer", - "description": "Budget limit for additional usage set for the organization", - "x-example": 0, - "format": "int32", - "x-nullable": true - }, - "platform": { - "type": "string", - "description": "Platform type", - "default": "appwrite", - "x-example": "appwrite", - "enum": [ - "appwrite", - "imagine" - ], - "x-enum-name": "Platform", - "x-enum-keys": [ - "appwrite", - "imagine" - ] + "description": "Unique ID of payment method", + "x-example": "<PAYMENT_METHOD_ID>" } }, "required": [ - "organizationId", - "name", - "billingPlan" + "paymentMethodId" ] } } } } - } - }, - "\/organizations\/estimations\/create-organization": { - "patch": { - "summary": "Estimate create Organization", - "operationId": "organizationsEstimationCreateOrganization", + }, + "delete": { + "summary": "Delete team's backup payment method", + "operationId": "organizationsDeleteBackupPaymentMethod", "tags": [ "organizations" ], - "description": "Get estimation for creating an organization.", + "description": "Delete a backup payment method for an organization.", "responses": { "200": { - "description": "Estimation", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/estimation" + "$ref": "#\/components\/schemas\/organization" } } } @@ -47187,21 +50758,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "estimationCreateOrganization", + "method": "deleteBackupPaymentMethod", "group": null, "cookies": false, "type": "", - "demo": "organizations\/estimation-create-organization.md", - "rate-limit": 10, + "demo": "organizations\/delete-backup-payment-method.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.write", + "scope": "billing.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/estimation-create-organization.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/delete-backup-payment-method.md", "auth": { "Project": [] } @@ -47211,96 +50782,57 @@ "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "billingPlan": { - "type": "string", - "description": "Organization billing plan chosen", - "x-example": "tier-0" - }, - "paymentMethodId": { - "type": "string", - "description": "Payment method ID. Required for pro plans when trial is not available and user doesn't have default payment method set.", - "x-example": "<PAYMENT_METHOD_ID>", - "x-nullable": true - }, - "invites": { - "type": "array", - "description": "Additional member invites", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "couponId": { - "type": "string", - "description": "Coupon id", - "x-example": "<COUPON_ID>", - "x-nullable": true - }, - "platform": { - "type": "string", - "description": "Platform type", - "default": "appwrite", - "x-example": "appwrite", - "enum": [ - "appwrite", - "imagine" - ], - "x-enum-name": "Platform", - "x-enum-keys": [ - "appwrite", - "imagine" - ] - } - }, - "required": [ - "billingPlan" - ] - } - } + "parameters": [ + { + "name": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" } - } + ] } }, - "\/organizations\/{organizationId}": { - "delete": { - "summary": "Delete team", - "operationId": "organizationsDelete", + "\/organizations\/{organizationId}\/payment-methods\/{paymentMethodId}": { + "get": { + "summary": "Get payment method", + "operationId": "organizationsGetPaymentMethod", "tags": [ "organizations" ], - "description": "Delete an organization.", + "description": "Get an organization's payment method using it's payment method ID.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "paymentMethod", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/paymentMethod" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", + "method": "getPaymentMethod", "group": null, "cookies": false, "type": "", - "demo": "organizations\/delete.md", + "demo": "organizations\/get-payment-method.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "organizations.write", + "scope": "billing.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md", - "produces": [ - "application\/json" - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-payment-method.md", "auth": { "Project": [] } @@ -47313,32 +50845,42 @@ "parameters": [ { "name": "organizationId", - "description": "Team ID.", + "description": "Organization ID", "required": true, "schema": { "type": "string", "x-example": "<ORGANIZATION_ID>" }, "in": "path" + }, + { + "name": "paymentMethodId", + "description": "Unique ID of payment method", + "required": true, + "schema": { + "type": "string", + "x-example": "<PAYMENT_METHOD_ID>" + }, + "in": "path" } ] } }, - "\/organizations\/{organizationId}\/addons": { + "\/organizations\/{organizationId}\/plan": { "get": { - "summary": "List addons", - "operationId": "organizationsListAddons", + "summary": "Get organization billing plan details", + "operationId": "organizationsGetPlan", "tags": [ "organizations" ], - "description": "List all billing addons for an organization.\n", + "description": "Get the details of the current billing plan for an organization.", "responses": { "200": { - "description": "Addons list", + "description": "billingPlan", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addonList" + "$ref": "#\/components\/schemas\/billingPlan" } } } @@ -47346,21 +50888,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listAddons", + "method": "getPlan", "group": null, "cookies": false, "type": "", - "demo": "organizations\/list-addons.md", + "demo": "organizations\/get-plan.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "teams.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-addons.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-plan.md", "auth": { "Project": [] } @@ -47373,7 +50915,7 @@ "parameters": [ { "name": "organizationId", - "description": "Organization ID", + "description": "Organization Unique ID", "required": true, "schema": { "type": "string", @@ -47382,23 +50924,21 @@ "in": "path" } ] - } - }, - "\/organizations\/{organizationId}\/addons\/baa": { - "post": { - "summary": "Create BAA addon", - "operationId": "organizationsCreateBaaAddon", + }, + "patch": { + "summary": "Update organization billing plan", + "operationId": "organizationsUpdatePlan", "tags": [ "organizations" ], - "description": "Create the BAA billing addon for an organization.\n", + "description": "Update the billing plan for an organization.", "responses": { - "201": { - "description": "Addon", + "200": { + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addon" + "$ref": "#\/components\/schemas\/organization" } } } @@ -47406,11 +50946,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "createBaaAddon", + "method": "updatePlan", "group": null, "cookies": false, "type": "", - "demo": "organizations\/create-baa-addon.md", + "demo": "organizations\/update-plan.md", "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -47420,7 +50960,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-baa-addon.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/update-plan.md", "auth": { "Project": [] } @@ -47433,7 +50973,7 @@ "parameters": [ { "name": "organizationId", - "description": "Organization ID", + "description": "Organization Unique ID", "required": true, "schema": { "type": "string", @@ -47441,24 +50981,83 @@ }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "billingPlan": { + "type": "string", + "description": "Organization billing plan chosen", + "x-example": "tier-0" + }, + "paymentMethodId": { + "type": "string", + "description": "Payment method ID. Required for pro plans when trial is not available and user doesn't have default payment method set.", + "x-example": "<PAYMENT_METHOD_ID>", + "x-nullable": true + }, + "billingAddressId": { + "type": "string", + "description": "Unique ID of billing address", + "default": "", + "x-example": "<BILLING_ADDRESS_ID>" + }, + "invites": { + "type": "array", + "description": "Additional member invites", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "couponId": { + "type": "string", + "description": "Coupon id", + "x-example": "<COUPON_ID>", + "x-nullable": true + }, + "taxId": { + "type": "string", + "description": "Tax Id associated to billing.", + "x-example": "<TAX_ID>", + "x-nullable": true + }, + "budget": { + "type": "integer", + "description": "Budget limit for additional usage set for the organization", + "x-example": 0, + "format": "int32", + "x-nullable": true + } + }, + "required": [ + "billingPlan" + ] + } + } + } + } } }, - "\/organizations\/{organizationId}\/addons\/{addonId}": { - "get": { - "summary": "Get addon", - "operationId": "organizationsGetAddon", + "\/organizations\/{organizationId}\/plan\/cancel": { + "patch": { + "summary": "Cancel organization plan change", + "operationId": "organizationsCancelDowngrade", "tags": [ "organizations" ], - "description": "Get the details of a billing addon for an organization.\n", + "description": "Cancel the downgrade initiated for an organization.", "responses": { "200": { - "description": "Addon", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addon" + "$ref": "#\/components\/schemas\/organization" } } } @@ -47466,21 +51065,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAddon", + "method": "cancelDowngrade", "group": null, "cookies": false, "type": "", - "demo": "organizations\/get-addon.md", + "demo": "organizations\/cancel-downgrade.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "billing.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-addon.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/cancel-downgrade.md", "auth": { "Project": [] } @@ -47493,45 +51092,44 @@ "parameters": [ { "name": "organizationId", - "description": "Organization ID", + "description": "Organization Unique ID", "required": true, "schema": { "type": "string", "x-example": "<ORGANIZATION_ID>" }, "in": "path" - }, - { - "name": "addonId", - "description": "Addon ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ADDON_ID>" - }, - "in": "path" } ] - }, - "delete": { - "summary": "Delete addon", - "operationId": "organizationsDeleteAddon", + } + }, + "\/organizations\/{organizationId}\/plan\/estimations": { + "post": { + "summary": "Create billing plan estimation (upgrade or downgrade)", + "operationId": "organizationsCreatePlanEstimation", "tags": [ "organizations" ], - "description": "Delete a billing addon for an organization.\n", + "description": "Create a billing plan estimation for upgrading or downgrading an organization plan.\n", "responses": { - "204": { - "description": "No content" + "200": { + "description": "EstimationPlanChange", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/estimationPlanChange" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteAddon", + "method": "createPlanEstimation", "group": null, "cookies": false, "type": "", - "demo": "organizations\/delete-addon.md", + "demo": "organizations\/create-plan-estimation.md", "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -47541,10 +51139,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/delete-addon.md", - "produces": [ - "application\/json" - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-plan-estimation.md", "auth": { "Project": [] } @@ -47564,35 +51159,59 @@ "x-example": "<ORGANIZATION_ID>" }, "in": "path" - }, - { - "name": "addonId", - "description": "Addon ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ADDON_ID>" - }, - "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "billingPlan": { + "type": "string", + "description": "Target billing plan", + "x-example": "tier-0" + }, + "invites": { + "type": "array", + "description": "Additional member invites", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + }, + "couponId": { + "type": "string", + "description": "Coupon id", + "x-example": "<COUPON_ID>", + "x-nullable": true + } + }, + "required": [ + "billingPlan" + ] + } + } + } + } } }, - "\/organizations\/{organizationId}\/addons\/{addonId}\/confirmations": { - "post": { - "summary": "Confirm addon payment after 3DS authentication", - "operationId": "organizationsConfirmAddonPayment", + "\/organizations\/{organizationId}\/regions": { + "get": { + "summary": "List Regions", + "operationId": "organizationsListRegions", "tags": [ "organizations" ], - "description": "Confirm payment for a billing addon for an organization.\n", + "description": "Get all available regions for an organization.", "responses": { "200": { - "description": "Addon", + "description": "Regions list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addon" + "$ref": "#\/components\/schemas\/consoleRegionList" } } } @@ -47600,21 +51219,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "confirmAddonPayment", + "method": "listRegions", "group": null, "cookies": false, "type": "", - "demo": "organizations\/confirm-addon-payment.md", - "rate-limit": 10, + "demo": "organizations\/list-regions.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "projects.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/confirm-addon-payment.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-regions.md", "auth": { "Project": [] } @@ -47627,42 +51246,32 @@ "parameters": [ { "name": "organizationId", - "description": "Organization ID", + "description": "Team ID.", "required": true, "schema": { "type": "string", "x-example": "<ORGANIZATION_ID>" }, "in": "path" - }, - { - "name": "addonId", - "description": "Addon ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ADDON_ID>" - }, - "in": "path" } ] } }, - "\/organizations\/{organizationId}\/addons\/{addon}\/price": { + "\/organizations\/{organizationId}\/roles": { "get": { - "summary": "Get addon price", - "operationId": "organizationsGetAddonPrice", + "summary": "Get Scopes", + "operationId": "organizationsGetScopes", "tags": [ "organizations" ], - "description": "Get the price details for a billing addon for an organization.\n", + "description": "Get Scopes", "responses": { "200": { - "description": "AddonPrice", + "description": "Roles", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addonPrice" + "$ref": "#\/components\/schemas\/roles" } } } @@ -47670,21 +51279,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAddonPrice", + "method": "getScopes", "group": null, "cookies": false, "type": "", - "demo": "organizations\/get-addon-price.md", + "demo": "organizations\/get-scopes.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "teams.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-addon-price.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-scopes.md", "auth": { "Project": [] } @@ -47697,7 +51306,7 @@ "parameters": [ { "name": "organizationId", - "description": "Organization ID", + "description": "Organization id", "required": true, "schema": { "type": "string", @@ -47706,42 +51315,34 @@ "in": "path" }, { - "name": "addon", - "description": "Addon key identifier (e.g. baa).", - "required": true, + "name": "projectId", + "description": "Project id", + "required": false, "schema": { "type": "string", - "x-example": "baa", - "enum": [ - "baa", - "backup_recovery" - ], - "x-enum-name": "Addon", - "x-enum-keys": [ - "baa", - "backup_recovery" - ] + "x-example": "<PROJECT_ID>", + "default": "" }, - "in": "path" + "in": "query" } ] } }, - "\/organizations\/{organizationId}\/aggregations": { - "get": { - "summary": "List aggregations", - "operationId": "organizationsListAggregations", + "\/organizations\/{organizationId}\/taxId": { + "patch": { + "summary": "Set team's tax Id", + "operationId": "organizationsSetBillingTaxId", "tags": [ "organizations" ], - "description": "Get a list of all aggregations for an organization.", + "description": "Set an organization's billing tax ID.", "responses": { "200": { - "description": "Aggregation team list", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/aggregationTeamList" + "$ref": "#\/components\/schemas\/organization" } } } @@ -47749,21 +51350,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listAggregations", + "method": "setBillingTaxId", "group": null, "cookies": false, "type": "", - "demo": "organizations\/list-aggregations.md", + "demo": "organizations\/set-billing-tax-id.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.read", + "scope": "billing.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-aggregations.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-billing-tax-id.md", "auth": { "Project": [] } @@ -47783,38 +51384,45 @@ "x-example": "<ORGANIZATION_ID>" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: teamId, aggregationId, from, to", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "taxId": { + "type": "string", + "description": "Tax Id associated to billing.", + "x-example": "<TAX_ID>", + "x-nullable": true + } + }, + "required": [ + "taxId" + ] + } + } + } + } } }, - "\/organizations\/{organizationId}\/aggregations\/{aggregationId}": { + "\/organizations\/{organizationId}\/usage": { "get": { - "summary": "Get aggregation", - "operationId": "organizationsGetAggregation", + "summary": "Get team's usage data", + "operationId": "organizationsGetUsage", "tags": [ "organizations" ], - "description": "Get a specific aggregation using it's aggregation ID.", + "description": "Get the usage data for an organization.", "responses": { "200": { - "description": "Team", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/aggregationTeam" + "$ref": "#\/components\/schemas\/usageOrganization" } } } @@ -47822,11 +51430,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAggregation", + "method": "getUsage", "group": null, "cookies": false, "type": "", - "demo": "organizations\/get-aggregation.md", + "demo": "organizations\/get-usage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -47836,7 +51444,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-aggregation.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-usage.md", "auth": { "Project": [] } @@ -47858,49 +51466,38 @@ "in": "path" }, { - "name": "aggregationId", - "description": "Invoice unique ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<AGGREGATION_ID>" - }, - "in": "path" - }, - { - "name": "limit", - "description": "Maximum number of project aggregations to return in response. By default will return maximum 5 results. Maximum of 10 results allowed per request.", + "name": "startDate", + "description": "Starting date for the usage", "required": false, "schema": { - "type": "integer", - "format": "int32", - "x-example": 0, - "default": 5 + "type": "string", + "format": "datetime", + "x-example": "2020-10-15T06:38:00.000+00:00" }, "in": "query" }, { - "name": "offset", - "description": "Offset value. The default value is 0. Use this param to manage pagination.", + "name": "endDate", + "description": "End date for the usage", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 0 + "type": "string", + "format": "datetime", + "x-example": "2020-10-15T06:38:00.000+00:00" }, "in": "query" } ] } }, - "\/organizations\/{organizationId}\/billing-address": { + "\/organizations\/{organizationId}\/validate": { "patch": { - "summary": "Set team's billing address", - "operationId": "organizationsSetBillingAddress", + "summary": "Validate payment for the organization after creation or upgrade", + "operationId": "organizationsValidatePayment", "tags": [ "organizations" ], - "description": "Set a billing address for an organization.", + "description": "Validate payment for team after creation or upgrade.", "responses": { "200": { "description": "Organization", @@ -47915,21 +51512,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "setBillingAddress", + "method": "validatePayment", "group": null, "cookies": false, "type": "", - "demo": "organizations\/set-billing-address.md", + "demo": "organizations\/validate-payment.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "teams.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-billing-address.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/validate-payment.md", "auth": { "Project": [] } @@ -47957,90 +51554,89 @@ "schema": { "type": "object", "properties": { - "billingAddressId": { - "type": "string", - "description": "Unique ID of billing address", - "x-example": "<BILLING_ADDRESS_ID>" + "invites": { + "type": "array", + "description": "Additional member invites", + "default": [], + "x-example": null, + "items": { + "type": "string" + } } - }, - "required": [ - "billingAddressId" - ] + } } } } } - }, - "delete": { - "summary": "Delete team's billing address", - "operationId": "organizationsDeleteBillingAddress", + } + }, + "\/ping": { + "get": { + "summary": "Test the connection between the Appwrite and the SDK.", + "operationId": "pingGet", "tags": [ - "organizations" + "ping" ], - "description": "Delete a team's billing address.", + "description": "Send a ping to project as part of onboarding.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Any", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/any" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteBillingAddress", + "method": "get", "group": null, "cookies": false, "type": "", - "demo": "organizations\/delete-billing-address.md", + "demo": "ping\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "global", "platforms": [ - "console" + "console", + "server", + "client" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/delete-billing-address.md", - "produces": [ - "application\/json" - ], "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "organizationId", - "description": "Organization ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "in": "path" + "Project": [], + "Key": [], + "JWT": [], + "Session": [] } ] } }, - "\/organizations\/{organizationId}\/billing-addresses\/{billingAddressId}": { + "\/postgresql": { "get": { - "summary": "Get billing address", - "operationId": "organizationsGetBillingAddress", + "summary": "List dedicated databases.", + "operationId": "postgresqlList", "tags": [ - "organizations" + "postgresql" ], - "description": "Get a billing address using it's ID.", + "description": "List all dedicated databases. Results support pagination.", "responses": { "200": { - "description": "Address", + "description": "Dedicated databases list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/billingAddress" + "$ref": "#\/components\/schemas\/dedicatedDatabaseList" } } } @@ -48048,21 +51644,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getBillingAddress", - "group": null, + "method": "list", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-billing-address.md", + "demo": "postgresql\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-billing-address.md", "auth": { "Project": [] } @@ -48074,43 +51669,34 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "in": "path" - }, - { - "name": "billingAddressId", - "description": "Unique ID of billing address", - "required": true, + "name": "queries", + "description": "Array of query strings.", + "required": false, "schema": { - "type": "string", - "x-example": "<BILLING_ADDRESS_ID>" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" + "in": "query" } ] - } - }, - "\/organizations\/{organizationId}\/billing-email": { - "patch": { - "summary": "Set team's billing email", - "operationId": "organizationsSetBillingEmail", + }, + "post": { + "summary": "Create a dedicated database.", + "operationId": "postgresqlCreate", "tags": [ - "organizations" + "postgresql" ], - "description": "Set the current billing email for the organization.", + "description": "Create a new dedicated database with the chosen engine and configuration. Status will be 'provisioning' until the database is ready.", "responses": { - "200": { - "description": "Organization", + "201": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -48118,21 +51704,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "setBillingEmail", - "group": null, + "method": "create", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/set-billing-email.md", + "demo": "postgresql\/create.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-billing-email.md", "auth": { "Project": [] } @@ -48142,33 +51727,206 @@ "Project": [] } ], - "parameters": [ - { - "name": "organizationId", - "description": "Organization ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "in": "path" - } - ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "billingEmail": { + "databaseId": { "type": "string", - "description": "Billing email for the organization.", - "x-example": "email@example.com", - "format": "email" + "description": "Database 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.", + "x-example": "<DATABASE_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Database display name. Max length: 128 chars.", + "x-example": "<NAME>" + }, + "database": { + "type": "string", + "description": "Physical database\/catalog name. Defaults to databaseId.", + "default": "", + "x-example": "<DATABASE>" + }, + "engine": { + "type": "string", + "description": "Database engine. Allowed values: postgresql.", + "default": "postgresql", + "x-example": "postgresql" + }, + "version": { + "type": "string", + "description": "Database engine version. Defaults to latest for selected engine.", + "x-example": "17", + "x-nullable": true + }, + "specification": { + "type": "string", + "description": "Specification identifier.", + "default": "s-1vcpu-1gb", + "x-example": "<SPECIFICATION>" + }, + "backend": { + "type": "string", + "description": "Database backend provider: prisma, or edge.", + "default": "edge", + "x-example": "prisma" + }, + "cpu": { + "type": "integer", + "description": "CPU in millicores (125-16000).", + "default": 1000, + "x-example": 125, + "format": "int32" + }, + "memory": { + "type": "integer", + "description": "Memory in MB to allocate (128-65536).", + "default": 1024, + "x-example": 128, + "format": "int32" + }, + "storage": { + "type": "integer", + "description": "Storage in GB to allocate (1-16384).", + "default": 10, + "x-example": 1, + "format": "int32" + }, + "storageClass": { + "type": "string", + "description": "Storage class. Allowed values: ssd. DigitalOcean exposes a single block-storage class, so only 'ssd' is offered today.", + "default": "ssd", + "x-example": "ssd" + }, + "storageMaxGb": { + "type": "integer", + "description": "Maximum storage limit in GB. 0 uses system default.", + "default": 0, + "x-example": 0, + "format": "int32" + }, + "replicas": { + "type": "integer", + "description": "Number of high availability replicas (0-5). High availability is enabled when greater than 0.", + "default": 0, + "x-example": 0, + "format": "int32" + }, + "highAvailabilitySyncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true + }, + "networkMaxConnections": { + "type": "integer", + "description": "Maximum concurrent connections.", + "default": 100, + "x-example": 10, + "format": "int32" + }, + "networkIdleTimeoutSeconds": { + "type": "integer", + "description": "Connection idle timeout in seconds.", + "default": 900, + "x-example": 60, + "format": "int32" + }, + "networkIPAllowlist": { + "type": "array", + "description": "IP addresses\/CIDR ranges allowed to connect.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "idleTimeoutMinutes": { + "type": "integer", + "description": "Minutes of inactivity before container scales to zero.", + "default": 15, + "x-example": 5, + "format": "int32" + }, + "backupEnabled": { + "type": "boolean", + "description": "Enable automatic backups.", + "default": true, + "x-example": false + }, + "backupPitr": { + "type": "boolean", + "description": "Enable point-in-time recovery.", + "default": true, + "x-example": false + }, + "backupCron": { + "type": "string", + "description": "Backup schedule in cron format.", + "default": "0 3 * * *", + "x-example": null + }, + "backupRetentionDays": { + "type": "integer", + "description": "Number of days to retain backups.", + "default": 14, + "x-example": 1, + "format": "int32" + }, + "pitrRetentionDays": { + "type": "integer", + "description": "Number of days to retain PITR data.", + "default": 7, + "x-example": 1, + "format": "int32" + }, + "storageAutoscaling": { + "type": "boolean", + "description": "Enable automatic storage expansion when usage exceeds threshold.", + "default": false, + "x-example": false + }, + "storageAutoscalingThresholdPercent": { + "type": "integer", + "description": "Storage usage percentage (50-95) that triggers automatic expansion.", + "default": 85, + "x-example": 50, + "format": "int32" + }, + "storageAutoscalingMaxGb": { + "type": "integer", + "description": "Maximum storage size in GB for autoscaling. 0 means no limit.", + "default": 0, + "x-example": 0, + "format": "int32" + }, + "metricsEnabled": { + "type": "boolean", + "description": "Enable metrics collection. Enabled by default; pass false to opt out.", + "default": true, + "x-example": false + }, + "poolerEnabled": { + "type": "boolean", + "description": "Enable connection pooler on provision.", + "default": true, + "x-example": false + }, + "api": { + "type": "string", + "description": "Product API that owns this database: compute (raw, direct-access), tablesdb, documentsdb, or vectorsdb. tablesdb\/documentsdb\/vectorsdb computes are reached only through their product APIs.", + "default": "compute", + "x-example": "compute" } }, "required": [ - "billingEmail" + "databaseId", + "name" ] } } @@ -48176,21 +51934,21 @@ } } }, - "\/organizations\/{organizationId}\/budget": { - "patch": { - "summary": "Update organization budget", - "operationId": "organizationsUpdateBudget", + "\/postgresql\/specifications": { + "get": { + "summary": "List dedicated database specifications.", + "operationId": "postgresqlListSpecifications", "tags": [ - "organizations" + "postgresql" ], - "description": "Update the budget limit for an organization.", + "description": "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.", "responses": { "200": { - "description": "Organization", + "description": "SpecificationList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabaseSpecificationList" } } } @@ -48198,21 +51956,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateBudget", - "group": null, + "method": "listSpecifications", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/update-budget.md", + "demo": "postgresql\/list-specifications.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/update-budget.md", "auth": { "Project": [] } @@ -48221,68 +51978,24 @@ { "Project": [] } - ], - "parameters": [ - { - "name": "organizationId", - "description": "Organization Unique ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "budget": { - "type": "integer", - "description": "Budget limit for additional usage set for the organization", - "x-example": 0, - "format": "int32", - "x-nullable": true - }, - "alerts": { - "type": "array", - "description": "Budget alert limit percentage", - "default": [ - 75 - ], - "x-example": null, - "items": { - "type": "integer" - } - } - }, - "required": [ - "budget" - ] - } - } - } - } + ] } }, - "\/organizations\/{organizationId}\/credits": { + "\/postgresql\/{databaseId}": { "get": { - "summary": "List credits", - "operationId": "organizationsListCredits", + "summary": "Get dedicated database.", + "operationId": "postgresqlGet", "tags": [ - "organizations" + "postgresql" ], - "description": "List all credits for an organization.\n", + "description": "Get a dedicated database by its unique ID. Returns the database configuration and current status.", "responses": { "200": { - "description": "CreditList", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/creditList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -48290,21 +52003,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCredits", - "group": null, + "method": "get", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/list-credits.md", + "demo": "postgresql\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-credits.md", "auth": { "Project": [] } @@ -48316,44 +52028,31 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: teamId, couponId, credits, expiration, status", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" } ] }, - "post": { - "summary": "Add credits from coupon", - "operationId": "organizationsAddCredit", + "patch": { + "summary": "Update dedicated database.", + "operationId": "postgresqlUpdate", "tags": [ - "organizations" + "postgresql" ], - "description": "Add credit to an organization using a coupon.", + "description": "Update a dedicated database configuration. All changes are applied with zero downtime. Resource changes (cpu, memory) are handled via rolling cutover. Storage expansion is done online. All other settings are applied in-place.", "responses": { - "201": { - "description": "Credit", + "200": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/credit" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -48361,21 +52060,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "addCredit", - "group": null, + "method": "update", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/add-credit.md", - "rate-limit": 10, + "demo": "postgresql\/update.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/add-credit.md", "auth": { "Project": [] } @@ -48387,12 +52085,12 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -48403,58 +52101,245 @@ "schema": { "type": "object", "properties": { - "couponId": { + "name": { "type": "string", - "description": "ID of the coupon", - "x-example": "<COUPON_ID>" + "description": "Database display name.", + "x-example": "<NAME>", + "x-nullable": true + }, + "status": { + "type": "string", + "description": "Database status. Allowed values: ready, paused, inactive. Set to \"paused\" to pause, \"ready\" to resume (also recovers a failed database whose infrastructure is healthy), or \"inactive\" to spin down a shared-pool database.", + "x-example": "ready", + "x-nullable": true + }, + "specification": { + "type": "string", + "description": "Specification. Changes cpu, memory, and node pool based on specification config.", + "x-example": "<SPECIFICATION>", + "x-nullable": true + }, + "cpu": { + "type": "number", + "description": "CPU cores to allocate (125-16000).", + "x-example": 125, + "format": "float", + "x-nullable": true + }, + "memory": { + "type": "integer", + "description": "Memory in MB to allocate (128-65536).", + "x-example": 128, + "format": "int32", + "x-nullable": true + }, + "storage": { + "type": "integer", + "description": "Storage in GB to allocate (1-16384).", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "storageClass": { + "type": "string", + "description": "Storage class. Allowed values: ssd.", + "x-example": "ssd", + "x-nullable": true + }, + "replicas": { + "type": "integer", + "description": "Number of high availability replicas (0-5). High availability is enabled when greater than 0.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "highAvailabilitySyncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true + }, + "networkMaxConnections": { + "type": "integer", + "description": "Maximum concurrent connections.", + "x-example": 10, + "format": "int32", + "x-nullable": true + }, + "networkIdleTimeoutSeconds": { + "type": "integer", + "description": "Connection idle timeout in seconds (60-86400).", + "x-example": 60, + "format": "int32", + "x-nullable": true + }, + "networkIPAllowlist": { + "type": "array", + "description": "IP addresses\/CIDR ranges allowed to connect.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "idleTimeoutMinutes": { + "type": "integer", + "description": "Minutes before container scales to zero.", + "x-example": 5, + "format": "int32", + "x-nullable": true + }, + "backupEnabled": { + "type": "boolean", + "description": "Enable automatic backups.", + "x-example": false, + "x-nullable": true + }, + "backupPitr": { + "type": "boolean", + "description": "Enable point-in-time recovery.", + "x-example": false, + "x-nullable": true + }, + "backupCron": { + "type": "string", + "description": "Backup schedule in cron format.", + "x-example": null, + "x-nullable": true + }, + "backupRetentionDays": { + "type": "integer", + "description": "Days to retain backups.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "pitrRetentionDays": { + "type": "integer", + "description": "Days to retain PITR data.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "storageAutoscaling": { + "type": "boolean", + "description": "Enable automatic storage expansion when usage exceeds threshold.", + "x-example": false, + "x-nullable": true + }, + "storageAutoscalingThresholdPercent": { + "type": "integer", + "description": "Storage usage percentage (50-95) that triggers automatic expansion.", + "x-example": 50, + "format": "int32", + "x-nullable": true + }, + "storageAutoscalingMaxGb": { + "type": "integer", + "description": "Maximum storage size in GB for autoscaling. 0 means no limit.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "poolerEnabled": { + "type": "boolean", + "description": "Attach or detach the connection pooler sidecar. Set to true to add the sidecar (no-op if already attached) or false to remove it.", + "x-example": false, + "x-nullable": true + }, + "metricsEnabled": { + "type": "boolean", + "description": "Enable or disable the metrics-agent sidecar.", + "x-example": false, + "x-nullable": true + }, + "metricsTraceSampleRate": { + "type": "number", + "description": "Fraction of queries to trace (0.0\u20131.0). Forwarded to the sidecar.", + "x-example": null, + "format": "float", + "x-nullable": true + }, + "metricsSlowQueryLogThresholdMs": { + "type": "integer", + "description": "Threshold in ms above which queries are logged as slow. Forwarded to the sidecar.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "sqlApiEnabled": { + "type": "boolean", + "description": "Enable the SQL API sidecar for this database.", + "x-example": false, + "x-nullable": true + }, + "sqlApiAllowedStatements": { + "type": "array", + "description": "Statement types the SQL API accepts. Allowed values: SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, TRUNCATE, GRANT, REVOKE.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true + }, + "sqlApiMaxRows": { + "type": "integer", + "description": "Maximum rows returned per SQL API execution (1-1000000).", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "sqlApiMaxBytes": { + "type": "integer", + "description": "Maximum serialised SQL API result payload in bytes (1024-104857600).", + "x-example": 1024, + "format": "int32", + "x-nullable": true + }, + "sqlApiTimeoutSeconds": { + "type": "integer", + "description": "Per-call SQL API execution timeout in seconds (1-300).", + "x-example": 1, + "format": "int32", + "x-nullable": true } - }, - "required": [ - "couponId" - ] + } } } } } - } - }, - "\/organizations\/{organizationId}\/credits\/available": { - "get": { - "summary": "Get available credits", - "operationId": "organizationsGetAvailableCredits", + }, + "delete": { + "summary": "Delete dedicated database.", + "operationId": "postgresqlDelete", "tags": [ - "organizations" + "postgresql" ], - "description": "Get total available valid credits for an organization.", + "description": "Delete a dedicated database. This action is irreversible. The database status will be set to 'deleting' and all resources will be cleaned up. Deletion is allowed from any state, and repeating the call re-dispatches the cleanup.", "responses": { - "200": { - "description": "CreditAvailable", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/creditAvailable" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "getAvailableCredits", - "group": null, + "method": "delete", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-available-credits.md", + "demo": "postgresql\/delete.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-available-credits.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } @@ -48466,33 +52351,33 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] } }, - "\/organizations\/{organizationId}\/credits\/{creditId}": { + "\/postgresql\/{databaseId}\/backups": { "get": { - "summary": "Get credit details", - "operationId": "organizationsGetCredit", + "summary": "List database backups.", + "operationId": "postgresqlListBackups", "tags": [ - "organizations" + "postgresql" ], - "description": "Get credit details.", + "description": "List all backups for a dedicated database. Results can be filtered by status and type.", "responses": { "200": { - "description": "Credit", + "description": "BackupList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/credit" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupList" } } } @@ -48500,21 +52385,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getCredit", - "group": null, + "method": "listBackups", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-credit.md", + "demo": "postgresql\/list-backups.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-credit.md", "auth": { "Project": [] } @@ -48526,43 +52410,120 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" }, { - "name": "creditId", - "description": "Credit Unique ID", + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, type, databaseId", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + } + ] + }, + "post": { + "summary": "Create a database backup.", + "operationId": "postgresqlCreateBackup", + "tags": [ + "postgresql" + ], + "description": "Create a manual backup of a dedicated database. The backup will be created asynchronously and its status can be checked via the get backup endpoint.", + "responses": { + "202": { + "description": "Backup", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createBackup", + "group": "databases", + "cookies": false, + "type": "", + "demo": "postgresql\/create-backup.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<CREDIT_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" + } + } + } + } + } + } } }, - "\/organizations\/{organizationId}\/estimations\/delete-organization": { - "patch": { - "summary": "Estimate delete team", - "operationId": "organizationsEstimationDeleteOrganization", + "\/postgresql\/{databaseId}\/backups\/policies": { + "get": { + "summary": "List database backup policies.", + "operationId": "postgresqlListBackupPolicies", "tags": [ - "organizations" + "postgresql" ], - "description": "Get estimation for deleting an organization.", + "description": "List scheduled backup policies for a dedicated database.", "responses": { "200": { - "description": "DeleteOrganization", + "description": "Backup policy list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/estimationDeleteOrganization" + "$ref": "#\/components\/schemas\/backupPolicyList" } } } @@ -48570,21 +52531,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "estimationDeleteOrganization", - "group": null, + "method": "listBackupPolicies", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/estimation-delete-organization.md", - "rate-limit": 10, + "demo": "postgresql\/list-backup-policies.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "organizations.write", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/estimation-delete-organization.md", "auth": { "Project": [] } @@ -48596,33 +52556,44 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Team ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" + "in": "query" } ] - } - }, - "\/organizations\/{organizationId}\/estimations\/update-plan": { - "patch": { - "summary": "Estimate for update plan", - "operationId": "organizationsEstimationUpdatePlan", + }, + "post": { + "summary": "Create a database backup policy.", + "operationId": "postgresqlCreateBackupPolicy", "tags": [ - "organizations" + "postgresql" ], - "description": "Get estimation for updating the organization plan.", + "description": "Create a scheduled backup policy for a dedicated database.", "responses": { - "200": { - "description": "UpdatePlan", + "201": { + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/estimationUpdatePlan" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -48630,21 +52601,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "estimationUpdatePlan", - "group": null, + "method": "createBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/estimation-update-plan.md", - "rate-limit": 10, + "demo": "postgresql\/create-backup-policy.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/estimation-update-plan.md", "auth": { "Project": [] } @@ -48656,12 +52626,12 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -48672,29 +52642,48 @@ "schema": { "type": "object", "properties": { - "billingPlan": { + "policyId": { "type": "string", - "description": "Organization billing plan chosen", - "x-example": "tier-0" - }, - "invites": { - "type": "array", - "description": "Additional member invites", - "default": [], - "x-example": null, - "items": { - "type": "string" + "description": "Policy 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.", + "x-example": "<POLICY_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" } }, - "couponId": { + "name": { "type": "string", - "description": "Coupon id", - "x-example": "<COUPON_ID>", - "x-nullable": true + "description": "Policy name. Max length: 128 chars.", + "x-example": "<NAME>" + }, + "schedule": { + "type": "string", + "description": "Schedule CRON syntax.", + "x-example": null + }, + "retention": { + "type": "integer", + "description": "Days to keep backups before deletion.", + "x-example": 1, + "format": "int32" + }, + "type": { + "type": "string", + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" + }, + "enabled": { + "type": "boolean", + "description": "Is policy enabled? When disabled, no backups will be taken.", + "default": true, + "x-example": false } }, "required": [ - "billingPlan" + "policyId", + "name", + "schedule", + "retention" ] } } @@ -48702,21 +52691,21 @@ } } }, - "\/organizations\/{organizationId}\/feedbacks\/downgrade": { - "post": { - "summary": "Create downgrade feedback", - "operationId": "organizationsCreateDowngradeFeedback", + "\/postgresql\/{databaseId}\/backups\/storage": { + "put": { + "summary": "Update database backup storage.", + "operationId": "postgresqlUpdateBackupStorage", "tags": [ - "organizations" + "postgresql" ], - "description": "Submit feedback about downgrading from a paid plan to a lower tier. This helps the team understand user experience and improve the platform.\n", + "description": "Configure off-cluster backup storage for a dedicated database. Supports S3, GCS, and Azure Blob Storage destinations. Backups will be stored to the configured destination in addition to on-cluster storage.", "responses": { - "201": { - "description": "Downgrade Feedback", + "200": { + "description": "BackupStorageConfig", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/downgradeFeedback" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupStorage" } } } @@ -48724,21 +52713,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDowngradeFeedback", - "group": null, + "method": "updateBackupStorage", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/create-downgrade-feedback.md", + "demo": "postgresql\/update-backup-storage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-downgrade-feedback.md", "auth": { "Project": [] } @@ -48750,12 +52738,12 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization Unique ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -48766,32 +52754,50 @@ "schema": { "type": "object", "properties": { - "reason": { + "provider": { "type": "string", - "description": "Feedback reason", - "x-example": "<REASON>" + "description": "Storage provider for off-cluster backups. Allowed values: s3 (Amazon S3 or S3-compatible), gcs (Google Cloud Storage), azure (Azure Blob Storage).", + "x-example": "s3" }, - "message": { + "bucket": { "type": "string", - "description": "Feedback message", - "x-example": "<MESSAGE>" + "description": "Storage bucket or container name.", + "x-example": "<BUCKET>" }, - "fromPlanId": { + "region": { "type": "string", - "description": "Plan downgrading from", - "x-example": "<FROM_PLAN_ID>" + "description": "Storage region.", + "default": "", + "x-example": "<REGION>" }, - "toPlanId": { + "prefix": { "type": "string", - "description": "Plan downgrading to", - "x-example": "<TO_PLAN_ID>" + "description": "Object key prefix for backups.", + "default": "backups\/", + "x-example": "<PREFIX>" + }, + "endpoint": { + "type": "string", + "description": "Custom endpoint for S3-compatible storage (e.g. MinIO).", + "default": "", + "x-example": "<ENDPOINT>" + }, + "accessKey": { + "type": "string", + "description": "Access key or client ID for authentication.", + "x-example": "<ACCESS_KEY>" + }, + "secretKey": { + "type": "string", + "description": "Secret key or service account JSON for authentication.", + "x-example": "<SECRET_KEY>" } }, "required": [ - "reason", - "message", - "fromPlanId", - "toPlanId" + "provider", + "bucket", + "accessKey", + "secretKey" ] } } @@ -48799,21 +52805,21 @@ } } }, - "\/organizations\/{organizationId}\/invoices": { + "\/postgresql\/{databaseId}\/backups\/{backupId}": { "get": { - "summary": "List invoices", - "operationId": "organizationsListInvoices", + "summary": "Get a database backup.", + "operationId": "postgresqlGetBackup", "tags": [ - "organizations" + "postgresql" ], - "description": "List all invoices for an organization.", + "description": "Get details of a specific database backup including its status, size, and timestamps.", "responses": { "200": { - "description": "Billing invoices list", + "description": "Backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/invoiceList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -48821,21 +52827,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "listInvoices", - "group": null, + "method": "getBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/list-invoices.md", + "demo": "postgresql\/get-backup.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-invoices.md", "auth": { "Project": [] } @@ -48847,68 +52852,58 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" }, { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: teamId, aggregationId, type, amount, currency, from, to, dueAt, attempts, status, grossAmount", - "required": false, + "name": "backupId", + "description": "Backup ID.", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "<BACKUP_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/organizations\/{organizationId}\/invoices\/{invoiceId}": { - "get": { - "summary": "Get invoice", - "operationId": "organizationsGetInvoice", + }, + "delete": { + "summary": "Delete a database backup.", + "operationId": "postgresqlDeleteBackup", "tags": [ - "organizations" + "postgresql" ], - "description": "Get an invoice by its unique ID.", + "description": "Delete a database backup. This will permanently remove the backup from storage and cannot be undone.", "responses": { - "200": { - "description": "Invoice", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/invoice" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "getInvoice", - "group": null, + "method": "deleteBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-invoice.md", + "demo": "postgresql\/delete-backup.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-invoice.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } @@ -48920,43 +52915,43 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" }, { - "name": "invoiceId", - "description": "Invoice unique ID", + "name": "backupId", + "description": "Backup ID.", "required": true, "schema": { "type": "string", - "x-example": "<INVOICE_ID>" + "x-example": "<BACKUP_ID>" }, "in": "path" } ] } }, - "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/download": { + "\/postgresql\/{databaseId}\/branches": { "get": { - "summary": "Download invoice in PDF", - "operationId": "organizationsGetInvoiceDownload", + "summary": "List database branches.", + "operationId": "postgresqlListBranches", "tags": [ - "organizations" + "postgresql" ], - "description": "Download invoice in PDF", + "description": "List all ephemeral branches for a dedicated database. Returns branch metadata including ID, name, namespace, and expiration time.", "responses": { "200": { - "description": "paymentMethod", + "description": "BranchList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/paymentMethod" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBranchList" } } } @@ -48964,71 +52959,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "getInvoiceDownload", - "group": null, + "method": "listBranches", + "group": "databases", "cookies": false, - "type": "location", - "demo": "organizations\/get-invoice-download.md", + "type": "", + "demo": "postgresql\/list-branches.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-invoice-download.md", "auth": { - "Project": [], - "ImpersonateUserId": [] + "Project": [] } }, "security": [ { - "Project": [], - "ImpersonateUserId": [] + "Project": [] } ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "in": "path" - }, - { - "name": "invoiceId", - "description": "Invoice unique ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<INVOICE_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] - } - }, - "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/payments": { + }, "post": { - "summary": "Initiate payment for failed invoice to pay live from console", - "operationId": "organizationsCreateInvoicePayment", + "summary": "Create a database branch.", + "operationId": "postgresqlCreateBranch", "tags": [ - "organizations" + "postgresql" ], - "description": "Initiate payment for failed invoice to pay live from console", + "description": "Create an ephemeral database branch from the primary via PVC snapshot. The branch is a full copy of the database at the current point in time, useful for testing schema migrations or running experiments without affecting production data. Branches expire after the configured TTL (default 24 hours). The branch is created asynchronously.", "responses": { - "200": { - "description": "Invoice", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/invoice" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -49036,21 +53016,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "createInvoicePayment", - "group": null, + "method": "createBranch", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/create-invoice-payment.md", - "rate-limit": 10, - "rate-time": 86400, + "demo": "postgresql\/create-branch.md", + "rate-limit": 0, + "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-invoice-payment.md", "auth": { "Project": [] } @@ -49062,22 +53041,12 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "in": "path" - }, - { - "name": "invoiceId", - "description": "Invoice unique ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<INVOICE_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -49088,36 +53057,44 @@ "schema": { "type": "object", "properties": { - "paymentMethodId": { + "branchId": { "type": "string", - "description": "Payment method ID", - "x-example": "<PAYMENT_METHOD_ID>" + "description": "Branch 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.", + "default": "", + "x-example": "<BRANCH_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "ttl": { + "type": "integer", + "description": "Time-to-live in seconds before the branch expires. Min 300 (5 min), max 604800 (7 days). Default: 86400 (24h).", + "default": 86400, + "x-example": 300, + "format": "int32" } - }, - "required": [ - "paymentMethodId" - ] + } } } } } } }, - "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/status": { - "patch": { - "summary": "Validate the payment for an invoice and update status", - "operationId": "organizationsValidateInvoice", + "\/postgresql\/{databaseId}\/branches\/{branchId}": { + "delete": { + "summary": "Delete a database branch.", + "operationId": "postgresqlDeleteBranch", "tags": [ - "organizations" + "postgresql" ], - "description": "Validates the payment linked with the invoice and updates the invoice status if the payment status is changed.", + "description": "Delete an ephemeral database branch. This removes the branch namespace, its PVC, and the associated VolumeSnapshot. The deletion runs asynchronously and is irreversible.", "responses": { - "200": { - "description": "Invoice", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/invoice" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -49125,21 +53102,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "validateInvoice", - "group": null, + "method": "deleteBranch", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/validate-invoice.md", + "demo": "postgresql\/delete-branch.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/update-invoice-status.md", "auth": { "Project": [] } @@ -49151,43 +53127,43 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" }, { - "name": "invoiceId", - "description": "Invoice unique ID", + "name": "branchId", + "description": "Branch ID.", "required": true, "schema": { "type": "string", - "x-example": "<INVOICE_ID>" + "x-example": "<BRANCH_ID>" }, "in": "path" } ] } }, - "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/view": { + "\/postgresql\/{databaseId}\/credentials": { "get": { - "summary": "View invoice in PDF", - "operationId": "organizationsGetInvoiceView", + "summary": "Get database credentials.", + "operationId": "postgresqlGetCredentials", "tags": [ - "organizations" + "postgresql" ], - "description": "View invoice in PDF", + "description": "Get connection credentials for a dedicated database. Returns the hostname, port, username, password, database name, and full connection string.", "responses": { "200": { - "description": "paymentMethod", + "description": "Credentials", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/paymentMethod" + "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" } } } @@ -49195,71 +53171,115 @@ }, "deprecated": false, "x-appwrite": { - "method": "getInvoiceView", - "group": null, + "method": "getCredentials", + "group": "databases", "cookies": false, - "type": "location", - "demo": "organizations\/get-invoice-view.md", + "type": "", + "demo": "postgresql\/get-credentials.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-invoice-view.md", "auth": { - "Project": [], - "ImpersonateUserId": [] + "Project": [] } }, "security": [ { - "Project": [], - "ImpersonateUserId": [] + "Project": [] } ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" - }, + } + ] + }, + "patch": { + "summary": "Update database credentials.", + "operationId": "postgresqlUpdateCredentials", + "tags": [ + "postgresql" + ], + "description": "Rotate the primary credentials for a dedicated database. Generates a new password and updates the database. Previous credentials will stop working immediately.", + "responses": { + "200": { + "description": "Credentials", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateCredentials", + "group": "databases", + "cookies": false, + "type": "", + "demo": "postgresql\/update-credentials.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ { - "name": "invoiceId", - "description": "Invoice unique ID", + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<INVOICE_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] } }, - "\/organizations\/{organizationId}\/payment-method": { - "patch": { - "summary": "Set team's payment method", - "operationId": "organizationsSetDefaultPaymentMethod", + "\/postgresql\/{databaseId}\/executions": { + "post": { + "summary": "Execute a SQL statement against a dedicated database.", + "operationId": "postgresqlCreateExecution", "tags": [ - "organizations" + "postgresql" ], - "description": "Set a organization's default payment method.", + "description": "Execute SQL through the console-facing Cloud endpoint. Cloud proxies through the edge platform to the per-database SQL API sidecar. Application traffic should bypass cloud entirely and POST directly to the per-database hostname: `https:\/\/db-{project}-{db}.{region}.appwrite.center\/v1\/sql\/executions` with an `X-Appwrite-Key` header \u2014 that path scales to the whole DB fleet without a per-query cloud round-trip. The statement type must be on the database's configured allow-list. Use bound parameters for any user-supplied values \u2014 the API does not interpolate raw strings.", "responses": { "200": { - "description": "Organization", + "description": "Execution", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabaseExecution" } } } @@ -49267,21 +53287,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "setDefaultPaymentMethod", - "group": null, + "method": "createExecution", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/set-default-payment-method.md", + "demo": "postgresql\/create-execution.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-default-payment-method.md", "auth": { "Project": [] } @@ -49293,12 +53312,12 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -49309,34 +53328,50 @@ "schema": { "type": "object", "properties": { - "paymentMethodId": { - "type": "string", - "description": "Unique ID of payment method", - "x-example": "<PAYMENT_METHOD_ID>" + "sql": { + "type": "string", + "description": "SQL statement to execute. Exactly one statement per request.", + "x-example": "<SQL>" + }, + "bindings": { + "type": "object", + "description": "Optional bound parameters. Pass either a positional list or a name => value map matching the placeholder style used in the SQL.", + "default": {}, + "x-example": "{}", + "x-nullable": true + }, + "timeoutSeconds": { + "type": "integer", + "description": "Per-call execution timeout override. Must be less than or equal to the database's configured sqlApiTimeoutSeconds.", + "x-example": 1, + "format": "int32", + "x-nullable": true } }, "required": [ - "paymentMethodId" + "sql" ] } } } } - }, - "delete": { - "summary": "Delete team's default payment method", - "operationId": "organizationsDeleteDefaultPaymentMethod", + } + }, + "\/postgresql\/{databaseId}\/extensions": { + "get": { + "summary": "List database extensions.", + "operationId": "postgresqlListExtensions", "tags": [ - "organizations" + "postgresql" ], - "description": "Delete the default payment method for an organization.", + "description": "List installed and available extensions for a PostgreSQL database.", "responses": { "200": { - "description": "Organization", + "description": "Extensions", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabaseExtensions" } } } @@ -49344,21 +53379,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteDefaultPaymentMethod", - "group": null, + "method": "listExtensions", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/delete-default-payment-method.md", + "demo": "postgresql\/list-extensions.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/delete-default-payment-method.md", "auth": { "Project": [] } @@ -49370,33 +53404,31 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] - } - }, - "\/organizations\/{organizationId}\/payment-method\/backup": { - "patch": { - "summary": "Set team's backup payment method", - "operationId": "organizationsSetBackupPaymentMethod", + }, + "post": { + "summary": "Install a database extension.", + "operationId": "postgresqlCreateExtension", "tags": [ - "organizations" + "postgresql" ], - "description": "Set an organization's backup payment method.\n", + "description": "Install a database extension. Only available for PostgreSQL databases. The install runs asynchronously; poll the extensions list endpoint for status.", "responses": { - "200": { - "description": "Organization", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -49404,21 +53436,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "setBackupPaymentMethod", - "group": null, + "method": "createExtension", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/set-backup-payment-method.md", + "demo": "postgresql\/create-extension.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-backup-payment-method.md", "auth": { "Project": [] } @@ -49430,12 +53461,12 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -49446,34 +53477,36 @@ "schema": { "type": "object", "properties": { - "paymentMethodId": { + "name": { "type": "string", - "description": "Unique ID of payment method", - "x-example": "<PAYMENT_METHOD_ID>" + "description": "Extension name (e.g., pgvector, postgis, uuid-ossp).", + "x-example": "<NAME>" } }, "required": [ - "paymentMethodId" + "name" ] } } } } - }, + } + }, + "\/postgresql\/{databaseId}\/extensions\/{extensionName}": { "delete": { - "summary": "Delete team's backup payment method", - "operationId": "organizationsDeleteBackupPaymentMethod", + "summary": "Uninstall a database extension.", + "operationId": "postgresqlDeleteExtension", "tags": [ - "organizations" + "postgresql" ], - "description": "Delete a backup payment method for an organization.", + "description": "Uninstall a database extension from a PostgreSQL database. The uninstall runs asynchronously; poll the extensions list endpoint for status.", "responses": { - "200": { - "description": "Organization", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -49481,21 +53514,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteBackupPaymentMethod", - "group": null, + "method": "deleteExtension", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/delete-backup-payment-method.md", + "demo": "postgresql\/delete-extension.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/delete-backup-payment-method.md", "auth": { "Project": [] } @@ -49507,33 +53539,43 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "extensionName", + "description": "Extension name to uninstall.", + "required": true, + "schema": { + "type": "string", + "x-example": "<EXTENSION_NAME>" }, "in": "path" } ] } }, - "\/organizations\/{organizationId}\/payment-methods\/{paymentMethodId}": { - "get": { - "summary": "Get payment method", - "operationId": "organizationsGetPaymentMethod", + "\/postgresql\/{databaseId}\/failovers": { + "post": { + "summary": "Trigger manual failover.", + "operationId": "postgresqlCreateFailover", "tags": [ - "organizations" + "postgresql" ], - "description": "Get an organization's payment method using it's payment method ID.", + "description": "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.", "responses": { - "200": { - "description": "paymentMethod", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/paymentMethod" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -49541,21 +53583,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPaymentMethod", - "group": null, + "method": "createFailover", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-payment-method.md", + "demo": "postgresql\/create-failover.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.read", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-payment-method.md", "auth": { "Project": [] } @@ -49567,43 +53608,50 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "in": "path" - }, - { - "name": "paymentMethodId", - "description": "Unique ID of payment method", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<PAYMENT_METHOD_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "targetReplicaId": { + "type": "string", + "description": "Target replica ID to promote. If not specified, the healthiest replica is selected.", + "x-example": "<TARGET_REPLICA_ID>", + "x-nullable": true + } + } + } + } + } + } } }, - "\/organizations\/{organizationId}\/plan": { - "get": { - "summary": "Get organization billing plan details", - "operationId": "organizationsGetPlan", + "\/postgresql\/{databaseId}\/maintenance": { + "patch": { + "summary": "Update database maintenance window.", + "operationId": "postgresqlUpdateMaintenanceWindow", "tags": [ - "organizations" + "postgresql" ], - "description": "Get the details of the current billing plan for an organization.", + "description": "Update the maintenance window for a dedicated database. Maintenance operations like minor version upgrades will be performed during this window.", "responses": { "200": { - "description": "billingPlan", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/billingPlan" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -49611,21 +53659,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPlan", - "group": null, + "method": "updateMaintenanceWindow", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-plan.md", + "demo": "postgresql\/update-maintenance-window.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.read", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-plan.md", "auth": { "Project": [] } @@ -49637,31 +53684,59 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization Unique ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } - ] - }, - "patch": { - "summary": "Update organization billing plan", - "operationId": "organizationsUpdatePlan", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "day": { + "type": "string", + "description": "Day of the week for the maintenance window. Allowed values: sun, mon, tue, wed, thu, fri, sat.", + "x-example": "sun" + }, + "hourUtc": { + "type": "integer", + "description": "Hour in UTC (0-23) for maintenance window start.", + "x-example": 0, + "format": "int32" + } + }, + "required": [ + "day", + "hourUtc" + ] + } + } + } + } + } + }, + "\/postgresql\/{databaseId}\/migrations": { + "post": { + "summary": "Migrate database between shared and dedicated.", + "operationId": "postgresqlCreateMigration", "tags": [ - "organizations" + "postgresql" ], - "description": "Update the billing plan for an organization.", + "description": "Migrate a database between shared and dedicated types. Shared to dedicated provisions an always-on dedicated instance; dedicated to shared converts to a serverless instance that scales to zero when idle. Data is copied to the target with a brief read-only window during cutover.", "responses": { "200": { - "description": "Organization", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -49669,21 +53744,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "updatePlan", - "group": null, + "method": "createMigration", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/update-plan.md", - "rate-limit": 10, + "demo": "postgresql\/create-migration.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/update-plan.md", "auth": { "Project": [] } @@ -49695,12 +53769,12 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization Unique ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -49711,54 +53785,20 @@ "schema": { "type": "object", "properties": { - "billingPlan": { - "type": "string", - "description": "Organization billing plan chosen", - "x-example": "tier-0" - }, - "paymentMethodId": { - "type": "string", - "description": "Payment method ID. Required for pro plans when trial is not available and user doesn't have default payment method set.", - "x-example": "<PAYMENT_METHOD_ID>", - "x-nullable": true - }, - "billingAddressId": { - "type": "string", - "description": "Unique ID of billing address", - "default": "", - "x-example": "<BILLING_ADDRESS_ID>" - }, - "invites": { - "type": "array", - "description": "Additional member invites", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - }, - "couponId": { + "targetType": { "type": "string", - "description": "Coupon id", - "x-example": "<COUPON_ID>", - "x-nullable": true + "description": "Target database type to migrate to. Allowed values: shared (serverless, scales to zero when idle), dedicated (always-on with persistent resources).", + "x-example": "shared" }, - "taxId": { + "specification": { "type": "string", - "description": "Tax Id associated to billing.", - "x-example": "<TAX_ID>", - "x-nullable": true - }, - "budget": { - "type": "integer", - "description": "Budget limit for additional usage set for the organization", - "x-example": 0, - "format": "int32", + "description": "Target compute specification to provision when migrating to dedicated. Ignored for shared. Defaults to the database's current specification.", + "x-example": "<SPECIFICATION>", "x-nullable": true } }, "required": [ - "billingPlan" + "targetType" ] } } @@ -49766,21 +53806,21 @@ } } }, - "\/organizations\/{organizationId}\/plan\/cancel": { - "patch": { - "summary": "Cancel organization plan change", - "operationId": "organizationsCancelDowngrade", + "\/postgresql\/{databaseId}\/pitr": { + "get": { + "summary": "Get PITR recovery windows.", + "operationId": "postgresqlGetPitrWindows", "tags": [ - "organizations" + "postgresql" ], - "description": "Cancel the downgrade initiated for an organization.", + "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", "responses": { "200": { - "description": "Organization", + "description": "PITRWindows", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" } } } @@ -49788,21 +53828,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "cancelDowngrade", - "group": null, + "method": "getPitrWindows", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/cancel-downgrade.md", + "demo": "postgresql\/get-pitr-windows.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/cancel-downgrade.md", "auth": { "Project": [] } @@ -49814,33 +53853,33 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization Unique ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] } }, - "\/organizations\/{organizationId}\/plan\/estimations": { - "post": { - "summary": "Create billing plan estimation (upgrade or downgrade)", - "operationId": "organizationsCreatePlanEstimation", + "\/postgresql\/{databaseId}\/pooler": { + "get": { + "summary": "Get connection pooler configuration.", + "operationId": "postgresqlGetPooler", "tags": [ - "organizations" + "postgresql" ], - "description": "Create a billing plan estimation for upgrading or downgrading an organization plan.\n", + "description": "Get the connection pooler configuration for a dedicated database. Returns pooler mode, max connections, and pool size settings.", "responses": { "200": { - "description": "EstimationPlanChange", + "description": "PoolerConfig", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/estimationPlanChange" + "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" } } } @@ -49848,21 +53887,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPlanEstimation", - "group": null, + "method": "getPooler", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/create-plan-estimation.md", - "rate-limit": 10, + "demo": "postgresql\/get-pooler.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-plan-estimation.md", "auth": { "Project": [] } @@ -49874,12 +53912,69 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" + }, + "in": "path" + } + ] + }, + "patch": { + "summary": "Update connection pooler configuration.", + "operationId": "postgresqlUpdatePooler", + "tags": [ + "postgresql" + ], + "description": "Update the connection pooler configuration for a dedicated database. Configure pool mode, max connections, and pool sizes.", + "responses": { + "200": { + "description": "PoolerConfig", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updatePooler", + "group": "databases", + "cookies": false, + "type": "", + "demo": "postgresql\/update-pooler.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -49890,51 +53985,78 @@ "schema": { "type": "object", "properties": { - "billingPlan": { + "mode": { "type": "string", - "description": "Target billing plan", - "x-example": "tier-0" + "description": "Connection pool mode. Allowed values: transaction, session. Transaction mode returns connections to the pool after each transaction; session mode holds connections for the entire session lifetime.", + "x-example": "transaction", + "x-nullable": true }, - "invites": { - "type": "array", - "description": "Additional member invites", - "default": [], - "x-example": null, - "items": { - "type": "string" - } + "maxConnections": { + "type": "integer", + "description": "Maximum pooled connections.", + "x-example": 10, + "format": "int32", + "x-nullable": true }, - "couponId": { + "defaultPoolSize": { + "type": "integer", + "description": "Default pool size per user.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "readWriteSplitting": { + "type": "boolean", + "description": "Route SELECTs to HA replicas, writes and locked reads to the primary. Defaults to true when HA is enabled.", + "x-example": false, + "x-nullable": true + }, + "poolerCpuRequest": { "type": "string", - "description": "Coupon id", - "x-example": "<COUPON_ID>", + "description": "Pooler sidecar CPU request override (Kubernetes quantity, e.g. \"250m\" or \"1\"). Leave null for the proportional default (5% of DB CPU, floor 100m).", + "x-example": "<POOLER_CPU_REQUEST>", + "x-nullable": true + }, + "poolerCpuLimit": { + "type": "string", + "description": "Pooler sidecar CPU limit override (Kubernetes quantity, e.g. \"500m\" or \"1\"). Leave null for the proportional default (10% of DB CPU, floor 200m). Changing this field rolls the database pod.", + "x-example": "<POOLER_CPU_LIMIT>", + "x-nullable": true + }, + "poolerMemoryRequest": { + "type": "string", + "description": "Pooler sidecar memory request override (Kubernetes quantity, e.g. \"128Mi\" or \"1Gi\"). Leave null for the proportional default (7.5% of DB memory, floor 64Mi).", + "x-example": "<POOLER_MEMORY_REQUEST>", + "x-nullable": true + }, + "poolerMemoryLimit": { + "type": "string", + "description": "Pooler sidecar memory limit override (Kubernetes quantity, e.g. \"256Mi\" or \"1Gi\"). Leave null for the proportional default (15% of DB memory, floor 128Mi). Changing this field rolls the database pod.", + "x-example": "<POOLER_MEMORY_LIMIT>", "x-nullable": true } - }, - "required": [ - "billingPlan" - ] + } } } } } } }, - "\/organizations\/{organizationId}\/regions": { + "\/postgresql\/{databaseId}\/replicas": { "get": { - "summary": "List Regions", - "operationId": "organizationsListRegions", + "summary": "Get replica status.", + "operationId": "postgresqlGetReplicas", "tags": [ - "organizations" + "postgresql" ], - "description": "Get all available regions for an organization.", + "description": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", "responses": { "200": { - "description": "Regions list", + "description": "HAStatus", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/consoleRegionList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseHAStatus" } } } @@ -49942,21 +54064,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "listRegions", - "group": null, + "method": "getReplicas", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/list-regions.md", + "demo": "postgresql\/get-replicas.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-regions.md", "auth": { "Project": [] } @@ -49968,33 +54089,33 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Team ID.", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] } }, - "\/organizations\/{organizationId}\/roles": { + "\/postgresql\/{databaseId}\/restorations": { "get": { - "summary": "Get Scopes", - "operationId": "organizationsGetScopes", + "summary": "List database restorations.", + "operationId": "postgresqlListRestorations", "tags": [ - "organizations" + "postgresql" ], - "description": "Get Scopes", + "description": "List all restorations for a dedicated database. Results can be filtered by status and type.", "responses": { "200": { - "description": "Roles", + "description": "Dedicated database restorations list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/roles" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestorationList" } } } @@ -50002,21 +54123,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getScopes", - "group": null, + "method": "listRestorations", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-scopes.md", + "demo": "postgresql\/list-restorations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-scopes.md", "auth": { "Project": [] } @@ -50028,44 +54148,75 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization id", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" }, { - "name": "projectId", - "description": "Project id", + "name": "status", + "description": "Filter by restoration status.", "required": false, "schema": { "type": "string", - "x-example": "<PROJECT_ID>", - "default": "" + "x-example": "pending" + }, + "in": "query" + }, + { + "name": "type", + "description": "Filter by restoration type.", + "required": false, + "schema": { + "type": "string", + "x-example": "backup" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of restorations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of restorations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 }, "in": "query" } ] - } - }, - "\/organizations\/{organizationId}\/taxId": { - "patch": { - "summary": "Set team's tax Id", - "operationId": "organizationsSetBillingTaxId", + }, + "post": { + "summary": "Create a database restoration.", + "operationId": "postgresqlCreateRestoration", "tags": [ - "organizations" + "postgresql" ], - "description": "Set an organization's billing tax ID.", + "description": "Restore a database from a backup or to a specific point in time (PITR). For backup restoration, provide a backupId. For PITR, provide a targetTime. PITR requires the database to have PITR enabled and is only available for enterprise databases.", "responses": { - "200": { - "description": "Organization", + "202": { + "description": "Restoration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" } } } @@ -50073,21 +54224,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "setBillingTaxId", - "group": null, + "method": "createRestoration", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/set-billing-tax-id.md", + "demo": "postgresql\/create-restoration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/set-billing-tax-id.md", "auth": { "Project": [] } @@ -50099,12 +54249,12 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } @@ -50115,37 +54265,47 @@ "schema": { "type": "object", "properties": { - "taxId": { + "type": { "type": "string", - "description": "Tax Id associated to billing.", - "x-example": "<TAX_ID>", + "description": "Restoration type. Allowed values: backup, pitr. Use \"backup\" to restore from a specific backup, or \"pitr\" for point-in-time recovery.", + "default": "backup", + "x-example": "backup" + }, + "backupId": { + "type": "string", + "description": "Backup ID to restore from (required for backup type).", + "x-example": "<BACKUP_ID>", + "x-nullable": true + }, + "targetTime": { + "type": "integer", + "description": "Target time for PITR as Unix timestamp (required for pitr type).", + "x-example": null, + "format": "int32", "x-nullable": true } - }, - "required": [ - "taxId" - ] + } } } } } } }, - "\/organizations\/{organizationId}\/usage": { + "\/postgresql\/{databaseId}\/restorations\/{restorationId}": { "get": { - "summary": "Get team's usage data", - "operationId": "organizationsGetUsage", + "summary": "Get a database restoration.", + "operationId": "postgresqlGetRestoration", "tags": [ - "organizations" + "postgresql" ], - "description": "Get the usage data for an organization.", + "description": "Get details of a specific database restoration including its status, type, and timestamps.", "responses": { "200": { - "description": "Organization", + "description": "Restoration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageOrganization" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" } } } @@ -50153,21 +54313,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getUsage", - "group": null, + "method": "getRestoration", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-usage.md", + "demo": "postgresql\/get-restoration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-usage.md", "auth": { "Project": [] } @@ -50179,55 +54338,43 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" }, { - "name": "startDate", - "description": "Starting date for the usage", - "required": false, - "schema": { - "type": "string", - "format": "datetime", - "x-example": "2020-10-15T06:38:00.000+00:00" - }, - "in": "query" - }, - { - "name": "endDate", - "description": "End date for the usage", - "required": false, + "name": "restorationId", + "description": "Restoration ID.", + "required": true, "schema": { "type": "string", - "format": "datetime", - "x-example": "2020-10-15T06:38:00.000+00:00" + "x-example": "<RESTORATION_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/organizations\/{organizationId}\/validate": { - "patch": { - "summary": "Validate payment for the organization after creation or upgrade", - "operationId": "organizationsValidatePayment", + "\/postgresql\/{databaseId}\/status": { + "get": { + "summary": "Get database status.", + "operationId": "postgresqlGetStatus", "tags": [ - "organizations" + "postgresql" ], - "description": "Validate payment for team after creation or upgrade.", + "description": "Get real-time health and status information for a dedicated database. Returns health status, readiness, uptime, connection info, replica status, and volume information.", "responses": { "200": { - "description": "Organization", + "description": "Status", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/databaseStatus" } } } @@ -50235,21 +54382,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "validatePayment", - "group": null, + "method": "getStatus", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/validate-payment.md", + "demo": "postgresql\/get-status.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.read", + "scope": "databases.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/validate-payment.md", "auth": { "Project": [] } @@ -50261,53 +54407,33 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<ORGANIZATION_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "invites": { - "type": "array", - "description": "Additional member invites", - "default": [], - "x-example": null, - "items": { - "type": "string" - } - } - } - } - } - } - } + ] } }, - "\/ping": { - "get": { - "summary": "Test the connection between the Appwrite and the SDK.", - "operationId": "pingGet", + "\/postgresql\/{databaseId}\/upgrades": { + "post": { + "summary": "Upgrade database version.", + "operationId": "postgresqlCreateUpgrade", "tags": [ - "ping" + "postgresql" ], - "description": "Send a ping to project as part of onboarding.", + "description": "Upgrade a dedicated database to a new engine version. Uses blue-green deployment for zero-downtime cutover.", "responses": { "200": { - "description": "Any", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/any" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -50315,19 +54441,17 @@ }, "deprecated": false, "x-appwrite": { - "method": "get", - "group": null, + "method": "createUpgrade", + "group": "databases", "cookies": false, "type": "", - "demo": "ping\/get.md", + "demo": "postgresql\/create-upgrade.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "global", + "scope": "databases.write", "platforms": [ - "console", - "server", - "client" + "console" ], "packaging": false, "public": true, @@ -50337,12 +54461,40 @@ }, "security": [ { - "Project": [], - "Key": [], - "JWT": [], - "Session": [] + "Project": [] } - ] + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "targetVersion": { + "type": "string", + "description": "Target engine version to upgrade to.", + "x-example": "<TARGET_VERSION>" + } + }, + "required": [ + "targetVersion" + ] + } + } + } + } } }, "\/presences": { @@ -51246,8 +55398,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -51346,8 +55502,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -51525,8 +55685,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -51625,8 +55789,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -51878,8 +56046,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -51978,8 +56150,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -52579,7 +56755,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.read", + "scope": [ + "oauth2.read", + "project.oauth2.read" + ], "platforms": [ "console", "server" @@ -52808,7 +56987,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -52886,7 +57068,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -52976,7 +57161,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53060,7 +57248,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53144,7 +57335,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53222,7 +57416,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53300,7 +57497,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53378,7 +57578,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53456,7 +57659,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53534,7 +57740,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53612,7 +57821,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53690,7 +57902,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53768,7 +57983,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53846,7 +58064,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -53924,7 +58145,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54002,7 +58226,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54086,7 +58313,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54164,7 +58394,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54249,7 +58482,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54347,7 +58583,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54437,7 +58676,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54515,7 +58757,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54593,7 +58838,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54677,7 +58925,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54755,7 +59006,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54861,7 +59115,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -54951,7 +59208,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55029,7 +59289,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55107,7 +59370,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55185,7 +59451,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55263,7 +59532,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55341,7 +59613,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55419,7 +59694,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55497,7 +59775,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55575,7 +59856,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55653,7 +59937,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55731,7 +60018,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55809,7 +60099,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55887,7 +60180,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -55965,7 +60261,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -56043,7 +60342,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -56121,7 +60423,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -56367,7 +60672,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.read", + "scope": [ + "oauth2.read", + "project.oauth2.read" + ], "platforms": [ "console", "server" @@ -61208,16 +65516,163 @@ "in": "path" }, { - "name": "scheduleId", - "description": "Schedule ID.", + "name": "scheduleId", + "description": "Schedule ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<SCHEDULE_ID>" + }, + "in": "path" + } + ] + } + }, + "\/projects\/{projectId}\/stages": { + "get": { + "summary": "List stages", + "operationId": "projectsListStages", + "tags": [ + "projects" + ], + "description": "Get the onboarding stages for the current project, including each stage\u2019s SDK method key and status (for example pending, completed, or skipped).\n", + "responses": { + "200": { + "description": "Stages List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/stageList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listStages", + "group": "stages", + "cookies": false, + "type": "", + "demo": "projects\/list-stages.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "stages.read", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/list-stages.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "projectId", + "description": "Project unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + } + ] + } + }, + "\/projects\/{projectId}\/stages\/{stageId}": { + "patch": { + "summary": "Update stage", + "operationId": "projectsUpdateStage", + "tags": [ + "projects" + ], + "description": "Update an onboarding stage for the current project. Use this endpoint to skip a stage or leave it unchanged without performing the related API action.\n", + "responses": { + "200": { + "description": "Stage", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/stage" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateStage", + "group": "stages", + "cookies": false, + "type": "", + "demo": "projects\/update-stage.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "stages.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/update-stage.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "projectId", + "description": "Project unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "stageId", + "description": "SDK method key (namespace.method).", "required": true, "schema": { "type": "string", - "x-example": "<SCHEDULE_ID>" + "x-example": "<STAGE_ID>" }, "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "skip": { + "type": "boolean", + "description": "Mark the stage as skipped.", + "default": true, + "x-example": false + } + } + } + } + } + } } }, "\/projects\/{projectId}\/status": { @@ -73517,92 +77972,6 @@ ] } }, - "\/tablesdb\/{databaseId}\/tables\/{tableId}\/logs": { - "get": { - "summary": "List table logs", - "operationId": "tablesDBListTableLogs", - "tags": [ - "tablesDB" - ], - "description": "Get the table activity logs list by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listTableLogs", - "group": "tables", - "cookies": false, - "type": "", - "demo": "tablesdb\/list-table-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": [ - "tables.read", - "collections.read" - ], - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/get-table-logs.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DATABASE_ID>" - }, - "in": "path" - }, - { - "name": "tableId", - "description": "Table ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<TABLE_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - } - ] - } - }, "\/tablesdb\/{databaseId}\/tables\/{tableId}\/rows": { "get": { "summary": "List rows", @@ -74714,102 +79083,6 @@ ] } }, - "\/tablesdb\/{databaseId}\/tables\/{tableId}\/rows\/{rowId}\/logs": { - "get": { - "summary": "List row logs", - "operationId": "tablesDBListRowLogs", - "tags": [ - "tablesDB" - ], - "description": "Get the row activity logs list by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listRowLogs", - "group": "logs", - "cookies": false, - "type": "", - "demo": "tablesdb\/list-row-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": [ - "rows.read", - "documents.read" - ], - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/get-row-logs.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DATABASE_ID>" - }, - "in": "path" - }, - { - "name": "tableId", - "description": "Table ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<TABLE_ID>" - }, - "in": "path" - }, - { - "name": "rowId", - "description": "Row ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<ROW_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - } - ] - } - }, "\/tablesdb\/{databaseId}\/tables\/{tableId}\/rows\/{rowId}\/{column}\/decrement": { "patch": { "summary": "Decrement row column", @@ -75655,90 +79928,6 @@ ] } }, - "\/teams\/{teamId}\/logs": { - "get": { - "summary": "List team logs", - "operationId": "teamsListLogs", - "tags": [ - "teams" - ], - "description": "Get the team activity logs list by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listLogs", - "group": "logs", - "cookies": false, - "type": "", - "demo": "teams\/list-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "teams.read", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "teamId", - "description": "Team ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<TEAM_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] - } - }, "\/teams\/{teamId}\/memberships": { "get": { "summary": "List team memberships", @@ -76817,7 +81006,7 @@ "tags": [ "usage" ], - "description": "Aggregate usage event metrics. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 one point per dimension combination, no time axis. Useful for \"top 10 paths by bandwidth in the last 7 days\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one point per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down by one or more attributes (service, path, status, country, \u2026). Pass multiple metrics to render stacked charts in one round-trip. `resource` and `resourceId` filter the underlying events. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N by aggregated value. When `startAt` is omitted, the default window adapts to `interval` (or 7d when interval is omitted).", + "description": "Aggregate usage event metrics. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 one point per dimension combination, no time axis. Useful for \"top 10 paths by bandwidth in the last 7 days\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one point per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down by one or more attributes (service, path, status, country, \u2026). `queries[]` filters the underlying events using the standard Utopia query syntax \u2014 `equal(\"path\", [\"\/v1\/storage\/files\"])`, `equal(\"resource\", [\"bucket\"])`, `equal(\"resourceId\", [\"abc123\"])`, `startsWith(\"path\", [\"\/v1\/storage\"])`, `equal(\"status\", [\"200\", \"201\"])`, `isNotNull(\"resourceId\")`. Supported attributes: see `queries[]` param. Supported methods: `equal`, `notEqual`, `contains`, `startsWith`, `endsWith`, `isNull`, `isNotNull`. Pass multiple metrics to render stacked charts in one round-trip. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N by aggregated value. When `startAt` is omitted, the default window adapts to `interval` (or 7d when interval is omitted).", "responses": { "200": { "description": "usageEventList", @@ -76871,24 +81060,15 @@ "in": "query" }, { - "name": "resource", - "description": "Resource type filter (singular form). Common values: function, site, database, bucket, file, webhook, team, user, project.", - "required": false, - "schema": { - "type": "string", - "x-example": "<RESOURCE>", - "default": "" - }, - "in": "query" - }, - { - "name": "resourceId", - "description": "Resource id filter.", + "name": "queries", + "description": "Up to 10 filter queries in Utopia syntax. Allowed attributes: path, method, status, service, resource, resourceId, teamId, country, region, hostname, osName, clientType, clientName, deviceName. Allowed methods: equal, notEqual, contains, startsWith, endsWith, isNull, isNotNull. Example: `queries[]=equal(\"resource\", [\"bucket\"])`.", "required": false, "schema": { - "type": "string", - "x-example": "<RESOURCE_ID>", - "default": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, @@ -76995,7 +81175,7 @@ "tags": [ "usage" ], - "description": "Aggregate usage gauge snapshots. Gauges are point-in-time values (storage totals, resource counts, \u2026); each point carries the latest snapshot in its interval via `argMax(value, time)`. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 `argMax(value, time)` per dimension combination over the whole window, no time axis. Useful for \"top 10 resources by current storage\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one snapshot per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down further. Supported on gauges: `resourceId`, `teamId`, `service`, `resource`. `service` and `resource` enable per-service \/ per-resource-type panels (e.g. storage-by-service: group `files.storage`, `deployments.storage`, `builds.storage`, `databases.storage` by `service`). Pass multiple metrics to render stacked charts in one round-trip. `resourceId` and `teamId` parameters filter the underlying rows. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N. When `startAt` is omitted, the default window adapts to interval (or 7d when interval is omitted).", + "description": "Aggregate usage gauge snapshots. Gauges are point-in-time values (storage totals, resource counts, \u2026); each point carries the latest snapshot in its interval via `argMax(value, time)`. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 `argMax(value, time)` per dimension combination over the whole window, no time axis. Useful for \"top 10 resources by current storage\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one snapshot per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down further. Supported on gauges: `resourceId`, `teamId`, `service`, `resource`. `service` and `resource` enable per-service \/ per-resource-type panels (e.g. storage-by-service: group `files.storage`, `deployments.storage`, `builds.storage`, `databases.storage` by `service`). `queries[]` filters the underlying rows using the standard Utopia query syntax \u2014 `equal(\"resource\", [\"bucket\"])`, `equal(\"resourceId\", [\"abc123\"])`, `equal(\"teamId\", [\"team_x\"])`, `isNotNull(\"teamId\")`. Supported attributes: see `queries[]` param. Supported methods: `equal`, `notEqual`, `isNull`, `isNotNull`. Pass multiple metrics to render stacked charts in one round-trip. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N. When `startAt` is omitted, the default window adapts to interval (or 7d when interval is omitted).", "responses": { "200": { "description": "usageGaugeList", @@ -77049,24 +81229,15 @@ "in": "query" }, { - "name": "resourceId", - "description": "Resource id filter.", - "required": false, - "schema": { - "type": "string", - "x-example": "<RESOURCE_ID>", - "default": "" - }, - "in": "query" - }, - { - "name": "teamId", - "description": "Team id filter.", + "name": "queries", + "description": "Up to 10 filter queries in Utopia syntax. Allowed attributes: service, resource, resourceId, teamId. Allowed methods: equal, notEqual, isNull, isNotNull. Example: `queries[]=equal(\"resource\", [\"bucket\"])`.", "required": false, "schema": { - "type": "string", - "x-example": "<TEAM_ID>", - "default": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, @@ -78740,92 +82911,6 @@ } } }, - "\/users\/{userId}\/logs": { - "get": { - "summary": "List user logs", - "operationId": "usersListLogs", - "tags": [ - "users" - ], - "description": "Get the user activity logs list by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listLogs", - "group": "logs", - "cookies": false, - "type": "", - "demo": "users\/list-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "users.read", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "userId", - "description": "User ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<USER_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] - } - }, "\/users\/{userId}\/memberships": { "get": { "summary": "List user memberships", @@ -85986,34 +90071,6 @@ "identities": "" } }, - "logList": { - "description": "Logs List", - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "Total number of logs that matched your query.", - "x-example": 5, - "format": "int32" - }, - "logs": { - "type": "array", - "description": "List of logs.", - "items": { - "$ref": "#\/components\/schemas\/log" - }, - "x-example": "" - } - }, - "required": [ - "total", - "logs" - ], - "example": { - "total": 5, - "logs": "" - } - }, "fileList": { "description": "Files List", "type": "object", @@ -87014,6 +91071,26 @@ "schedules": "" } }, + "stageList": { + "description": "Stages List", + "type": "object", + "properties": { + "stages": { + "type": "array", + "description": "List of stages.", + "items": { + "$ref": "#\/components\/schemas\/stage" + }, + "x-example": "" + } + }, + "required": [ + "stages" + ], + "example": { + "stages": "" + } + }, "localeCodeList": { "description": "Locale codes list", "type": "object", @@ -89675,6 +93752,131 @@ "encrypt": false } }, + "usageDocumentsDBs": { + "description": "UsageDocumentsDBs", + "type": "object", + "properties": { + "range": { + "type": "string", + "description": "Time range of the usage stats.", + "x-example": "30d" + }, + "databasesTotal": { + "type": "integer", + "description": "Total aggregated number of DocumentsDB databases.", + "x-example": 0, + "format": "int32" + }, + "collectionsTotal": { + "type": "integer", + "description": "Total aggregated number of collections.", + "x-example": 0, + "format": "int32" + }, + "documentsTotal": { + "type": "integer", + "description": "Total aggregated number of documents.", + "x-example": 0, + "format": "int32" + }, + "storageTotal": { + "type": "integer", + "description": "Total aggregated number of total databases storage in bytes.", + "x-example": 0, + "format": "int32" + }, + "databasesReadsTotal": { + "type": "integer", + "description": "Total number of databases reads.", + "x-example": 0, + "format": "int32" + }, + "databasesWritesTotal": { + "type": "integer", + "description": "Total number of databases writes.", + "x-example": 0, + "format": "int32" + }, + "databases": { + "type": "array", + "description": "Aggregated number of databases per period.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "collections": { + "type": "array", + "description": "Aggregated number of collections per period.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "documents": { + "type": "array", + "description": "Aggregated number of documents per period.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "storage": { + "type": "array", + "description": "An array of the aggregated number of databases storage in bytes per period.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "databasesReads": { + "type": "array", + "description": "An array of aggregated number of database reads.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "databasesWrites": { + "type": "array", + "description": "An array of aggregated number of database writes.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + } + }, + "required": [ + "range", + "databasesTotal", + "collectionsTotal", + "documentsTotal", + "storageTotal", + "databasesReadsTotal", + "databasesWritesTotal", + "databases", + "collections", + "documents", + "storage", + "databasesReads", + "databasesWrites" + ], + "example": { + "range": "30d", + "databasesTotal": 0, + "collectionsTotal": 0, + "documentsTotal": 0, + "storageTotal": 0, + "databasesReadsTotal": 0, + "databasesWritesTotal": 0, + "databases": [], + "collections": [], + "documents": [], + "storage": [], + "databasesReads": [], + "databasesWrites": [] + } + }, "usageDocumentsDB": { "description": "UsageDocumentsDB", "type": "object", @@ -92857,170 +97059,6 @@ } } }, - "log": { - "description": "Log", - "type": "object", - "properties": { - "event": { - "type": "string", - "description": "Event name.", - "x-example": "account.sessions.create" - }, - "userId": { - "type": "string", - "description": "User ID of the actor recorded for this log. During impersonation, this is the original impersonator, not the impersonated target user.", - "x-example": "610fc2f985ee0" - }, - "userEmail": { - "type": "string", - "description": "User email of the actor recorded for this log. During impersonation, this is the original impersonator.", - "x-example": "john@appwrite.io" - }, - "userName": { - "type": "string", - "description": "User name of the actor recorded for this log. During impersonation, this is the original impersonator.", - "x-example": "John Doe" - }, - "mode": { - "type": "string", - "description": "API mode when event triggered.", - "x-example": "admin" - }, - "userType": { - "type": "string", - "description": "User type who triggered the audit log. Possible values: user, admin, guest, keyProject, keyAccount, keyOrganization.", - "x-example": "user" - }, - "ip": { - "type": "string", - "description": "IP session in use when the session was created.", - "x-example": "127.0.0.1" - }, - "time": { - "type": "string", - "description": "Log creation date in ISO 8601 format.", - "x-example": "2020-10-15T06:38:00.000+00:00" - }, - "osCode": { - "type": "string", - "description": "Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).", - "x-example": "Mac" - }, - "osName": { - "type": "string", - "description": "Operating system name.", - "x-example": "Mac" - }, - "osVersion": { - "type": "string", - "description": "Operating system version.", - "x-example": "Mac" - }, - "clientType": { - "type": "string", - "description": "Client type.", - "x-example": "browser" - }, - "clientCode": { - "type": "string", - "description": "Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).", - "x-example": "CM" - }, - "clientName": { - "type": "string", - "description": "Client name.", - "x-example": "Chrome Mobile iOS" - }, - "clientVersion": { - "type": "string", - "description": "Client version.", - "x-example": "84.0" - }, - "clientEngine": { - "type": "string", - "description": "Client engine name.", - "x-example": "WebKit" - }, - "clientEngineVersion": { - "type": "string", - "description": "Client engine name.", - "x-example": "605.1.15" - }, - "deviceName": { - "type": "string", - "description": "Device name.", - "x-example": "smartphone" - }, - "deviceBrand": { - "type": "string", - "description": "Device brand name.", - "x-example": "Google" - }, - "deviceModel": { - "type": "string", - "description": "Device model name.", - "x-example": "Nexus 5" - }, - "countryCode": { - "type": "string", - "description": "Country two-character ISO 3166-1 alpha code.", - "x-example": "US" - }, - "countryName": { - "type": "string", - "description": "Country name.", - "x-example": "United States" - } - }, - "required": [ - "event", - "userId", - "userEmail", - "userName", - "mode", - "userType", - "ip", - "time", - "osCode", - "osName", - "osVersion", - "clientType", - "clientCode", - "clientName", - "clientVersion", - "clientEngine", - "clientEngineVersion", - "deviceName", - "deviceBrand", - "deviceModel", - "countryCode", - "countryName" - ], - "example": { - "event": "account.sessions.create", - "userId": "610fc2f985ee0", - "userEmail": "john@appwrite.io", - "userName": "John Doe", - "mode": "admin", - "userType": "user", - "ip": "127.0.0.1", - "time": "2020-10-15T06:38:00.000+00:00", - "osCode": "Mac", - "osName": "Mac", - "osVersion": "Mac", - "clientType": "browser", - "clientCode": "CM", - "clientName": "Chrome Mobile iOS", - "clientVersion": "84.0", - "clientEngine": "WebKit", - "clientEngineVersion": "605.1.15", - "deviceName": "smartphone", - "deviceBrand": "Google", - "deviceModel": "Nexus 5", - "countryCode": "US", - "countryName": "United States" - } - }, "user": { "description": "User", "type": "object", @@ -96598,6 +100636,12 @@ "description": "Project status", "x-example": "active" }, + "onboarding": { + "type": "object", + "additionalProperties": true, + "description": "Stage progress (completed or skipped) with timestamps and actor types, keyed by stage id.", + "x-example": [] + }, "authMethods": { "type": "array", "description": "List of auth methods.", @@ -96770,6 +100814,7 @@ "pingedAt", "labels", "status", + "onboarding", "authMethods", "services", "protocols", @@ -96800,6 +100845,7 @@ "vip" ], "status": "active", + "onboarding": [], "authMethods": {}, "services": {}, "protocols": {}, @@ -102408,20 +106454,6 @@ "x-example": 0, "format": "int32" }, - "imagineCredits": { - "type": "array", - "description": "An array of aggregated number of Imagine credits in the given period.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "imagineCreditsTotal": { - "type": "integer", - "description": "Total aggregated number of Imagine credits.", - "x-example": 0, - "format": "int32" - }, "realtimeConnectionsTotal": { "type": "integer", "description": "Current aggregated number of open Realtime connections.", @@ -102534,8 +106566,6 @@ "backupsStorageTotal", "screenshotsGenerated", "screenshotsGeneratedTotal", - "imagineCredits", - "imagineCreditsTotal", "realtimeConnectionsTotal", "realtimeMessagesTotal", "realtimeBandwidthTotal", @@ -102612,8 +106642,6 @@ "backupsStorageTotal": 0, "screenshotsGenerated": [], "screenshotsGeneratedTotal": 0, - "imagineCredits": [], - "imagineCreditsTotal": 0, "realtimeConnectionsTotal": 0, "realtimeMessagesTotal": 0, "realtimeBandwidthTotal": 0, @@ -102899,6 +106927,51 @@ "region": "fra" } }, + "stage": { + "description": "Stage", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Stage ID.", + "x-example": "tablesDB.create" + }, + "sdk": { + "type": "string", + "description": "SDK method key (namespace.name) for this stage.", + "x-example": "tablesDB.create" + }, + "status": { + "type": "string", + "description": "Stage status.", + "x-example": "completed" + }, + "at": { + "type": "string", + "description": "When the stage was completed or skipped, in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "actorType": { + "type": "string", + "description": "Actor type when the stage was recorded.", + "x-example": "user" + } + }, + "required": [ + "id", + "sdk", + "status", + "at", + "actorType" + ], + "example": { + "id": "tablesDB.create", + "sdk": "tablesDB.create", + "status": "completed", + "at": "2020-10-15T06:38:00.000+00:00", + "actorType": "user" + } + }, "emailTemplate": { "description": "EmailTemplate", "type": "object", @@ -104706,16 +108779,6 @@ "type": "string", "description": "Hostname.", "x-example": "appwrite.io" - }, - "countryCode": { - "type": "string", - "description": "Country two-character ISO 3166-1 alpha code.", - "x-example": "US" - }, - "countryName": { - "type": "string", - "description": "Country name.", - "x-example": "United States" } }, "required": [ @@ -104736,9 +108799,7 @@ "time", "projectId", "teamId", - "hostname", - "countryCode", - "countryName" + "hostname" ], "example": { "$id": "5e5ea5c16897e", @@ -104758,9 +108819,7 @@ "time": "2020-10-15T06:38:00.000+00:00", "projectId": "610fc2f985ee0", "teamId": "610fc2f985ee0", - "hostname": "appwrite.io", - "countryCode": "US", - "countryName": "United States" + "hostname": "appwrite.io" } }, "additionalResource": { @@ -106387,6 +110446,11 @@ "description": "Resource identifier that is blocked", "x-example": "5e5ea5c16897e" }, + "mode": { + "type": "string", + "description": "Block mode. full blocks reads and writes; readOnly blocks writes only.", + "x-example": "readOnly" + }, "reason": { "type": "string", "description": "Reason for the block. Can be null if no reason was provided.", @@ -106429,6 +110493,7 @@ "$createdAt", "resourceType", "resourceId", + "mode", "projectName", "region", "organizationName", @@ -106439,6 +110504,7 @@ "$createdAt": "2020-10-15T06:38:00.000+00:00", "resourceType": "project", "resourceId": "5e5ea5c16897e", + "mode": "readOnly", "reason": "Payment overdue", "expiredAt": "2020-10-15T06:38:00.000+00:00", "projectName": "My Project", @@ -106534,8 +110600,8 @@ }, "engine": { "type": "string", - "description": "Database engine. Possible values: postgres, mysql, mariadb, mongodb.", - "x-example": "postgres" + "description": "Database engine. Possible values: postgresql, mysql, mariadb, mongodb.", + "x-example": "postgresql" }, "connectionString": { "type": "string", @@ -106568,7 +110634,7 @@ "username": "appwrite", "password": "********", "ssl": false, - "engine": "postgres", + "engine": "postgresql", "connectionString": "postgresql:\/\/appwrite:****@db-myproject-mydb-a1b2c3d4.fra.appwrite.center:5432\/db-myproject-mydb-a1b2c3d4?sslmode=disable" } }, @@ -106689,51 +110755,6 @@ "footer": "" } }, - "dedicatedDatabaseConnection": { - "description": "Connection", - "type": "object", - "properties": { - "$id": { - "type": "string", - "description": "Connection ID.", - "x-example": "5e5ea5c16897e" - }, - "username": { - "type": "string", - "description": "Connection username.", - "x-example": "app_readonly" - }, - "database": { - "type": "string", - "description": "Database name.", - "x-example": "appwrite" - }, - "role": { - "type": "string", - "description": "Connection role. Common values: readonly, readwrite.", - "x-example": "readonly" - }, - "$createdAt": { - "type": "string", - "description": "Connection creation date in ISO 8601 format.", - "x-example": "2020-10-15T06:38:00.000+00:00" - } - }, - "required": [ - "$id", - "username", - "database", - "role", - "$createdAt" - ], - "example": { - "$id": "5e5ea5c16897e", - "username": "app_readonly", - "database": "appwrite", - "role": "readonly", - "$createdAt": "2020-10-15T06:38:00.000+00:00" - } - }, "coupon": { "description": "Coupon", "type": "object", @@ -106855,8 +110876,8 @@ }, "engine": { "type": "string", - "description": "Database engine. Possible values: postgres, mysql, mariadb, mongodb.", - "x-example": "postgres" + "description": "Database engine. Possible values: postgresql, mysql, mariadb, mongodb.", + "x-example": "postgresql" }, "ssl": { "type": "boolean", @@ -106893,7 +110914,7 @@ "tcpHost": "db-myproject-mydb.fra.appwrite.center", "tcpPort": 5432, "tcpDatabase": "appwrite", - "engine": "postgres", + "engine": "postgresql", "ssl": false, "connectionString": "postgresql:\/\/appwrite:****@db-myproject-mydb.fra.appwrite.center:5432\/appwrite?sslmode=disable" } @@ -107084,8 +111105,8 @@ }, "engine": { "type": "string", - "description": "Database engine: postgres, mysql, mariadb, or mongodb.", - "x-example": "postgres" + "description": "Database engine: postgresql, mysql, mariadb, or mongodb.", + "x-example": "postgresql" }, "version": { "type": "string", @@ -107145,9 +111166,14 @@ }, "idleUntil": { "type": "string", - "description": "Timestamp when container will be considered idle and scale to zero (ISO 8601 format).", + "description": "Display-only timestamp when the database is expected to be considered idle (ISO 8601 format). Derived from last activity; lifecycle transitions are driven by lifecycleState.", "x-example": "2020-10-15T06:38:00.000+00:00" }, + "lifecycleState": { + "type": "string", + "description": "Idle-lifecycle state of the database. Possible values: active, warm, cold, hibernated.", + "x-example": "active" + }, "idleTimeoutMinutes": { "type": "integer", "description": "Minutes of inactivity before container scales to zero.", @@ -107339,6 +111365,7 @@ "containerStatus", "lastAccessedAt", "idleUntil", + "lifecycleState", "idleTimeoutMinutes", "cpu", "memory", @@ -107376,7 +111403,7 @@ "projectId": "5e5ea5c16897e", "name": "My Production Database", "api": "compute", - "engine": "postgres", + "engine": "postgresql", "version": "16", "specification": "s-2vcpu-2gb", "backend": "edge", @@ -107389,6 +111416,7 @@ "containerStatus": "active", "lastAccessedAt": "2020-10-15T06:38:00.000+00:00", "idleUntil": "2020-10-15T06:38:00.000+00:00", + "lifecycleState": "active", "idleTimeoutMinutes": 15, "cpu": 2000, "memory": 4096, @@ -107619,8 +111647,8 @@ }, "engine": { "type": "string", - "description": "Database engine: postgres, mysql, mariadb, or mongodb.", - "x-example": "postgres" + "description": "Database engine: postgresql, mysql, mariadb, or mongodb.", + "x-example": "postgresql" }, "version": { "type": "string", @@ -107696,7 +111724,7 @@ "example": { "health": "healthy", "ready": true, - "engine": "postgres", + "engine": "postgresql", "version": "17", "uptime": 86400, "connections": { @@ -109902,6 +113930,44 @@ "poolerMemoryLimit": "128Mi" } }, + "postgresExtension": { + "description": "Postgres extension", + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Extension key used with CREATE EXTENSION.", + "x-example": "vector" + }, + "name": { + "type": "string", + "description": "Human-readable extension name.", + "x-example": "pgvector" + }, + "description": { + "type": "string", + "description": "Short description of what the extension provides.", + "x-example": "Vector data type and similarity search for embeddings." + }, + "category": { + "type": "string", + "description": "Category the extension belongs to.", + "x-example": "search" + } + }, + "required": [ + "key", + "name", + "description", + "category" + ], + "example": { + "key": "vector", + "name": "pgvector", + "description": "Vector data type and similarity search for embeddings.", + "category": "search" + } + }, "program": { "description": "Program", "type": "object", @@ -109975,33 +114041,6 @@ "billingPlanId": "" } }, - "dedicatedDatabaseQueryExplanation": { - "description": "QueryExplanation", - "type": "object", - "properties": { - "plan": { - "type": "array", - "description": "Structured query execution plan. Contents are engine-specific.", - "items": { - "$ref": "#\/components\/schemas\/any" - }, - "x-example": [] - }, - "raw": { - "type": "string", - "description": "Raw EXPLAIN output from the database engine.", - "x-example": "Seq Scan on users (cost=0.00..35.50 rows=2550 width=36)" - } - }, - "required": [ - "plan", - "raw" - ], - "example": { - "plan": [], - "raw": "Seq Scan on users (cost=0.00..35.50 rows=2550 width=36)" - } - }, "consoleRegion": { "description": "Region", "type": "object", @@ -110243,53 +114282,6 @@ "roles": "developer" } }, - "dedicatedDatabaseSlowQuery": { - "description": "SlowQuery", - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The SQL query text.", - "x-example": "SELECT * FROM users WHERE email = $1" - }, - "durationMs": { - "type": "number", - "description": "Query duration in milliseconds.", - "x-example": 523.4, - "format": "double" - }, - "calls": { - "type": "integer", - "description": "Number of times this query has been executed.", - "x-example": 42, - "format": "int32" - }, - "user": { - "type": "string", - "description": "Database user that executed the query.", - "x-example": "appwrite" - }, - "database": { - "type": "string", - "description": "Database name.", - "x-example": "appwrite" - } - }, - "required": [ - "query", - "durationMs", - "calls", - "user", - "database" - ], - "example": { - "query": "SELECT * FROM users WHERE email = $1", - "durationMs": 523.4, - "calls": 42, - "user": "appwrite", - "database": "appwrite" - } - }, "dedicatedDatabaseSpecification": { "description": "Specification", "type": "object", @@ -110989,344 +114981,320 @@ "x-example": 0, "format": "int32" }, - "imagineCredits": { - "type": "array", - "description": "Aggregated stats for imagine credits.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "imagineCreditsTotal": { - "type": "integer", - "description": "Aggregated stats for total imagine credits.", - "x-example": 0, - "format": "int32" - }, - "usersTotal": { - "type": "integer", - "description": "Aggregated stats for total users.", - "x-example": 0, - "format": "int32" - }, - "executionsTotal": { - "type": "integer", - "description": "Aggregated stats for total executions.", - "x-example": 0, - "format": "int32" - }, - "executionsMBSecondsTotal": { - "type": "integer", - "description": "Aggregated stats for function executions in mb seconds.", - "x-example": 0, - "format": "int32" - }, - "buildsMBSecondsTotal": { - "type": "integer", - "description": "Aggregated stats for function builds in mb seconds.", - "x-example": 0, - "format": "int32" - }, - "filesStorageTotal": { - "type": "integer", - "description": "Aggregated stats for total file storage.", - "x-example": 0, - "format": "int32" - }, - "buildsStorageTotal": { - "type": "integer", - "description": "Aggregated stats for total builds storage.", - "x-example": 0, - "format": "int32" - }, - "deploymentsStorageTotal": { - "type": "integer", - "description": "Aggregated stats for total deployments storage.", - "x-example": 0, - "format": "int32" - }, - "databasesStorageTotal": { - "type": "integer", - "description": "Aggregated stats for total databases storage.", - "x-example": 0, - "format": "int32" - }, - "databasesReadsTotal": { - "type": "integer", - "description": "Aggregated stats for total databases reads.", - "x-example": 0, - "format": "int32" - }, - "databasesWritesTotal": { - "type": "integer", - "description": "Aggregated stats for total databases writes.", - "x-example": 0, - "format": "int32" - }, - "backupsStorageTotal": { - "type": "integer", - "description": "Aggregated stats for total backups storage.", - "x-example": 0, - "format": "int32" - }, - "storageTotal": { - "type": "integer", - "description": "Aggregated stats for total storage.", - "x-example": 0, - "format": "int32" - }, - "authPhoneTotal": { - "type": "integer", - "description": "Aggregated stats for total auth phone.", - "x-example": 0, - "format": "int32" - }, - "authPhoneEstimate": { - "type": "integer", - "description": "Aggregated stats for total auth phone estimation.", - "x-example": 0, - "format": "int32" - }, - "projects": { - "type": "array", - "description": "Aggregated stats for each projects.", - "items": { - "$ref": "#\/components\/schemas\/usageOrganizationProject" - }, - "x-example": [] - }, - "realtimeConnections": { - "type": "array", - "description": "Aggregated stats for realtime connections.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "realtimeConnectionsTotal": { - "type": "integer", - "description": "Aggregated stats for total realtime connections.", - "x-example": 0, - "format": "int32" - }, - "realtimeMessages": { - "type": "array", - "description": "Aggregated stats for realtime messages.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "realtimeMessagesTotal": { - "type": "integer", - "description": "Aggregated stats for total realtime messages.", - "x-example": 0, - "format": "int32" - }, - "realtimeBandwidth": { - "type": "array", - "description": "Aggregated stats for realtime bandwidth.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "realtimeBandwidthTotal": { - "type": "integer", - "description": "Aggregated stats for total realtime bandwidth.", - "x-example": 0, - "format": "int32" - } - }, - "required": [ - "bandwidth", - "users", - "executions", - "databasesReads", - "databasesWrites", - "imageTransformations", - "imageTransformationsTotal", - "screenshotsGenerated", - "screenshotsGeneratedTotal", - "imagineCredits", - "imagineCreditsTotal", - "usersTotal", - "executionsTotal", - "executionsMBSecondsTotal", - "buildsMBSecondsTotal", - "filesStorageTotal", - "buildsStorageTotal", - "deploymentsStorageTotal", - "databasesStorageTotal", - "databasesReadsTotal", - "databasesWritesTotal", - "backupsStorageTotal", - "storageTotal", - "authPhoneTotal", - "authPhoneEstimate", - "projects", - "realtimeConnections", - "realtimeConnectionsTotal", - "realtimeMessages", - "realtimeMessagesTotal", - "realtimeBandwidth", - "realtimeBandwidthTotal" - ], - "example": { - "bandwidth": [], - "users": [], - "executions": [], - "databasesReads": [], - "databasesWrites": [], - "imageTransformations": [], - "imageTransformationsTotal": 0, - "screenshotsGenerated": [], - "screenshotsGeneratedTotal": 0, - "imagineCredits": [], - "imagineCreditsTotal": 0, - "usersTotal": 0, - "executionsTotal": 0, - "executionsMBSecondsTotal": 0, - "buildsMBSecondsTotal": 0, - "filesStorageTotal": 0, - "buildsStorageTotal": 0, - "deploymentsStorageTotal": 0, - "databasesStorageTotal": 0, - "databasesReadsTotal": 0, - "databasesWritesTotal": 0, - "backupsStorageTotal": 0, - "storageTotal": 0, - "authPhoneTotal": 0, - "authPhoneEstimate": 0, - "projects": [], - "realtimeConnections": [], - "realtimeConnectionsTotal": 0, - "realtimeMessages": [], - "realtimeMessagesTotal": 0, - "realtimeBandwidth": [], - "realtimeBandwidthTotal": 0 - } - }, - "usageOrganizationProject": { - "description": "OrganizationProject", - "type": "object", - "properties": { - "projectId": { - "type": "string", - "description": "projectId", - "x-example": "5e5ea5c16897e" - }, - "bandwidth": { - "type": "array", - "description": "Aggregated stats for number of requests.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "users": { - "type": "array", - "description": "Aggregated stats for consumed bandwidth.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "executions": { - "type": "integer", - "description": "Aggregated stats for function executions.", - "x-example": [], - "format": "int32" - }, - "databasesReads": { - "type": "array", - "description": "Aggregated stats for database reads.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "databasesWrites": { - "type": "array", - "description": "Aggregated stats for database writes.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "executionsMBSeconds": { - "type": "integer", - "description": "Aggregated stats for function executions in mb seconds.", - "x-example": 0, - "format": "int32" - }, - "buildsMBSeconds": { - "type": "integer", - "description": "Aggregated stats for function builds in mb seconds.", - "x-example": 0, - "format": "int32" - }, - "storage": { - "type": "integer", - "description": "Aggregated stats for number of documents.", - "x-example": [], - "format": "int32" - }, - "authPhoneTotal": { - "type": "integer", - "description": "Aggregated stats for phone authentication.", - "x-example": [], - "format": "int32" - }, - "authPhoneEstimate": { - "type": "number", - "description": "Aggregated stats for phone authentication estimated cost.", - "x-example": [], - "format": "double" - }, - "databasesReadsTotal": { - "type": "integer", - "description": "Aggregated stats for total databases reads.", - "x-example": 0, - "format": "int32" - }, - "databasesWritesTotal": { - "type": "integer", - "description": "Aggregated stats for total databases writes.", - "x-example": 0, - "format": "int32" - }, - "imageTransformations": { - "type": "array", - "description": "Aggregated stats for file transformations.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "imageTransformationsTotal": { - "type": "integer", - "description": "Aggregated stats for total file transformations.", - "x-example": 0, - "format": "int32" - }, - "screenshotsGenerated": { - "type": "array", - "description": "Aggregated stats for file transformations.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "screenshotsGeneratedTotal": { - "type": "integer", - "description": "Aggregated stats for total file transformations.", - "x-example": 0, - "format": "int32" - }, - "imagineCredits": { + "usersTotal": { + "type": "integer", + "description": "Aggregated stats for total users.", + "x-example": 0, + "format": "int32" + }, + "executionsTotal": { + "type": "integer", + "description": "Aggregated stats for total executions.", + "x-example": 0, + "format": "int32" + }, + "executionsMBSecondsTotal": { + "type": "integer", + "description": "Aggregated stats for function executions in mb seconds.", + "x-example": 0, + "format": "int32" + }, + "buildsMBSecondsTotal": { + "type": "integer", + "description": "Aggregated stats for function builds in mb seconds.", + "x-example": 0, + "format": "int32" + }, + "filesStorageTotal": { + "type": "integer", + "description": "Aggregated stats for total file storage.", + "x-example": 0, + "format": "int32" + }, + "buildsStorageTotal": { + "type": "integer", + "description": "Aggregated stats for total builds storage.", + "x-example": 0, + "format": "int32" + }, + "deploymentsStorageTotal": { + "type": "integer", + "description": "Aggregated stats for total deployments storage.", + "x-example": 0, + "format": "int32" + }, + "databasesStorageTotal": { + "type": "integer", + "description": "Aggregated stats for total databases storage.", + "x-example": 0, + "format": "int32" + }, + "databasesReadsTotal": { + "type": "integer", + "description": "Aggregated stats for total databases reads.", + "x-example": 0, + "format": "int32" + }, + "databasesWritesTotal": { + "type": "integer", + "description": "Aggregated stats for total databases writes.", + "x-example": 0, + "format": "int32" + }, + "backupsStorageTotal": { + "type": "integer", + "description": "Aggregated stats for total backups storage.", + "x-example": 0, + "format": "int32" + }, + "storageTotal": { + "type": "integer", + "description": "Aggregated stats for total storage.", + "x-example": 0, + "format": "int32" + }, + "authPhoneTotal": { + "type": "integer", + "description": "Aggregated stats for total auth phone.", + "x-example": 0, + "format": "int32" + }, + "authPhoneEstimate": { + "type": "integer", + "description": "Aggregated stats for total auth phone estimation.", + "x-example": 0, + "format": "int32" + }, + "projects": { + "type": "array", + "description": "Aggregated stats for each projects.", + "items": { + "$ref": "#\/components\/schemas\/usageOrganizationProject" + }, + "x-example": [] + }, + "realtimeConnections": { + "type": "array", + "description": "Aggregated stats for realtime connections.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "realtimeConnectionsTotal": { + "type": "integer", + "description": "Aggregated stats for total realtime connections.", + "x-example": 0, + "format": "int32" + }, + "realtimeMessages": { + "type": "array", + "description": "Aggregated stats for realtime messages.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "realtimeMessagesTotal": { + "type": "integer", + "description": "Aggregated stats for total realtime messages.", + "x-example": 0, + "format": "int32" + }, + "realtimeBandwidth": { + "type": "array", + "description": "Aggregated stats for realtime bandwidth.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "realtimeBandwidthTotal": { + "type": "integer", + "description": "Aggregated stats for total realtime bandwidth.", + "x-example": 0, + "format": "int32" + } + }, + "required": [ + "bandwidth", + "users", + "executions", + "databasesReads", + "databasesWrites", + "imageTransformations", + "imageTransformationsTotal", + "screenshotsGenerated", + "screenshotsGeneratedTotal", + "usersTotal", + "executionsTotal", + "executionsMBSecondsTotal", + "buildsMBSecondsTotal", + "filesStorageTotal", + "buildsStorageTotal", + "deploymentsStorageTotal", + "databasesStorageTotal", + "databasesReadsTotal", + "databasesWritesTotal", + "backupsStorageTotal", + "storageTotal", + "authPhoneTotal", + "authPhoneEstimate", + "projects", + "realtimeConnections", + "realtimeConnectionsTotal", + "realtimeMessages", + "realtimeMessagesTotal", + "realtimeBandwidth", + "realtimeBandwidthTotal" + ], + "example": { + "bandwidth": [], + "users": [], + "executions": [], + "databasesReads": [], + "databasesWrites": [], + "imageTransformations": [], + "imageTransformationsTotal": 0, + "screenshotsGenerated": [], + "screenshotsGeneratedTotal": 0, + "usersTotal": 0, + "executionsTotal": 0, + "executionsMBSecondsTotal": 0, + "buildsMBSecondsTotal": 0, + "filesStorageTotal": 0, + "buildsStorageTotal": 0, + "deploymentsStorageTotal": 0, + "databasesStorageTotal": 0, + "databasesReadsTotal": 0, + "databasesWritesTotal": 0, + "backupsStorageTotal": 0, + "storageTotal": 0, + "authPhoneTotal": 0, + "authPhoneEstimate": 0, + "projects": [], + "realtimeConnections": [], + "realtimeConnectionsTotal": 0, + "realtimeMessages": [], + "realtimeMessagesTotal": 0, + "realtimeBandwidth": [], + "realtimeBandwidthTotal": 0 + } + }, + "usageOrganizationProject": { + "description": "OrganizationProject", + "type": "object", + "properties": { + "projectId": { + "type": "string", + "description": "projectId", + "x-example": "5e5ea5c16897e" + }, + "bandwidth": { + "type": "array", + "description": "Aggregated stats for number of requests.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "users": { + "type": "array", + "description": "Aggregated stats for consumed bandwidth.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "executions": { + "type": "integer", + "description": "Aggregated stats for function executions.", + "x-example": [], + "format": "int32" + }, + "databasesReads": { + "type": "array", + "description": "Aggregated stats for database reads.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "databasesWrites": { + "type": "array", + "description": "Aggregated stats for database writes.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "executionsMBSeconds": { + "type": "integer", + "description": "Aggregated stats for function executions in mb seconds.", + "x-example": 0, + "format": "int32" + }, + "buildsMBSeconds": { + "type": "integer", + "description": "Aggregated stats for function builds in mb seconds.", + "x-example": 0, + "format": "int32" + }, + "storage": { + "type": "integer", + "description": "Aggregated stats for number of documents.", + "x-example": [], + "format": "int32" + }, + "authPhoneTotal": { + "type": "integer", + "description": "Aggregated stats for phone authentication.", + "x-example": [], + "format": "int32" + }, + "authPhoneEstimate": { + "type": "number", + "description": "Aggregated stats for phone authentication estimated cost.", + "x-example": [], + "format": "double" + }, + "databasesReadsTotal": { + "type": "integer", + "description": "Aggregated stats for total databases reads.", + "x-example": 0, + "format": "int32" + }, + "databasesWritesTotal": { + "type": "integer", + "description": "Aggregated stats for total databases writes.", + "x-example": 0, + "format": "int32" + }, + "imageTransformations": { + "type": "array", + "description": "Aggregated stats for file transformations.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "imageTransformationsTotal": { + "type": "integer", + "description": "Aggregated stats for total file transformations.", + "x-example": 0, + "format": "int32" + }, + "screenshotsGenerated": { + "type": "array", + "description": "Aggregated stats for file transformations.", + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] + }, + "screenshotsGeneratedTotal": { "type": "integer", - "description": "Aggregated stats for imagine credits.", + "description": "Aggregated stats for total file transformations.", "x-example": 0, "format": "int32" }, @@ -111367,7 +115335,6 @@ "imageTransformationsTotal", "screenshotsGenerated", "screenshotsGeneratedTotal", - "imagineCredits", "realtimeConnections", "realtimeMessages", "realtimeBandwidth" @@ -111390,7 +115357,6 @@ "imageTransformationsTotal": 0, "screenshotsGenerated": [], "screenshotsGeneratedTotal": 0, - "imagineCredits": 0, "realtimeConnections": 0, "realtimeMessages": 0, "realtimeBandwidth": 0 @@ -111432,6 +115398,16 @@ "type": "string", "description": "Resource ID", "x-example": "" + }, + "type": { + "type": "string", + "description": "Dedicated database engine type for per-database line items (e.g. postgresql). Empty for other resources.", + "x-example": "postgresql" + }, + "specification": { + "type": "string", + "description": "Dedicated database specification slug for per-database line items (e.g. s-2vcpu-2gb). Empty for other resources.", + "x-example": "s-2vcpu-2gb" } }, "required": [ @@ -111440,7 +115416,9 @@ "amount", "rate", "desc", - "resourceId" + "resourceId", + "type", + "specification" ], "example": { "name": "", @@ -111448,7 +115426,9 @@ "amount": 500, "rate": 12.5, "desc": "Your monthly recurring Pro plan.", - "resourceId": "" + "resourceId": "", + "type": "postgresql", + "specification": "s-2vcpu-2gb" } }, "app": { @@ -112373,62 +116353,6 @@ "blocks": "" } }, - "dedicatedDatabaseConnectionList": { - "description": "Dedicated database connections list", - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "Total number of connections that matched your query.", - "x-example": 5, - "format": "int32" - }, - "connections": { - "type": "array", - "description": "List of connections.", - "items": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseConnection" - }, - "x-example": "" - } - }, - "required": [ - "total", - "connections" - ], - "example": { - "total": 5, - "connections": "" - } - }, - "dedicatedDatabaseSlowQueryList": { - "description": "Dedicated database slow queries list", - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "Total number of slowQueries that matched your query.", - "x-example": 5, - "format": "int32" - }, - "slowQueries": { - "type": "array", - "description": "List of slowQueries.", - "items": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseSlowQuery" - }, - "x-example": "" - } - }, - "required": [ - "total", - "slowQueries" - ], - "example": { - "total": 5, - "slowQueries": "" - } - }, "dedicatedDatabaseList": { "description": "Dedicated databases list", "type": "object", @@ -112597,6 +116521,34 @@ "paymentMethods": "" } }, + "postgresExtensionList": { + "description": "Postgres extensions list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of extensions that matched your query.", + "x-example": 5, + "format": "int32" + }, + "extensions": { + "type": "array", + "description": "List of extensions.", + "items": { + "$ref": "#\/components\/schemas\/postgresExtension" + }, + "x-example": "" + } + }, + "required": [ + "total", + "extensions" + ], + "example": { + "total": 5, + "extensions": "" + } + }, "consoleRegionList": { "description": "Regions list", "type": "object", diff --git a/specs/latest/open-api3-latest-server.json b/specs/latest/open-api3-latest-server.json index afa3fdde..4406f8fc 100644 --- a/specs/latest/open-api3-latest-server.json +++ b/specs/latest/open-api3-latest-server.json @@ -466,85 +466,6 @@ } } }, - "\/account\/logs": { - "get": { - "summary": "List logs", - "operationId": "accountListLogs", - "tags": [ - "account" - ], - "description": "Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listLogs", - "group": "logs", - "cookies": false, - "type": "", - "demo": "account\/list-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "account", - "platforms": [ - "console", - "client", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md", - "auth": { - "Project": [], - "Session": [] - } - }, - "security": [ - { - "Project": [], - "Session": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] - } - }, "\/account\/mfa": { "patch": { "summary": "Update MFA", @@ -3960,9 +3881,9 @@ "cookies": false, "type": "", "demo": "apps\/list.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -4037,9 +3958,9 @@ "cookies": false, "type": "", "demo": "apps\/create.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4241,9 +4162,9 @@ "cookies": false, "type": "", "demo": "apps\/get.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -4304,9 +4225,9 @@ "cookies": false, "type": "", "demo": "apps\/update.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4496,9 +4417,9 @@ "cookies": false, "type": "", "demo": "apps\/delete.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4564,9 +4485,9 @@ "cookies": false, "type": "", "demo": "apps\/list-secrets.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -4651,9 +4572,9 @@ "cookies": false, "type": "", "demo": "apps\/create-secret.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4716,9 +4637,9 @@ "cookies": false, "type": "", "demo": "apps\/get-secret.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.read", "platforms": [ "console", @@ -4782,9 +4703,9 @@ "cookies": false, "type": "", "demo": "apps\/delete-secret.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4860,9 +4781,9 @@ "cookies": false, "type": "", "demo": "apps\/update-team.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -4937,9 +4858,9 @@ "cookies": false, "type": "", "demo": "apps\/delete-tokens.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "apps.write", "platforms": [ "console", @@ -19813,8 +19734,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -19913,8 +19838,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -20597,8 +20526,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -20697,8 +20630,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -26281,93 +26218,6 @@ ] } }, - "\/messaging\/messages\/{messageId}\/logs": { - "get": { - "summary": "List message logs", - "operationId": "messagingListMessageLogs", - "tags": [ - "messaging" - ], - "description": "Get the message activity logs listed by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listMessageLogs", - "group": "logs", - "cookies": false, - "type": "", - "demo": "messaging\/list-message-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "messages.read", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-logs.md", - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "messageId", - "description": "Message ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<MESSAGE_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] - } - }, "\/messaging\/messages\/{messageId}\/targets": { "get": { "summary": "List message targets", @@ -29877,180 +29727,6 @@ ] } }, - "\/messaging\/providers\/{providerId}\/logs": { - "get": { - "summary": "List provider logs", - "operationId": "messagingListProviderLogs", - "tags": [ - "messaging" - ], - "description": "Get the provider activity logs listed by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listProviderLogs", - "group": "providers", - "cookies": false, - "type": "", - "demo": "messaging\/list-provider-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "providers.read", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-provider-logs.md", - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "providerId", - "description": "Provider ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<PROVIDER_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] - } - }, - "\/messaging\/subscribers\/{subscriberId}\/logs": { - "get": { - "summary": "List subscriber logs", - "operationId": "messagingListSubscriberLogs", - "tags": [ - "messaging" - ], - "description": "Get the subscriber activity logs listed by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listSubscriberLogs", - "group": "subscribers", - "cookies": false, - "type": "", - "demo": "messaging\/list-subscriber-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.read", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscriber-logs.md", - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "subscriberId", - "description": "Subscriber ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<SUBSCRIBER_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] - } - }, "\/messaging\/topics": { "get": { "summary": "List topics", @@ -30349,126 +30025,63 @@ "in": "path" } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Topic Name.", - "x-example": "<NAME>", - "x-nullable": true - }, - "subscribe": { - "type": "array", - "description": "An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", - "x-example": "[\"any\"]", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - } - } - } - } - }, - "delete": { - "summary": "Delete topic", - "operationId": "messagingDeleteTopic", - "tags": [ - "messaging" - ], - "description": "Delete a topic by its unique ID.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteTopic", - "group": "topics", - "cookies": false, - "type": "", - "demo": "messaging\/delete-topic.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "topics.write", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md", - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "topicId", - "description": "Topic ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<TOPIC_ID>" - }, - "in": "path" - } - ] - } - }, - "\/messaging\/topics\/{topicId}\/logs": { - "get": { - "summary": "List topic logs", - "operationId": "messagingListTopicLogs", - "tags": [ - "messaging" - ], - "description": "Get the topic activity logs listed by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Topic Name.", + "x-example": "<NAME>", + "x-nullable": true + }, + "subscribe": { + "type": "array", + "description": "An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.", + "x-example": "[\"any\"]", + "items": { + "type": "string" + }, + "x-nullable": true + } } } } } + } + }, + "delete": { + "summary": "Delete topic", + "operationId": "messagingDeleteTopic", + "tags": [ + "messaging" + ], + "description": "Delete a topic by its unique ID.", + "responses": { + "204": { + "description": "No content" + } }, "deprecated": false, "x-appwrite": { - "method": "listTopicLogs", + "method": "deleteTopic", "group": "topics", "cookies": false, "type": "", - "demo": "messaging\/list-topic-logs.md", + "demo": "messaging\/delete-topic.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "topics.read", + "scope": "topics.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topic-logs.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md", "auth": { "Project": [], "Key": [] @@ -30490,30 +30103,6 @@ "x-example": "<TOPIC_ID>" }, "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" } ] } @@ -30875,9 +30464,9 @@ "cookies": false, "type": "", "demo": "oauth2\/approve.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "oauth2.write", "platforms": [ "console", @@ -30926,6 +30515,12 @@ "description": "Enriched `authorization_details` the user consented to, replacing what the client requested. Each entry must use a `type` the project accepts. Optional; omit to keep the originally requested details.", "default": "", "x-example": "<AUTHORIZATION_DETAILS>" + }, + "scope": { + "type": "string", + "description": "Space-separated scopes the user consented to. Must be a subset of the scopes originally requested; identity scopes such as `openid` are always retained. Optional; omit to keep the originally requested scopes.", + "default": "", + "x-example": "<SCOPE>" } }, "required": [ @@ -30964,8 +30559,8 @@ "cookies": false, "type": "", "demo": "oauth2\/authorize.md", - "rate-limit": 0, - "rate-time": 3600, + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -31031,11 +30626,12 @@ }, { "name": "scope", - "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`.", - "required": true, + "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`, `phone`.", + "required": false, "schema": { "type": "string", - "x-example": "<SCOPE>" + "x-example": "<SCOPE>", + "default": "" }, "in": "query" }, @@ -31156,8 +30752,8 @@ "cookies": false, "type": "", "demo": "oauth2\/create-device-authorization.md", - "rate-limit": 0, - "rate-time": 3600, + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -31339,9 +30935,9 @@ "cookies": false, "type": "", "demo": "oauth2\/get-grant.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "oauth2.read", "platforms": [ "console", @@ -31414,9 +31010,9 @@ "cookies": false, "type": "", "demo": "oauth2\/reject.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", "scope": "oauth2.write", "platforms": [ "console", @@ -31498,8 +31094,8 @@ "cookies": false, "type": "", "demo": "oauth2\/revoke.md", - "rate-limit": 0, - "rate-time": 3600, + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -31600,8 +31196,8 @@ "cookies": false, "type": "", "demo": "oauth2\/create-token.md", - "rate-limit": 0, - "rate-time": 3600, + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -33408,8 +33004,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -33508,8 +33108,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -33688,8 +33292,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -33788,8 +33396,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -34043,8 +33655,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -34143,8 +33759,12 @@ "policies.write", "project.policies.read", "project.policies.write", + "project.oauth2.read", + "project.oauth2.write", "templates.read", "templates.write", + "stages.read", + "stages.write", "oauth2.read", "oauth2.write", "users.read", @@ -34751,7 +34371,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.read", + "scope": [ + "oauth2.read", + "project.oauth2.read" + ], "platforms": [ "console", "server" @@ -34982,7 +34605,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35061,7 +34687,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35152,7 +34781,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35237,7 +34869,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35322,7 +34957,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35401,7 +35039,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35480,7 +35121,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35559,7 +35203,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35638,7 +35285,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35717,7 +35367,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35796,7 +35449,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35875,7 +35531,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -35954,7 +35613,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36033,7 +35695,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36112,7 +35777,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36191,7 +35859,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36276,7 +35947,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36355,7 +36029,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36441,7 +36118,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36540,7 +36220,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36631,7 +36314,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36710,7 +36396,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36789,7 +36478,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36874,7 +36566,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -36953,7 +36648,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37060,7 +36758,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37151,7 +36852,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37230,7 +36934,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37309,7 +37016,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37388,7 +37098,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37467,7 +37180,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37546,7 +37262,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37625,7 +37344,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37704,7 +37426,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37783,7 +37508,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37862,7 +37590,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -37941,7 +37672,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -38020,7 +37754,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -38099,7 +37836,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -38178,7 +37918,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -38257,7 +38000,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -38336,7 +38082,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": [ + "oauth2.write", + "project.oauth2.write" + ], "platforms": [ "console", "server" @@ -38583,7 +38332,10 @@ "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.read", + "scope": [ + "oauth2.read", + "project.oauth2.read" + ], "platforms": [ "console", "server" @@ -57172,7 +56924,7 @@ "tags": [ "usage" ], - "description": "Aggregate usage event metrics. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 one point per dimension combination, no time axis. Useful for \"top 10 paths by bandwidth in the last 7 days\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one point per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down by one or more attributes (service, path, status, country, \u2026). Pass multiple metrics to render stacked charts in one round-trip. `resource` and `resourceId` filter the underlying events. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N by aggregated value. When `startAt` is omitted, the default window adapts to `interval` (or 7d when interval is omitted).", + "description": "Aggregate usage event metrics. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 one point per dimension combination, no time axis. Useful for \"top 10 paths by bandwidth in the last 7 days\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one point per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down by one or more attributes (service, path, status, country, \u2026). `queries[]` filters the underlying events using the standard Utopia query syntax \u2014 `equal(\"path\", [\"\/v1\/storage\/files\"])`, `equal(\"resource\", [\"bucket\"])`, `equal(\"resourceId\", [\"abc123\"])`, `startsWith(\"path\", [\"\/v1\/storage\"])`, `equal(\"status\", [\"200\", \"201\"])`, `isNotNull(\"resourceId\")`. Supported attributes: see `queries[]` param. Supported methods: `equal`, `notEqual`, `contains`, `startsWith`, `endsWith`, `isNull`, `isNotNull`. Pass multiple metrics to render stacked charts in one round-trip. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N by aggregated value. When `startAt` is omitted, the default window adapts to `interval` (or 7d when interval is omitted).", "responses": { "200": { "description": "usageEventList", @@ -57227,24 +56979,15 @@ "in": "query" }, { - "name": "resource", - "description": "Resource type filter (singular form). Common values: function, site, database, bucket, file, webhook, team, user, project.", - "required": false, - "schema": { - "type": "string", - "x-example": "<RESOURCE>", - "default": "" - }, - "in": "query" - }, - { - "name": "resourceId", - "description": "Resource id filter.", + "name": "queries", + "description": "Up to 10 filter queries in Utopia syntax. Allowed attributes: path, method, status, service, resource, resourceId, teamId, country, region, hostname, osName, clientType, clientName, deviceName. Allowed methods: equal, notEqual, contains, startsWith, endsWith, isNull, isNotNull. Example: `queries[]=equal(\"resource\", [\"bucket\"])`.", "required": false, "schema": { - "type": "string", - "x-example": "<RESOURCE_ID>", - "default": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, @@ -57351,7 +57094,7 @@ "tags": [ "usage" ], - "description": "Aggregate usage gauge snapshots. Gauges are point-in-time values (storage totals, resource counts, \u2026); each point carries the latest snapshot in its interval via `argMax(value, time)`. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 `argMax(value, time)` per dimension combination over the whole window, no time axis. Useful for \"top 10 resources by current storage\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one snapshot per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down further. Supported on gauges: `resourceId`, `teamId`, `service`, `resource`. `service` and `resource` enable per-service \/ per-resource-type panels (e.g. storage-by-service: group `files.storage`, `deployments.storage`, `builds.storage`, `databases.storage` by `service`). Pass multiple metrics to render stacked charts in one round-trip. `resourceId` and `teamId` parameters filter the underlying rows. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N. When `startAt` is omitted, the default window adapts to interval (or 7d when interval is omitted).", + "description": "Aggregate usage gauge snapshots. Gauges are point-in-time values (storage totals, resource counts, \u2026); each point carries the latest snapshot in its interval via `argMax(value, time)`. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 `argMax(value, time)` per dimension combination over the whole window, no time axis. Useful for \"top 10 resources by current storage\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one snapshot per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down further. Supported on gauges: `resourceId`, `teamId`, `service`, `resource`. `service` and `resource` enable per-service \/ per-resource-type panels (e.g. storage-by-service: group `files.storage`, `deployments.storage`, `builds.storage`, `databases.storage` by `service`). `queries[]` filters the underlying rows using the standard Utopia query syntax \u2014 `equal(\"resource\", [\"bucket\"])`, `equal(\"resourceId\", [\"abc123\"])`, `equal(\"teamId\", [\"team_x\"])`, `isNotNull(\"teamId\")`. Supported attributes: see `queries[]` param. Supported methods: `equal`, `notEqual`, `isNull`, `isNotNull`. Pass multiple metrics to render stacked charts in one round-trip. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N. When `startAt` is omitted, the default window adapts to interval (or 7d when interval is omitted).", "responses": { "200": { "description": "usageGaugeList", @@ -57406,24 +57149,15 @@ "in": "query" }, { - "name": "resourceId", - "description": "Resource id filter.", - "required": false, - "schema": { - "type": "string", - "x-example": "<RESOURCE_ID>", - "default": "" - }, - "in": "query" - }, - { - "name": "teamId", - "description": "Team id filter.", + "name": "queries", + "description": "Up to 10 filter queries in Utopia syntax. Allowed attributes: service, resource, resourceId, teamId. Allowed methods: equal, notEqual, isNull, isNotNull. Example: `queries[]=equal(\"resource\", [\"bucket\"])`.", "required": false, "schema": { - "type": "string", - "x-example": "<TEAM_ID>", - "default": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, @@ -59042,93 +58776,6 @@ } } }, - "\/users\/{userId}\/logs": { - "get": { - "summary": "List user logs", - "operationId": "usersListLogs", - "tags": [ - "users" - ], - "description": "Get the user activity logs list by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listLogs", - "group": "logs", - "cookies": false, - "type": "", - "demo": "users\/list-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "users.read", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md", - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "userId", - "description": "User ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<USER_ID>" - }, - "in": "path" - }, - { - "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" - } - ] - } - }, "\/users\/{userId}\/memberships": { "get": { "summary": "List user memberships", @@ -65221,34 +64868,6 @@ "identities": "" } }, - "logList": { - "description": "Logs List", - "type": "object", - "properties": { - "total": { - "type": "integer", - "description": "Total number of logs that matched your query.", - "x-example": 5, - "format": "int32" - }, - "logs": { - "type": "array", - "description": "List of logs.", - "items": { - "$ref": "#\/components\/schemas\/log" - }, - "x-example": "" - } - }, - "required": [ - "total", - "logs" - ], - "example": { - "total": 5, - "logs": "" - } - }, "fileList": { "description": "Files List", "type": "object", @@ -71459,170 +71078,6 @@ } } }, - "log": { - "description": "Log", - "type": "object", - "properties": { - "event": { - "type": "string", - "description": "Event name.", - "x-example": "account.sessions.create" - }, - "userId": { - "type": "string", - "description": "User ID of the actor recorded for this log. During impersonation, this is the original impersonator, not the impersonated target user.", - "x-example": "610fc2f985ee0" - }, - "userEmail": { - "type": "string", - "description": "User email of the actor recorded for this log. During impersonation, this is the original impersonator.", - "x-example": "john@appwrite.io" - }, - "userName": { - "type": "string", - "description": "User name of the actor recorded for this log. During impersonation, this is the original impersonator.", - "x-example": "John Doe" - }, - "mode": { - "type": "string", - "description": "API mode when event triggered.", - "x-example": "admin" - }, - "userType": { - "type": "string", - "description": "User type who triggered the audit log. Possible values: user, admin, guest, keyProject, keyAccount, keyOrganization.", - "x-example": "user" - }, - "ip": { - "type": "string", - "description": "IP session in use when the session was created.", - "x-example": "127.0.0.1" - }, - "time": { - "type": "string", - "description": "Log creation date in ISO 8601 format.", - "x-example": "2020-10-15T06:38:00.000+00:00" - }, - "osCode": { - "type": "string", - "description": "Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).", - "x-example": "Mac" - }, - "osName": { - "type": "string", - "description": "Operating system name.", - "x-example": "Mac" - }, - "osVersion": { - "type": "string", - "description": "Operating system version.", - "x-example": "Mac" - }, - "clientType": { - "type": "string", - "description": "Client type.", - "x-example": "browser" - }, - "clientCode": { - "type": "string", - "description": "Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).", - "x-example": "CM" - }, - "clientName": { - "type": "string", - "description": "Client name.", - "x-example": "Chrome Mobile iOS" - }, - "clientVersion": { - "type": "string", - "description": "Client version.", - "x-example": "84.0" - }, - "clientEngine": { - "type": "string", - "description": "Client engine name.", - "x-example": "WebKit" - }, - "clientEngineVersion": { - "type": "string", - "description": "Client engine name.", - "x-example": "605.1.15" - }, - "deviceName": { - "type": "string", - "description": "Device name.", - "x-example": "smartphone" - }, - "deviceBrand": { - "type": "string", - "description": "Device brand name.", - "x-example": "Google" - }, - "deviceModel": { - "type": "string", - "description": "Device model name.", - "x-example": "Nexus 5" - }, - "countryCode": { - "type": "string", - "description": "Country two-character ISO 3166-1 alpha code.", - "x-example": "US" - }, - "countryName": { - "type": "string", - "description": "Country name.", - "x-example": "United States" - } - }, - "required": [ - "event", - "userId", - "userEmail", - "userName", - "mode", - "userType", - "ip", - "time", - "osCode", - "osName", - "osVersion", - "clientType", - "clientCode", - "clientName", - "clientVersion", - "clientEngine", - "clientEngineVersion", - "deviceName", - "deviceBrand", - "deviceModel", - "countryCode", - "countryName" - ], - "example": { - "event": "account.sessions.create", - "userId": "610fc2f985ee0", - "userEmail": "john@appwrite.io", - "userName": "John Doe", - "mode": "admin", - "userType": "user", - "ip": "127.0.0.1", - "time": "2020-10-15T06:38:00.000+00:00", - "osCode": "Mac", - "osName": "Mac", - "osVersion": "Mac", - "clientType": "browser", - "clientCode": "CM", - "clientName": "Chrome Mobile iOS", - "clientVersion": "84.0", - "clientEngine": "WebKit", - "clientEngineVersion": "605.1.15", - "deviceName": "smartphone", - "deviceBrand": "Google", - "deviceModel": "Nexus 5", - "countryCode": "US", - "countryName": "United States" - } - }, "user": { "description": "User", "type": "object", @@ -74257,6 +73712,12 @@ "description": "Project status", "x-example": "active" }, + "onboarding": { + "type": "object", + "additionalProperties": true, + "description": "Stage progress (completed or skipped) with timestamps and actor types, keyed by stage id.", + "x-example": [] + }, "authMethods": { "type": "array", "description": "List of auth methods.", @@ -74429,6 +73890,7 @@ "pingedAt", "labels", "status", + "onboarding", "authMethods", "services", "protocols", @@ -74459,6 +73921,7 @@ "vip" ], "status": "active", + "onboarding": [], "authMethods": {}, "services": {}, "protocols": {}, @@ -79169,16 +78632,6 @@ "type": "string", "description": "Hostname.", "x-example": "appwrite.io" - }, - "countryCode": { - "type": "string", - "description": "Country two-character ISO 3166-1 alpha code.", - "x-example": "US" - }, - "countryName": { - "type": "string", - "description": "Country name.", - "x-example": "United States" } }, "required": [ @@ -79199,9 +78652,7 @@ "time", "projectId", "teamId", - "hostname", - "countryCode", - "countryName" + "hostname" ], "example": { "$id": "5e5ea5c16897e", @@ -79221,9 +78672,7 @@ "time": "2020-10-15T06:38:00.000+00:00", "projectId": "610fc2f985ee0", "teamId": "610fc2f985ee0", - "hostname": "appwrite.io", - "countryCode": "US", - "countryName": "United States" + "hostname": "appwrite.io" } }, "backupArchive": { @@ -79418,6 +78867,11 @@ "description": "Resource identifier that is blocked", "x-example": "5e5ea5c16897e" }, + "mode": { + "type": "string", + "description": "Block mode. full blocks reads and writes; readOnly blocks writes only.", + "x-example": "readOnly" + }, "reason": { "type": "string", "description": "Reason for the block. Can be null if no reason was provided.", @@ -79460,6 +78914,7 @@ "$createdAt", "resourceType", "resourceId", + "mode", "projectName", "region", "organizationName", @@ -79470,6 +78925,7 @@ "$createdAt": "2020-10-15T06:38:00.000+00:00", "resourceType": "project", "resourceId": "5e5ea5c16897e", + "mode": "readOnly", "reason": "Payment overdue", "expiredAt": "2020-10-15T06:38:00.000+00:00", "projectName": "My Project",