diff --git a/specs/1.9.x/open-api3-1.9.x-client.json b/specs/1.9.x/open-api3-1.9.x-client.json index fe3fbf77..9cc9992e 100644 --- a/specs/1.9.x/open-api3-1.9.x-client.json +++ b/specs/1.9.x/open-api3-1.9.x-client.json @@ -4180,9 +4180,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 +4255,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 +4457,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 +4518,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 +4708,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 +4774,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 +4859,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 +4922,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 +4986,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 +5062,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 +5137,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", @@ -10852,7 +10852,7 @@ "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/locale" + "$ref": "#\/components\/schemas\/cloudLocale" } } } @@ -11440,9 +11440,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 +11490,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 +11534,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": [ @@ -11564,41 +11570,45 @@ { "name": "client_id", "description": "OAuth2 client ID.", - "required": true, + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "" }, "in": "query" }, { "name": "redirect_uri", "description": "Redirect URI where visitor will be redirected after authorization, whether successful or not.", - "required": true, + "required": false, "schema": { "type": "string", "format": "url", - "x-example": "https:\/\/example.com" + "x-example": "https:\/\/example.com", + "default": "" }, "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, + "required": false, "schema": { "type": "string", - "x-example": "code" + "x-example": "", + "default": "" }, "in": "query" }, { "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" }, @@ -11688,6 +11698,17 @@ "default": [] }, "in": "query" + }, + { + "name": "request_uri", + "description": "OAuth2 authorization request handle returned by the pushed authorization request endpoint.", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "in": "query" } ] } @@ -11719,8 +11740,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 +11920,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 +11986,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": [ @@ -12056,12 +12077,358 @@ "in": "query" }, { - "name": "ui_locales", - "description": "Preferred languages for any logout UI, as space-separated BCP47 tags. Accepted for OIDC compatibility.", + "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": "", + "default": "" + }, + "in": "query" + } + ] + } + }, + "\/oauth2\/{project_id}\/organizations": { + "get": { + "summary": "OAuth2 List Accessible Organizations", + "operationId": "oauth2ListOrganizations", + "tags": [ + "oauth2" + ], + "description": "List the organizations the OAuth2 access token can access. Resolves the token's `organization` authorization details, expanding the `*` wildcard into the concrete set of organizations the user can see.", + "responses": { + "200": { + "description": "OAuth2 accessible organizations list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/oauth2OrganizationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOrganizations", + "group": null, + "cookies": false, + "type": "", + "demo": "oauth2\/list-organizations.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "url:{url},ip:{ip}", + "scope": "oauth2.organizations.read", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "ProjectPath": [] + } + }, + "security": [ + { + "ProjectPath": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "project_id", + "description": "Project ID of the console project the OAuth2 access token was issued for.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "limit", + "description": "Maximum number of organizations to return. Between 1 and 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of organizations to skip before returning results. Used for pagination.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "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" + } + ] + } + }, + "\/oauth2\/{project_id}\/par": { + "post": { + "summary": "OAuth2 PAR", + "operationId": "oauth2CreatePAR", + "tags": [ + "oauth2" + ], + "description": "Store an OAuth2 authorization request server-side and receive a short-lived request_uri handle for the authorize endpoint.", + "responses": { + "201": { + "description": "OAuth2 PAR", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/oauth2PAR" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createPAR", + "group": null, + "cookies": false, + "type": "", + "demo": "oauth2\/create-par.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "url:{url},ip:{ip}", + "scope": "public", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "ProjectPath": [] + } + }, + "security": [ + { + "ProjectPath": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "client_id": { + "type": "string", + "description": "OAuth2 client ID.", + "x-example": "" + }, + "redirect_uri": { + "type": "string", + "description": "Redirect URI where visitor will be redirected after authorization, whether successful or not.", + "x-example": "https:\/\/example.com", + "format": "url" + }, + "response_type": { + "type": "string", + "description": "OAuth2 \/ OIDC response type.", + "x-example": "code" + }, + "scope": { + "type": "string", + "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`, `phone`.", + "x-example": "" + }, + "state": { + "type": "string", + "description": "OAuth2 state. You receive this back in the redirect URI.", + "default": "", + "x-example": "" + }, + "nonce": { + "type": "string", + "description": "OIDC nonce parameter to prevent replay attacks. Required when response_type includes `id_token`.", + "default": "", + "x-example": "" + }, + "code_challenge": { + "type": "string", + "description": "PKCE code challenge. Required when OAuth2 app is public.", + "default": "", + "x-example": "" + }, + "code_challenge_method": { + "type": "string", + "description": "PKCE code challenge method. Required when OAuth2 app is public.", + "default": "", + "x-example": "s256" + }, + "prompt": { + "type": "string", + "description": "OIDC prompt parameter for customization of consent screen. Space-separated list of: none, login, consent, select_account.", + "default": "", + "x-example": "" + }, + "max_age": { + "type": "integer", + "description": "OIDC max_age parameter for customization of consent screen.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "authorization_details": { + "type": "string", + "description": "Rich authorization request. JSON array of objects, each with a `type` and project-defined fields", + "default": "", + "x-example": "" + }, + "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": [ + "client_id", + "redirect_uri", + "response_type", + "scope" + ] + } + } + } + } + } + }, + "\/oauth2\/{project_id}\/projects": { + "get": { + "summary": "OAuth2 List Accessible Projects", + "operationId": "oauth2ListProjects", + "tags": [ + "oauth2" + ], + "description": "List the projects the OAuth2 access token can access. Resolves the token's `project` authorization details, expanding the `*` wildcard into the concrete set of projects the user can see.", + "responses": { + "200": { + "description": "OAuth2 accessible projects list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/oauth2ProjectList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listProjects", + "group": null, + "cookies": false, + "type": "", + "demo": "oauth2\/list-projects.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "url:{url},ip:{ip}", + "scope": "oauth2.projects.read", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "ProjectPath": [] + } + }, + "security": [ + { + "ProjectPath": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "project_id", + "description": "Project ID of the console project the OAuth2 access token was issued for.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "limit", + "description": "Maximum number of projects to return. Between 1 and 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of projects to skip before returning results. Used for pagination.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "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": "query" @@ -12096,9 +12463,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 +12546,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 +12646,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": [ @@ -18262,7 +18629,7 @@ }, "userType": { "type": "string", - "description": "User type who triggered the audit log. Possible values: user, admin, guest, keyProject, keyAccount, keyOrganization.", + "description": "User type who triggered the audit log. Possible values: user, admin, guest, hidden, keyProject, keyAccount, keyOrganization.", "x-example": "user" }, "ip": { @@ -19222,65 +19589,6 @@ "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" } }, - "locale": { - "description": "Locale", - "type": "object", - "properties": { - "ip": { - "type": "string", - "description": "User IP address.", - "x-example": "127.0.0.1" - }, - "countryCode": { - "type": "string", - "description": "Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format", - "x-example": "US" - }, - "country": { - "type": "string", - "description": "Country name. This field support localization.", - "x-example": "United States" - }, - "continentCode": { - "type": "string", - "description": "Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.", - "x-example": "NA" - }, - "continent": { - "type": "string", - "description": "Continent name. This field support localization.", - "x-example": "North America" - }, - "eu": { - "type": "boolean", - "description": "True if country is part of the European Union.", - "x-example": false - }, - "currency": { - "type": "string", - "description": "Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format", - "x-example": "USD" - } - }, - "required": [ - "ip", - "countryCode", - "country", - "continentCode", - "continent", - "eu", - "currency" - ], - "example": { - "ip": "127.0.0.1", - "countryCode": "US", - "country": "United States", - "continentCode": "NA", - "continent": "North America", - "eu": false, - "currency": "USD" - } - }, "localeCode": { "description": "LocaleCode", "type": "object", @@ -20332,6 +20640,144 @@ "expired": false } }, + "cloudLocale": { + "description": "Locale", + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "User IP address.", + "x-example": "127.0.0.1" + }, + "countryCode": { + "type": "string", + "description": "Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format", + "x-example": "US" + }, + "country": { + "type": "string", + "description": "Country name. This field support localization.", + "x-example": "United States" + }, + "continentCode": { + "type": "string", + "description": "Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.", + "x-example": "NA" + }, + "continent": { + "type": "string", + "description": "Continent name. This field support localization.", + "x-example": "North America" + }, + "eu": { + "type": "boolean", + "description": "True if country is part of the European Union.", + "x-example": false + }, + "currency": { + "type": "string", + "description": "Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format", + "x-example": "USD" + }, + "city": { + "type": "string", + "description": "City", + "x-example": "Kathmandu", + "nullable": true + }, + "timeZone": { + "type": "string", + "description": "Name of timezone", + "x-example": "Asia\/Kathmandu", + "nullable": true + }, + "postalCode": { + "type": "string", + "description": "Postal code", + "x-example": "44600", + "nullable": true + }, + "latitude": { + "type": "number", + "description": "Latitude", + "x-example": "82.345", + "format": "double", + "nullable": true + }, + "longitude": { + "type": "number", + "description": "Longitude", + "x-example": "82.345", + "format": "double", + "nullable": true + }, + "autonomousSystemNumber": { + "type": "string", + "description": "Autonomous System Number (ASN) of the IP", + "x-example": "15169", + "nullable": true + }, + "autonomousSystemOrganization": { + "type": "string", + "description": "Organization that owns the ASN", + "x-example": "GOOGLE", + "nullable": true + }, + "isp": { + "type": "string", + "description": "Internet service provider of the IP", + "x-example": "Google", + "nullable": true + }, + "connectionType": { + "type": "string", + "description": "Connection type of the IP (e.g. cable, cellular, corporate)", + "x-example": "cable", + "nullable": true + }, + "connectionUsageType": { + "type": "string", + "description": "User type classification of the IP (e.g. residential, business, hosting)", + "x-example": "residential", + "nullable": true + }, + "connectionOrganization": { + "type": "string", + "description": "Registered organization of the IP", + "x-example": "Google LLC", + "nullable": true + } + }, + "required": [ + "ip", + "countryCode", + "country", + "continentCode", + "continent", + "eu", + "currency" + ], + "example": { + "ip": "127.0.0.1", + "countryCode": "US", + "country": "United States", + "continentCode": "NA", + "continent": "North America", + "eu": false, + "currency": "USD", + "city": "Kathmandu", + "timeZone": "Asia\/Kathmandu", + "postalCode": "44600", + "latitude": "82.345", + "longitude": "82.345", + "autonomousSystemNumber": "15169", + "autonomousSystemOrganization": "GOOGLE", + "isp": "Google", + "connectionType": "cable", + "connectionUsageType": "residential", + "connectionOrganization": "Google LLC" + } + }, "app": { "description": "App", "type": "object", @@ -20914,6 +21360,31 @@ "interval": 5 } }, + "oauth2PAR": { + "description": "OAuth2 PAR", + "type": "object", + "properties": { + "request_uri": { + "type": "string", + "description": "Authorization request handle to pass to the authorize endpoint.", + "x-example": "urn:appwrite:oauth2:request:5e5ea5c16897e" + }, + "expires_in": { + "type": "integer", + "description": "Lifetime of the authorization request handle in seconds.", + "x-example": 600, + "format": "int32" + } + }, + "required": [ + "request_uri", + "expires_in" + ], + "example": { + "request_uri": "urn:appwrite:oauth2:request:5e5ea5c16897e", + "expires_in": 600 + } + }, "oauth2Token": { "description": "OAuth2 Token", "type": "object", @@ -20974,6 +21445,110 @@ "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." } }, + "oauth2Project": { + "description": "OAuth2 Project", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Project ID.", + "x-example": "5e5ea5c16897e" + }, + "region": { + "type": "string", + "description": "Region ID the project is deployed in.", + "x-example": "fra" + }, + "endpoint": { + "type": "string", + "description": "API endpoint of the region the project is deployed in. Empty when the region has no public hostname configured.", + "x-example": "https:\/\/fra.cloud.appwrite.io\/v1" + } + }, + "required": [ + "$id", + "region", + "endpoint" + ], + "example": { + "$id": "5e5ea5c16897e", + "region": "fra", + "endpoint": "https:\/\/fra.cloud.appwrite.io\/v1" + } + }, + "oauth2Organization": { + "description": "OAuth2 Organization", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Organization ID.", + "x-example": "5e5ea5c16897e" + } + }, + "required": [ + "$id" + ], + "example": { + "$id": "5e5ea5c16897e" + } + }, + "oauth2ProjectList": { + "description": "OAuth2 accessible projects list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of projects that matched your query.", + "x-example": 5, + "format": "int32" + }, + "projects": { + "type": "array", + "description": "List of projects.", + "items": { + "$ref": "#\/components\/schemas\/oauth2Project" + }, + "x-example": "" + } + }, + "required": [ + "total", + "projects" + ], + "example": { + "total": 5, + "projects": "" + } + }, + "oauth2OrganizationList": { + "description": "OAuth2 accessible organizations list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of organizations that matched your query.", + "x-example": 5, + "format": "int32" + }, + "organizations": { + "type": "array", + "description": "List of organizations.", + "items": { + "$ref": "#\/components\/schemas\/oauth2Organization" + }, + "x-example": "" + } + }, + "required": [ + "total", + "organizations" + ], + "example": { + "total": 5, + "organizations": "" + } + }, "appsList": { "description": "Apps list", "type": "object", @@ -21061,6 +21636,12 @@ "demo": "" } }, + "Bearer": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "The OAuth access token to authenticate with" + }, "Locale": { "type": "apiKey", "name": "X-Appwrite-Locale", diff --git a/specs/1.9.x/open-api3-1.9.x-console.json b/specs/1.9.x/open-api3-1.9.x-console.json index a0c69a0f..c3e7f5cd 100644 --- a/specs/1.9.x/open-api3-1.9.x-console.json +++ b/specs/1.9.x/open-api3-1.9.x-console.json @@ -1117,7 +1117,7 @@ }, "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -1279,7 +1279,7 @@ }, "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -5675,9 +5675,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 +5751,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 +5954,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 +6016,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 +6207,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 +6274,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 +6360,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 +6424,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 +6489,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 +6566,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 +6642,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", @@ -9747,7 +9747,7 @@ "tags": [ "backups" ], - "description": "Create and trigger a new restoration for a backup on a project.", + "description": "Create and trigger a new restoration for a backup on a project.\n\nWhen restoring a DocumentsDB or VectorsDB database to a new resource, pass `newSpecification` to provision the restored database on a different specification than the archived one (for example, restoring onto a larger or smaller dedicated database). Use `serverless` to restore onto the shared pool, or a dedicated specification slug to restore onto a dedicated database of that size. The specification must be permitted by the organization's plan. `newSpecification` is not supported for legacy\/TablesDB databases or for bucket restores.\n", "responses": { "201": { "description": "Restoration", @@ -9840,6 +9840,12 @@ "description": "Database name. Max length: 128 chars.", "default": "", "x-example": "" + }, + "newSpecification": { + "type": "string", + "description": "Specification to provision the restored database on, when restoring a DocumentsDB or VectorsDB database to a new resource. Defaults to the archived database's specification. Use `serverless` for the shared pool or a dedicated specification slug.", + "default": "", + "x-example": "serverless" } }, "required": [ @@ -9979,21 +9985,208 @@ ] } }, - "\/compute\/databases": { + "\/console\/assistant": { + "post": { + "summary": "Create assistant query", + "operationId": "assistantChat", + "tags": [ + "assistant" + ], + "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": { + "200": { + "description": "Text", + "content": { + "text\/plain": { + "schema": { + "type": "string" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "chat", + "group": "console", + "cookies": false, + "type": "", + "demo": "assistant\/chat.md", + "rate-limit": 15, + "rate-time": 3600, + "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": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "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" + ] + } + } + } + } + } + }, + "\/console\/campaigns\/{campaignId}": { + "get": { + "summary": "Get campaign details", + "operationId": "consoleGetCampaign", + "tags": [ + "console" + ], + "description": "Receive the details of a campaign using its ID.", + "responses": { + "201": { + "description": "Campaign", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/campaign" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getCampaign", + "group": null, + "cookies": false, + "type": "", + "demo": "console\/get-campaign.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "public", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-campaign.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "campaignId", + "description": "ID of the campaign", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/console\/coupons\/{couponId}": { "get": { - "summary": "List dedicated databases.", - "operationId": "computeListDatabases", + "summary": "Get coupon details", + "operationId": "consoleGetCoupon", "tags": [ - "compute" + "console" ], - "description": "List all dedicated databases. Results support pagination.", + "description": "Get the details of a coupon using it's coupon ID.", + "responses": { + "201": { + "description": "Coupon", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/coupon" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getCoupon", + "group": null, + "cookies": false, + "type": "", + "demo": "console\/get-coupon.md", + "rate-limit": 50, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "public", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/get-coupon.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "couponId", + "description": "ID of the coupon", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/console\/databases": { + "get": { + "summary": "List databases", + "operationId": "consoleListDatabases", + "tags": [ + "console" + ], + "description": "Get a list of all the project's databases. You can use the query params to filter your results. This returns every database across all types and product APIs in a single call.\n", "responses": { "200": { - "description": "Dedicated databases list", + "description": "Databases List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseList" + "$ref": "#\/components\/schemas\/databaseList" } } } @@ -10002,10 +10195,10 @@ "deprecated": false, "x-appwrite": { "method": "listDatabases", - "group": "databases", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-databases.md", + "demo": "console\/list-databases.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -10015,6 +10208,7 @@ ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/list-databases.md", "auth": { "Project": [] } @@ -10027,7 +10221,7 @@ "parameters": [ { "name": "queries", - "description": "Array of query strings.", + "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", @@ -10037,23 +10231,47 @@ "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 a dedicated database.", - "operationId": "computeCreateDatabase", + } + }, + "\/console\/oauth2-providers": { + "get": { + "summary": "List OAuth2 providers", + "operationId": "consoleListOAuth2Providers", "tags": [ - "compute" + "console" ], - "description": "Create a new dedicated database with the chosen engine and configuration. Status will be 'provisioning' until the database is ready.", + "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": { - "201": { - "description": "DedicatedDatabase", + "200": { + "description": "Console OAuth2 Providers List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/consoleOAuth2ProviderList" } } } @@ -10061,15 +10279,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDatabase", - "group": "databases", + "method": "listOAuth2Providers", + "group": "console", "cookies": false, "type": "", - "demo": "compute\/create-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" ], @@ -10083,229 +10301,94 @@ { "Project": [] } + ] + } + }, + "\/console\/plans": { + "get": { + "summary": "Get plans", + "operationId": "consoleGetPlans", + "tags": [ + "console" ], - "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": "", - "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": { - "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" - ] + "description": "Return a list of all available plans.", + "responses": { + "200": { + "description": "Billing plan list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/billingPlanList" + } } } } - } + }, + "deprecated": false, + "x-appwrite": { + "method": "getPlans", + "group": null, + "cookies": false, + "type": "", + "demo": "console\/get-plans.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\/get-plans.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "platform", + "description": "Platform type", + "required": false, + "schema": { + "type": "string", + "x-example": "appwrite", + "enum": [ + "appwrite", + "imagine" + ], + "x-enum-name": "Platform", + "x-enum-keys": [ + "appwrite", + "imagine" + ], + "default": "appwrite" + }, + "in": "query" + } + ] } }, - "\/compute\/databases\/specifications": { + "\/console\/plans\/{planId}": { "get": { - "summary": "List dedicated database specifications.", - "operationId": "computeListDatabaseSpecifications", + "summary": "Get plan", + "operationId": "consoleGetPlan", "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": "Get the details of a plan using its plan ID.", "responses": { "200": { - "description": "SpecificationList", + "description": "billingPlan", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseSpecificationList" + "$ref": "#\/components\/schemas\/billingPlan" } } } @@ -10313,20 +10396,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseSpecifications", - "group": "databases", + "method": "getPlan", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-database-specifications.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": [] } @@ -10335,24 +10419,36 @@ { "Project": [] } + ], + "parameters": [ + { + "name": "planId", + "description": "Plan id", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } ] } }, - "\/compute\/databases\/{databaseId}": { + "\/console\/postgres-extensions": { "get": { - "summary": "Get dedicated database.", - "operationId": "computeGetDatabase", + "summary": "List Postgres extensions", + "operationId": "consoleListPostgresExtensions", "tags": [ - "compute" + "console" ], - "description": "Get a dedicated database by its unique ID. Returns the database configuration and current status.", + "description": "Get the catalog of Postgres extensions that can be installed on a dedicated Postgres database.\n", "responses": { "200": { - "description": "DedicatedDatabase", + "description": "Postgres extensions list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/postgresExtensionList" } } } @@ -10360,20 +10456,69 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDatabase", - "group": "databases", + "method": "listPostgresExtensions", + "group": null, + "cookies": false, + "type": "", + "demo": "console\/list-postgres-extensions.md", + "rate-limit": 100, + "rate-time": 3600, + "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": [] + } + }, + "security": [ + { + "Project": [] + } + ] + } + }, + "\/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" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getProgram", + "group": null, "cookies": false, "type": "", - "demo": "compute\/get-database.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": [] } @@ -10385,31 +10530,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" } ] - }, - "patch": { - "summary": "Update dedicated database.", - "operationId": "computeUpdateDatabase", + } + }, + "\/console\/programs\/{programId}\/memberships": { + "post": { + "summary": "Create program membership", + "operationId": "consoleCreateProgramMembership", "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": "Create a new membership for an account to a program.", "responses": { "200": { - "description": "DedicatedDatabase", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/organization" } } } @@ -10417,20 +10564,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateDatabase", - "group": "databases", + "method": "createProgramMembership", + "group": null, "cookies": false, "type": "", - "demo": "compute\/update-database.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": [] } @@ -10442,261 +10590,55 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "programId", + "description": "ID of the program", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } + ] + } + }, + "\/console\/regions": { + "get": { + "summary": "List Regions", + "operationId": "consoleListRegions", + "tags": [ + "console" ], - "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": "Get all available regions for the console.", + "responses": { + "200": { + "description": "Regions list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/consoleRegionList" } } } } - } - }, - "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": "listRegions", + "group": null, "cookies": false, "type": "", - "demo": "compute\/delete-database.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, - "produces": [ - "application\/json" - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/list-regions.md", "auth": { "Project": [] } @@ -10705,52 +10647,33 @@ { "Project": [] } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } ] } }, - "\/compute\/databases\/{databaseId}\/backups": { + "\/console\/resources": { "get": { - "summary": "List database backups.", - "operationId": "computeListDatabaseBackups", + "summary": "Check resource ID availability", + "operationId": "consoleGetResource", "tags": [ - "compute" + "console" ], - "description": "List all backups for a dedicated database. Results can be filtered by status and type.", + "description": "Check if a resource ID is available.", "responses": { - "200": { - "description": "BackupList", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupList" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseBackups", - "group": "databases", + "method": "getResource", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-database-backups.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" ], @@ -10767,44 +10690,50 @@ ], "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": "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, + "name": "type", + "description": "Resource type.", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "type": "string", + "x-example": "rules", + "enum": [ + "rules" + ], + "x-enum-name": "ConsoleResourceType", + "x-enum-keys": [ + "rules" + ] }, "in": "query" } ] - }, - "post": { - "summary": "Create a database backup.", - "operationId": "computeCreateDatabaseBackup", + } + }, + "\/console\/scopes\/organization": { + "get": { + "summary": "List organization scopes", + "operationId": "consoleListOrganizationScopes", "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": "List all scopes available for organization API keys, along with a description for each scope.", "responses": { - "202": { - "description": "Backup", + "200": { + "description": "Console Key Scopes List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" + "$ref": "#\/components\/schemas\/consoleKeyScopeList" } } } @@ -10812,15 +10741,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDatabaseBackup", - "group": "databases", + "method": "listOrganizationScopes", + "group": "console", "cookies": false, "type": "", - "demo": "compute\/create-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" ], @@ -10834,53 +10763,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\/scopes\/project": { "get": { - "summary": "List database backup policies.", - "operationId": "computeListDatabaseBackupPolicies", + "summary": "List project scopes", + "operationId": "consoleListProjectScopes", "tags": [ - "compute" + "console" ], - "description": "List scheduled backup policies for a dedicated database.", + "description": "List all scopes available for project API keys, along with a description for each scope.", "responses": { "200": { - "description": "Backup policy list", + "description": "Console Key Scopes List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/backupPolicyList" + "$ref": "#\/components\/schemas\/consoleKeyScopeList" } } } @@ -10888,15 +10788,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseBackupPolicies", - "group": "databases", + "method": "listProjectScopes", + "group": "console", "cookies": false, "type": "", - "demo": "compute\/list-database-backup-policies.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" ], @@ -10910,47 +10810,24 @@ { "Project": [] } - ], - "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.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - } ] - }, + } + }, + "\/console\/sources": { "post": { - "summary": "Create a database backup policy.", - "operationId": "computeCreateDatabaseBackupPolicy", + "summary": "Create source", + "operationId": "consoleCreateSource", "tags": [ - "compute" + "console" ], - "description": "Create a scheduled backup policy for a dedicated database.", + "description": "Create a new source.", "responses": { "201": { - "description": "backup", + "description": "Any", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/backupPolicy" + "$ref": "#\/components\/schemas\/any" } } } @@ -10958,20 +10835,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDatabaseBackupPolicy", - "group": "databases", + "method": "createSource", + "group": null, "cookies": false, "type": "", - "demo": "compute\/create-database-backup-policy.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": [] } @@ -10981,88 +10859,65 @@ "Project": [] } ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "policyId": { + "ref": { "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" - } + "description": "Ref param", + "x-example": "", + "x-nullable": true }, - "name": { + "referrer": { "type": "string", - "description": "Policy name. Max length: 128 chars.", - "x-example": "" + "description": "Referrer", + "x-example": "https:\/\/example.com", + "format": "url", + "x-nullable": true }, - "schedule": { + "utmSource": { "type": "string", - "description": "Schedule CRON syntax.", - "x-example": null - }, - "retention": { - "type": "integer", - "description": "Days to keep backups before deletion.", - "x-example": 1, - "format": "int32" + "description": "Utm source", + "x-example": "", + "x-nullable": true }, - "type": { + "utmCampaign": { "type": "string", - "description": "Backup type: full or incremental.", - "default": "full", - "x-example": "full" + "description": "Utm campaign", + "x-example": "", + "x-nullable": true }, - "enabled": { - "type": "boolean", - "description": "Is policy enabled? When disabled, no backups will be taken.", - "default": true, - "x-example": false + "utmMedium": { + "type": "string", + "description": "Utm medium", + "x-example": "", + "x-nullable": true } - }, - "required": [ - "policyId", - "name", - "schedule", - "retention" - ] + } } } } } } }, - "\/compute\/databases\/{databaseId}\/backups\/storage": { - "put": { - "summary": "Update database backup storage.", - "operationId": "computeUpdateDatabaseBackupStorage", + "\/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": "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": "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": { "200": { - "description": "BackupStorageConfig", + "description": "Columns List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupStorage" + "$ref": "#\/components\/schemas\/columnList" } } } @@ -11070,20 +10925,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateDatabaseBackupStorage", - "group": "databases", + "method": "suggestColumns", + "group": null, "cookies": false, "type": "", - "demo": "compute\/update-database-backup-storage.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": [] } @@ -11102,81 +10958,70 @@ "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" - ] - } - } + "in": "query" + }, + { + "name": "tableId", + "description": "Table ID.", + "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 + }, + "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}\/backups\/{backupId}": { + "\/console\/suggestions\/indexes": { "get": { - "summary": "Get a database backup.", - "operationId": "computeGetDatabaseBackup", + "summary": "Get index suggestions for table columns, using database context", + "operationId": "consoleSuggestIndexes", "tags": [ - "compute" + "console" ], - "description": "Get details of a specific database backup including its status, size, and timestamps.", + "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": "Backup", + "description": "Column Indexes List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" + "$ref": "#\/components\/schemas\/columnIndexList" } } } @@ -11184,12 +11029,12 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDatabaseBackup", - "group": "databases", + "method": "suggestIndexes", + "group": null, "cookies": false, "type": "", - "demo": "compute\/get-database-backup.md", - "rate-limit": 0, + "demo": "console\/suggest-indexes.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "databases.read", @@ -11198,6 +11043,7 @@ ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/suggest-indexes.md", "auth": { "Project": [] } @@ -11216,99 +11062,60 @@ "type": "string", "x-example": "" }, - "in": "path" + "in": "query" }, { - "name": "backupId", - "description": "Backup ID.", + "name": "tableId", + "description": "Table ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "path" - } - ] - }, - "delete": { - "summary": "Delete a database backup.", - "operationId": "computeDeleteDatabaseBackup", - "tags": [ - "compute" - ], - "description": "Delete a database backup. This will permanently remove the backup from storage and cannot be undone.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteDatabaseBackup", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/delete-database-backup.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": "backupId", - "description": "Backup 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}\/branches": { + "\/console\/suggestions\/queries": { "get": { - "summary": "List database branches.", - "operationId": "computeListDatabaseBranches", + "summary": "Get query suggestions for a list resource from free-text intent", + "operationId": "consoleSuggestQueries", "tags": [ - "compute" + "console" ], - "description": "List all ephemeral branches for a dedicated database. Returns branch metadata including ID, name, namespace, and expiration time.", + "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": "BranchList", + "description": "Any", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseBranchList" + "$ref": "#\/components\/schemas\/any" } } } @@ -11316,12 +11123,12 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseBranches", - "group": "databases", + "method": "suggestQueries", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-database-branches.md", - "rate-limit": 0, + "demo": "console\/suggest-queries.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "databases.read", @@ -11330,6 +11137,7 @@ ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/suggest-queries.md", "auth": { "Project": [] } @@ -11341,186 +11149,244 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "resource", + "description": "Resource to generate queries for.", "required": true, "schema": { "type": "string", - "x-example": "" + "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", + "notifications", + "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", + "migrationdatabases", + "migrationprojects", + "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", + "notifications", + "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", + "migration_databases", + "migration_projects", + "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": "path" - } - ] - }, - "post": { - "summary": "Create a database branch.", - "operationId": "computeCreateDatabaseBranch", - "tags": [ - "compute" - ], - "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" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createDatabaseBranch", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/create-database-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": [] - } - ], - "parameters": [ + "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" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "branchId": { - "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" - } - }, - "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" - } - } - } - } - } - } - } - }, - "\/compute\/databases\/{databaseId}\/branches\/{branchId}": { - "delete": { - "summary": "Delete a database branch.", - "operationId": "computeDeleteDatabaseBranch", - "tags": [ - "compute" - ], - "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": { - "202": { - "description": "DedicatedDatabase", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteDatabaseBranch", - "group": "databases", - "cookies": false, - "type": "", - "demo": "compute\/delete-database-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": [] - } - ], - "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" + "in": "query" }, { - "name": "branchId", - "description": "Branch ID.", - "required": true, + "name": "tableId", + "description": "Table ID. Required when resource is `rows`.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "path" + "in": "query" } ] } }, - "\/compute\/databases\/{databaseId}\/connections": { + "\/console\/templates\/email\/{templateId}": { "get": { - "summary": "List database connections.", - "operationId": "computeListDatabaseConnections", + "summary": "Get email template", + "operationId": "consoleGetEmailTemplate", "tags": [ - "compute" + "console" ], - "description": "List all database connection users\/roles for a dedicated 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": "Dedicated database connections list", + "description": "EmailTemplate", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseConnectionList" + "$ref": "#\/components\/schemas\/emailTemplate" } } } @@ -11528,15 +11394,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDatabaseConnections", - "group": "databases", + "method": "getEmailTemplate", + "group": null, "cookies": false, "type": "", - "demo": "compute\/list-database-connections.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" ], @@ -11553,180 +11419,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": "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": [ + }, { - "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": { - "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": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "connectionId", - "description": "Connection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" + "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": "path" + "in": "query" } ] } }, - "\/compute\/databases\/{databaseId}\/credentials": { + "\/console\/variables": { "get": { - "summary": "Get database credentials.", - "operationId": "computeGetDatabaseCredentials", + "summary": "Get variables", + "operationId": "consoleVariables", "tags": [ - "compute" + "console" ], - "description": "Get connection credentials for a dedicated database. Returns the hostname, port, username, password, database name, and full connection string.", + "description": "Get all Environment Variables that are relevant for the console.", "responses": { "200": { - "description": "Credentials", + "description": "Console Variables", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" + "$ref": "#\/components\/schemas\/consoleVariables" } } } @@ -11734,15 +11749,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDatabaseCredentials", - "group": "databases", + "method": "variables", + "group": "console", "cookies": false, "type": "", - "demo": "compute\/get-database-credentials.md", + "demo": "console\/variables.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "projects.read", "platforms": [ "console" ], @@ -11756,133 +11771,209 @@ { "Project": [] } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } ] - }, - "patch": { - "summary": "Update database credentials.", - "operationId": "computeUpdateDatabaseCredentials", + } + }, + "\/databases": { + "get": { + "summary": "List databases", + "operationId": "databasesList", "tags": [ - "compute" + "databases" ], - "description": "Rotate the primary credentials for a dedicated database. Generates a new password and updates the database. Previous credentials will stop working immediately.", + "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": "Credentials", + "description": "Databases List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseCredentials" + "$ref": "#\/components\/schemas\/databaseList" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "updateDatabaseCredentials", + "method": "list", "group": "databases", "cookies": false, "type": "", - "demo": "compute\/update-database-credentials.md", + "demo": "databases\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "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}\/executions": { + }, "post": { - "summary": "Execute a SQL statement against a dedicated database.", - "operationId": "computeCreateDatabaseExecution", + "summary": "Create database", + "operationId": "databasesCreate", "tags": [ - "compute" + "databases" ], - "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.", + "description": "Create a new Database.\n", "responses": { - "200": { - "description": "Execution", + "201": { + "description": "Database", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseExecution" + "$ref": "#\/components\/schemas\/database" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseExecution", + "method": "create", "group": "databases", "cookies": false, "type": "", - "demo": "compute\/create-database-execution.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": { @@ -11891,28 +11982,29 @@ "schema": { "type": "object", "properties": { - "sql": { + "databaseId": { "type": "string", - "description": "SQL statement to execute. Exactly one statement per request.", - "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" + } }, - "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 + "name": { + "type": "string", + "description": "Database name. Max length: 128 chars.", + "x-example": "" }, - "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 + "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": [ - "sql" + "databaseId", + "name" ] } } @@ -11920,61 +12012,129 @@ } } }, - "\/compute\/databases\/{databaseId}\/explanation": { - "post": { - "summary": "Explain query execution plan.", - "operationId": "computeCreateDatabaseQueryExplanation", + "\/databases\/transactions": { + "get": { + "summary": "List transactions", + "operationId": "databasesListTransactions", "tags": [ - "compute" + "databases" ], - "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.", + "description": "List transactions across all databases.", "responses": { "200": { - "description": "QueryExplanation", + "description": "Transaction List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseQueryExplanation" + "$ref": "#\/components\/schemas\/transactionList" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseQueryExplanation", - "group": "databases", + "method": "listTransactions", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/create-database-query-explanation.md", + "demo": "databases\/list-transactions.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\/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" + "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" + }, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [], + "Session": [], + "JWT": [] } ], "requestBody": { @@ -11983,137 +12143,150 @@ "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 + "ttl": { + "type": "integer", + "description": "Seconds before the transaction expires.", + "default": 300, + "x-example": 60, + "format": "int32" } - }, - "required": [ - "query" - ] + } } } } } } }, - "\/compute\/databases\/{databaseId}\/extensions": { + "\/databases\/transactions\/{transactionId}": { "get": { - "summary": "List database extensions.", - "operationId": "computeListDatabaseExtensions", + "summary": "Get transaction", + "operationId": "databasesGetTransaction", "tags": [ - "compute" + "databases" ], - "description": "List installed and available extensions for a PostgreSQL database.", + "description": "Get a transaction by its unique ID.", "responses": { "200": { - "description": "Extensions", + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseExtensions" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listDatabaseExtensions", - "group": "databases", + "method": "getTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/list-database-extensions.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" } ] }, - "post": { - "summary": "Install a database extension.", - "operationId": "computeCreateDatabaseExtension", + "patch": { + "summary": "Update transaction", + "operationId": "databasesUpdateTransaction", "tags": [ - "compute" + "databases" ], - "description": "Install a database extension. Only available for PostgreSQL databases. The install runs asynchronously; poll the extensions list endpoint for status.", + "description": "Update a transaction, to either commit or roll back its operations.", "responses": { - "202": { - "description": "DedicatedDatabase", + "200": { + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseExtension", - "group": "databases", + "method": "updateTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/create-database-extension.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" } @@ -12124,185 +12297,242 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Extension name (e.g., pgvector, postgis, uuid-ossp).", - "x-example": "" + "commit": { + "type": "boolean", + "description": "Commit transaction?", + "default": false, + "x-example": false + }, + "rollback": { + "type": "boolean", + "description": "Rollback transaction?", + "default": false, + "x-example": false } - }, - "required": [ - "name" - ] + } } } } } - } - }, - "\/compute\/databases\/{databaseId}\/extensions\/{extensionName}": { + }, "delete": { - "summary": "Uninstall a database extension.", - "operationId": "computeDeleteDatabaseExtension", + "summary": "Delete transaction", + "operationId": "databasesDeleteTransaction", "tags": [ - "compute" + "databases" ], - "description": "Uninstall a database extension from a PostgreSQL database. The uninstall runs asynchronously; poll the extensions list endpoint for status.", + "description": "Delete a transaction by its unique ID.", "responses": { - "202": { - "description": "DedicatedDatabase", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "deleteDatabaseExtension", - "group": "databases", + "method": "deleteTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/delete-database-extension.md", + "demo": "databases\/delete-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\/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.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "extensionName", - "description": "Extension name to uninstall.", + "name": "transactionId", + "description": "Transaction ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } ] } }, - "\/compute\/databases\/{databaseId}\/ha": { - "get": { - "summary": "Get HA status.", - "operationId": "computeGetDatabaseHAStatus", + "\/databases\/transactions\/{transactionId}\/operations": { + "post": { + "summary": "Create operations", + "operationId": "databasesCreateOperations", "tags": [ - "compute" + "databases" ], - "description": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", + "description": "Create multiple operations in a single transaction.", "responses": { - "200": { - "description": "HAStatus", + "201": { + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseHAStatus" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDatabaseHAStatus", - "group": "databases", + "method": "createOperations", + "group": "transactions", "cookies": false, "type": "", - "demo": "compute\/get-database-ha-status.md", + "demo": "databases\/create-operations.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\/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" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "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" + } + } + } + } + } + } + } } }, - "\/compute\/databases\/{databaseId}\/ha\/failovers": { - "post": { - "summary": "Trigger manual failover.", - "operationId": "computeCreateDatabaseFailover", + "\/databases\/usage": { + "get": { + "summary": "Get databases usage stats", + "operationId": "databasesListUsage", "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": "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": { - "202": { - "description": "DedicatedDatabase", + "200": { + "description": "UsageDatabases", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/usageDatabases" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseFailover", - "group": "databases", + "method": "listUsage", + "group": null, "cookies": false, "type": "", - "demo": "compute\/create-database-failover.md", + "demo": "databases\/list-usage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "collections.read", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-usage.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.listUsage" + }, + "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": [] } @@ -12314,84 +12544,115 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", - "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": { - "targetReplicaId": { - "type": "string", - "description": "Target replica ID to promote. If not specified, the healthiest replica is selected.", - "x-example": "", - "x-nullable": true - } - } - } - } + "in": "query" } - } + ] } }, - "\/compute\/databases\/{databaseId}\/maintenance": { - "patch": { - "summary": "Update database maintenance window.", - "operationId": "computeUpdateDatabaseMaintenanceWindow", + "\/databases\/{databaseId}": { + "get": { + "summary": "Get database", + "operationId": "databasesGet", "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": "Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.", "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": "updateDatabaseMaintenanceWindow", + "method": "get", "group": "databases", "cookies": false, "type": "", - "demo": "compute\/update-database-maintenance-window.md", + "demo": "databases\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "databases.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", + "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": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", @@ -12399,78 +12660,88 @@ }, "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" - ] - } - } - } - } - } - }, - "\/compute\/databases\/{databaseId}\/migrations": { - "post": { - "summary": "Migrate database between shared and dedicated.", - "operationId": "computeCreateDatabaseMigration", + ] + }, + "put": { + "summary": "Update database", + "operationId": "databasesUpdate", "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": "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": "createDatabaseMigration", + "method": "update", "group": "databases", "cookies": false, "type": "", - "demo": "compute\/create-database-migration.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": [ @@ -12491,70 +12762,93 @@ "schema": { "type": "object", "properties": { - "targetType": { + "name": { "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" + "description": "Database name. Max length: 128 chars.", + "x-example": "" }, - "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 + "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": [ - "targetType" - ] + } } } } } - } - }, - "\/compute\/databases\/{databaseId}\/pitr": { - "get": { - "summary": "Get PITR recovery windows.", - "operationId": "computeGetDatabasePITRWindows", + }, + "delete": { + "summary": "Delete database", + "operationId": "databasesDelete", "tags": [ - "compute" + "databases" ], - "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", + "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", "responses": { - "200": { - "description": "PITRWindows", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDatabasePITRWindows", + "method": "delete", "group": "databases", "cookies": false, "type": "", - "demo": "compute\/get-database-pitr-windows.md", + "demo": "databases\/delete.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "databases.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "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": [] } ], "parameters": [ @@ -12571,49 +12865,56 @@ ] } }, - "\/compute\/databases\/{databaseId}\/pooler": { + "\/databases\/{databaseId}\/collections": { "get": { - "summary": "Get connection pooler configuration.", - "operationId": "computeGetDatabasePooler", + "summary": "List collections", + "operationId": "databasesListCollections", "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 list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.", "responses": { "200": { - "description": "PoolerConfig", + "description": "Collections List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" + "$ref": "#\/components\/schemas\/collectionList" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDatabasePooler", - "group": "databases", + "method": "listCollections", + "group": "collections", "cookies": false, "type": "", - "demo": "compute\/get-database-pooler.md", + "demo": "databases\/list-collections.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "collections.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "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": [ @@ -12626,51 +12927,93 @@ "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" } ] }, - "patch": { - "summary": "Update connection pooler configuration.", - "operationId": "computeUpdateDatabasePooler", + "post": { + "summary": "Create collections", + "operationId": "databasesCreateCollection", "tags": [ - "compute" + "databases" ], - "description": "Update the connection pooler configuration for a dedicated database. Configure pool mode, max connections, and pool sizes.", + "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": { - "200": { - "description": "PoolerConfig", + "201": { + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "updateDatabasePooler", - "group": "databases", + "method": "createCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "compute\/update-database-pooler.md", + "demo": "databases\/create-collection.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "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": [ @@ -12691,106 +13034,119 @@ "schema": { "type": "object", "properties": { - "mode": { + "collectionId": { "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 + "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" + } }, - "maxConnections": { - "type": "integer", - "description": "Maximum pooled connections.", - "x-example": 10, - "format": "int32", - "x-nullable": true + "name": { + "type": "string", + "description": "Collection name. Max length: 128 chars.", + "x-example": "" }, - "defaultPoolSize": { - "type": "integer", - "description": "Default pool size per user.", - "x-example": 1, - "format": "int32", + "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 }, - "readWriteSplitting": { + "documentSecurity": { "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 + "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 }, - "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 + "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 }, - "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 + "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" + } }, - "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 + "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" + ] } } } } } }, - "\/compute\/databases\/{databaseId}\/restorations": { + "\/databases\/{databaseId}\/collections\/{collectionId}": { "get": { - "summary": "List database restorations.", - "operationId": "computeListDatabaseRestorations", + "summary": "Get collection", + "operationId": "databasesGetCollection", "tags": [ - "compute" + "databases" ], - "description": "List all restorations for a dedicated database. Results can be filtered by status and type.", + "description": "Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.", "responses": { "200": { - "description": "Dedicated database restorations list", + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseRestorationList" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listDatabaseRestorations", - "group": "databases", + "method": "getCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "compute\/list-database-restorations.md", + "demo": "databases\/get-collection.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "collections.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "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": [ @@ -12805,93 +13161,66 @@ "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, + "name": "collectionId", + "description": "Collection ID.", + "required": true, "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 + "x-example": "" }, - "in": "query" + "in": "path" } ] }, - "post": { - "summary": "Create a database restoration.", - "operationId": "computeCreateDatabaseRestoration", + "put": { + "summary": "Update collection", + "operationId": "databasesUpdateCollection", "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": "Update a collection by its unique ID.", "responses": { - "202": { - "description": "Restoration", + "200": { + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseRestoration", - "group": "databases", + "method": "updateCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "compute\/create-database-restoration.md", + "demo": "databases\/update-collection.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "collections.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, - "auth": { - "Project": [] - } - }, + "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": [ @@ -12904,6 +13233,16 @@ "x-example": "" }, "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } ], "requestBody": { @@ -12912,75 +13251,86 @@ "schema": { "type": "object", "properties": { - "type": { + "name": { "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" + "description": "Collection name. Max length: 128 chars.", + "x-example": "" }, - "backupId": { - "type": "string", - "description": "Backup ID to restore from (required for backup type).", - "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 }, - "targetTime": { - "type": "integer", - "description": "Target time for PITR as Unix timestamp (required for pitr type).", - "x-example": null, - "format": "int32", - "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 } } } } } } - } - }, - "\/compute\/databases\/{databaseId}\/restorations\/{restorationId}": { - "get": { - "summary": "Get a database restoration.", - "operationId": "computeGetDatabaseRestoration", + }, + "delete": { + "summary": "Delete collection", + "operationId": "databasesDeleteCollection", "tags": [ - "compute" + "databases" ], - "description": "Get details of a specific database restoration including its status, type, and timestamps.", + "description": "Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.", "responses": { - "200": { - "description": "Restoration", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDatabaseRestoration", - "group": "databases", + "method": "deleteCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "compute\/get-database-restoration.md", + "demo": "databases\/delete-collection.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\/references\/databases\/delete-collection.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.deleteTable" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -12995,61 +13345,68 @@ "in": "path" }, { - "name": "restorationId", - "description": "Restoration ID.", + "name": "collectionId", + "description": "Collection ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } ] } }, - "\/compute\/databases\/{databaseId}\/slow-queries": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes": { "get": { - "summary": "List slow queries.", - "operationId": "computeListDatabaseQueries", + "summary": "List attributes", + "operationId": "databasesListAttributes", "tags": [ - "compute" + "databases" ], - "description": "List slow queries for a dedicated database. Returns queries that exceeded the specified threshold.", + "description": "List attributes in the collection.", "responses": { "200": { - "description": "Dedicated database slow queries list", + "description": "Attributes List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseSlowQueryList" + "$ref": "#\/components\/schemas\/attributeList" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listDatabaseQueries", - "group": "databases", + "method": "listAttributes", + "group": "attributes", "cookies": false, "type": "", - "demo": "compute\/list-database-queries.md", + "demo": "databases\/list-attributes.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "collections.read", "platforms": [ - "console" + "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": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -13064,75 +13421,92 @@ "in": "path" }, { - "name": "limit", - "description": "Maximum number of queries to return.", + "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": "integer", - "format": "int32", - "x-example": 1, - "default": 100 + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, { - "name": "thresholdMs", - "description": "Minimum query duration in milliseconds.", + "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": 0, - "default": 0 + "type": "boolean", + "x-example": false, + "default": true }, "in": "query" } ] } }, - "\/compute\/databases\/{databaseId}\/status": { - "get": { - "summary": "Get database status.", - "operationId": "computeGetDatabaseStatus", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/bigint": { + "post": { + "summary": "Create bigint attribute", + "operationId": "databasesCreateBigIntAttribute", "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": "Create a bigint attribute. Optionally, minimum and maximum values can be provided.\n", "responses": { - "200": { - "description": "Status", + "202": { + "description": "AttributeBigInt", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/databaseStatus" + "$ref": "#\/components\/schemas\/attributeBigint" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getDatabaseStatus", - "group": "databases", + "method": "createBigIntAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "compute\/get-database-status.md", + "demo": "databases\/create-big-int-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\/references\/databases\/create-bigint-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createBigIntColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -13145,53 +13519,122 @@ "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 + }, + "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" + ] + } + } + } + } } }, - "\/compute\/databases\/{databaseId}\/upgrades": { - "post": { - "summary": "Upgrade database version.", - "operationId": "computeCreateDatabaseUpgrade", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/bigint\/{key}": { + "patch": { + "summary": "Update bigint attribute", + "operationId": "databasesUpdateBigIntAttribute", "tags": [ - "compute" + "databases" ], - "description": "Upgrade a dedicated database to a new engine version. Uses blue-green deployment for zero-downtime cutover.", + "description": "Update a bigint attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "DedicatedDatabase", + "description": "AttributeBigInt", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/attributeBigint" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createDatabaseUpgrade", - "group": "databases", + "method": "updateBigIntAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "compute\/create-database-upgrade.md", + "demo": "databases\/update-big-int-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "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": [ @@ -13204,6 +13647,25 @@ "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": { @@ -13212,14 +13674,42 @@ "schema": { "type": "object", "properties": { - "targetVersion": { + "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": "Target engine version to upgrade to.", - "x-example": "" + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true } }, "required": [ - "targetVersion" + "required", + "default" ] } } @@ -13227,50 +13717,78 @@ } } }, - "\/console\/assistant": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean": { "post": { - "summary": "Create assistant query", - "operationId": "assistantChat", + "summary": "Create boolean attribute", + "operationId": "databasesCreateBooleanAttribute", "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": "Create a boolean attribute.\n", "responses": { - "200": { - "description": "Text", + "202": { + "description": "AttributeBoolean", "content": { - "text\/plain": { + "application\/json": { "schema": { - "type": "string" + "$ref": "#\/components\/schemas\/attributeBoolean" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "chat", - "group": "console", + "method": "createBooleanAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "assistant\/chat.md", - "rate-limit": 15, + "demo": "databases\/create-boolean-attribute.md", + "rate-limit": 0, "rate-time": 3600, - "rate-key": "userId:{userId}", - "scope": "assistant.read", + "rate-key": "url:{url},ip:{ip}", + "scope": "collections.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\/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": { @@ -13279,14 +13797,32 @@ "schema": { "type": "object", "properties": { - "prompt": { + "key": { "type": "string", - "description": "Prompt. A string containing questions asked to the AI assistant.", - "x-example": "" + "description": "Attribute Key.", + "x-example": null + }, + "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 + }, + "array": { + "type": "boolean", + "description": "Is attribute an array?", + "default": false, + "x-example": false } }, "required": [ - "prompt" + "key", + "required" ] } } @@ -13294,678 +13830,907 @@ } } }, - "\/console\/campaigns\/{campaignId}": { - "get": { - "summary": "Get campaign details", - "operationId": "consoleGetCampaign", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}": { + "patch": { + "summary": "Update boolean attribute", + "operationId": "databasesUpdateBooleanAttribute", "tags": [ - "console" + "databases" ], - "description": "Receive the details of a campaign using its ID.", + "description": "Update a boolean attribute. Changing the `default` value will not update already existing documents.", "responses": { - "201": { - "description": "Campaign", + "200": { + "description": "AttributeBoolean", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/campaign" + "$ref": "#\/components\/schemas\/attributeBoolean" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getCampaign", - "group": null, + "method": "updateBooleanAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/get-campaign.md", + "demo": "databases\/update-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\/get-campaign.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": [ { - "name": "campaignId", - "description": "ID of the campaign", + "name": "databaseId", + "description": "Database 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#createCollection).", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" }, "in": "path" } - ] - } - }, - "\/console\/coupons\/{couponId}": { - "get": { - "summary": "Get coupon details", - "operationId": "consoleGetCoupon", + ], + "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" + ] + } + } + } + } + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime": { + "post": { + "summary": "Create datetime attribute", + "operationId": "databasesCreateDatetimeAttribute", "tags": [ - "console" + "databases" ], - "description": "Get the details of a coupon using it's coupon ID.", + "description": "Create a date time attribute according to the ISO 8601 standard.", "responses": { - "201": { - "description": "Coupon", + "202": { + "description": "AttributeDatetime", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/coupon" + "$ref": "#\/components\/schemas\/attributeDatetime" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getCoupon", - "group": null, + "method": "createDatetimeAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/get-coupon.md", - "rate-limit": 50, + "demo": "databases\/create-datetime-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\/get-coupon.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": [ { - "name": "couponId", - "description": "ID of the coupon", + "name": "databaseId", + "description": "Database 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#createCollection).", + "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 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" + ] + } + } + } + } } }, - "\/console\/oauth2-providers": { - "get": { - "summary": "List OAuth2 providers", - "operationId": "consoleListOAuth2Providers", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}": { + "patch": { + "summary": "Update datetime attribute", + "operationId": "databasesUpdateDatetimeAttribute", "tags": [ - "console" + "databases" ], - "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.", + "description": "Update a date time attribute. Changing the `default` value will not update already existing documents.", "responses": { "200": { - "description": "Console OAuth2 Providers List", + "description": "AttributeDatetime", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/consoleOAuth2ProviderList" + "$ref": "#\/components\/schemas\/attributeDatetime" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listOAuth2Providers", - "group": "console", + "method": "updateDatetimeAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/list-o-auth-2-providers.md", + "demo": "databases\/update-datetime-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-datetime-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateDatetimeColumn" + }, "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 + }, + "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" + ] + } + } + } + } } }, - "\/console\/plans": { - "get": { - "summary": "Get plans", - "operationId": "consoleGetPlans", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email": { + "post": { + "summary": "Create email attribute", + "operationId": "databasesCreateEmailAttribute", "tags": [ - "console" + "databases" ], - "description": "Return a list of all available plans.", + "description": "Create an email attribute.\n", "responses": { - "200": { - "description": "Billing plan list", + "202": { + "description": "AttributeEmail", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/billingPlanList" + "$ref": "#\/components\/schemas\/attributeEmail" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getPlans", - "group": null, + "method": "createEmailAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/get-plans.md", + "demo": "databases\/create-email-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\/console\/get-plans.md", + "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": [] + "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" } - ] + ], + "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\/plans\/{planId}": { - "get": { - "summary": "Get plan", - "operationId": "consoleGetPlan", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}": { + "patch": { + "summary": "Update email attribute", + "operationId": "databasesUpdateEmailAttribute", "tags": [ - "console" + "databases" ], - "description": "Get the details of a plan using its plan ID.", + "description": "Update an email attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "billingPlan", + "description": "AttributeEmail", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/billingPlan" + "$ref": "#\/components\/schemas\/attributeEmail" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getPlan", - "group": null, + "method": "updateEmailAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/get-plan.md", + "demo": "databases\/update-email-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\/console\/get-plan.md", + "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": "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" + }, + { + "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\/programs\/{programId}": { - "get": { - "summary": "Get program details", - "operationId": "consoleGetProgram", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum": { + "post": { + "summary": "Create enum attribute", + "operationId": "databasesCreateEnumAttribute", "tags": [ - "console" + "databases" ], - "description": "Receive the details of a program using its ID.", + "description": "Create an enum attribute. The `elements` param acts as a white-list of accepted values for this attribute. \n", "responses": { - "201": { - "description": "Program", + "202": { + "description": "AttributeEnum", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/program" + "$ref": "#\/components\/schemas\/attributeEnum" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getProgram", - "group": null, + "method": "createEnumAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/get-program.md", + "demo": "databases\/create-enum-attribute.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\/create-enum-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createEnumColumn" + }, "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", - "tags": [ - "console" ], - "description": "Create a new membership for an account to a program.", - "responses": { - "200": { - "description": "Organization", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/organization" - } + "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" + ] } } } - }, - "deprecated": false, - "x-appwrite": { - "method": "createProgramMembership", - "group": null, - "cookies": false, - "type": "", - "demo": "console\/create-program-membership.md", - "rate-limit": 10, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "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": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "programId", - "description": "ID of the program", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ] + } } }, - "\/console\/regions": { - "get": { - "summary": "List Regions", - "operationId": "consoleListRegions", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}": { + "patch": { + "summary": "Update enum attribute", + "operationId": "databasesUpdateEnumAttribute", "tags": [ - "console" + "databases" ], - "description": "Get all available regions for the console.", + "description": "Update an enum attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Regions list", + "description": "AttributeEnum", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/consoleRegionList" + "$ref": "#\/components\/schemas\/attributeEnum" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listRegions", - "group": null, + "method": "updateEnumAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/list-regions.md", + "demo": "databases\/update-enum-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\/update-enum-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateEnumColumn" + }, "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" + }, + { + "name": "key", + "description": "Attribute Key.", + "required": true, + "schema": { + "type": "string" + }, + "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": { + "elements": { + "type": "array", + "description": "Updated list 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 + }, + "newKey": { + "type": "string", + "description": "New Attribute Key.", + "x-example": null, + "x-nullable": true + } + }, + "required": [ + "elements", + "required", + "default" + ] } } } - }, - "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\/float": { + "post": { + "summary": "Create float attribute", + "operationId": "databasesCreateFloatAttribute", "tags": [ - "console" + "databases" ], - "description": "List all scopes available for project API keys, along with a description for each scope.", + "description": "Create a float attribute. Optionally, minimum and maximum values can be provided.\n", "responses": { - "200": { - "description": "Console Key Scopes List", + "202": { + "description": "AttributeFloat", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/consoleKeyScopeList" + "$ref": "#\/components\/schemas\/attributeFloat" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "listProjectScopes", - "group": "console", + "method": "createFloatAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/list-project-scopes.md", + "demo": "databases\/create-float-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\/create-float-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createFloatColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } - ] - } - }, - "\/console\/sources": { - "post": { - "summary": "Create source", - "operationId": "consoleCreateSource", - "tags": [ - "console" ], - "description": "Create a new source.", - "responses": { - "201": { - "description": "Any", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/any" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createSource", - "group": null, - "cookies": false, - "type": "", - "demo": "console\/create-source.md", - "rate-limit": 50, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "public", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/console\/create-source.md", - "auth": { - "Project": [] - } - }, - "security": [ + "parameters": [ { - "Project": [] + "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": { @@ -13974,88 +14739,104 @@ "schema": { "type": "object", "properties": { - "ref": { + "key": { "type": "string", - "description": "Ref param", - "x-example": "", - "x-nullable": true + "description": "Attribute Key.", + "x-example": null }, - "referrer": { - "type": "string", - "description": "Referrer", - "x-example": "https:\/\/example.com", - "format": "url", - "x-nullable": true + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false }, - "utmSource": { - "type": "string", - "description": "Utm source", - "x-example": "", + "min": { + "type": "number", + "description": "Minimum value.", + "x-example": null, + "format": "float", "x-nullable": true }, - "utmCampaign": { - "type": "string", - "description": "Utm campaign", - "x-example": "", + "max": { + "type": "number", + "description": "Maximum value.", + "x-example": null, + "format": "float", "x-nullable": true }, - "utmMedium": { - "type": "string", - "description": "Utm medium", - "x-example": "", + "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" + ] } } } } } }, - "\/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\/float\/{key}": { + "patch": { + "summary": "Update float attribute", + "operationId": "databasesUpdateFloatAttribute", "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 float attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Columns List", + "description": "AttributeFloat", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/columnList" + "$ref": "#\/components\/schemas\/attributeFloat" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "suggestColumns", - "group": null, + "method": "updateFloatAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/suggest-columns.md", - "rate-limit": 10, + "demo": "databases\/update-float-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-float-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateFloatColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -14067,99 +14848,127 @@ "type": "string", "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "tableId", - "description": "Table ID.", + "name": "collectionId", + "description": "Collection ID.", "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": "" + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "min", - "description": "Minimum number of suggestions to generate.", - "required": false, + "name": "key", + "description": "Attribute Key.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "x-example": 1, - "default": 3 + "type": "string" }, - "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" + "in": "path" } - ] + ], + "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" + ] + } + } + } + } } }, - "\/console\/suggestions\/indexes": { - "get": { - "summary": "Get index suggestions for table columns, using database context", - "operationId": "consoleSuggestIndexes", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer": { + "post": { + "summary": "Create integer attribute", + "operationId": "databasesCreateIntegerAttribute", "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 an integer attribute. Optionally, minimum and maximum values can be provided.\n", "responses": { - "200": { - "description": "Column Indexes List", + "202": { + "description": "AttributeInteger", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/columnIndexList" + "$ref": "#\/components\/schemas\/attributeInteger" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "suggestIndexes", - "group": null, + "method": "createIntegerAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/suggest-indexes.md", - "rate-limit": 10, + "demo": "databases\/create-integer-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-integer-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createIntegerColumn" + }, "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -14171,727 +14980,450 @@ "type": "string", "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "tableId", - "description": "Table ID.", + "name": "collectionId", + "description": "Collection ID.", "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" } - ] + ], + "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" + ] + } + } + } + } } }, - "\/console\/suggestions\/queries": { - "get": { - "summary": "Get query suggestions for a list resource from free-text intent", - "operationId": "consoleSuggestQueries", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}": { + "patch": { + "summary": "Update integer attribute", + "operationId": "databasesUpdateIntegerAttribute", "tags": [ - "console" + "databases" ], - "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", + "description": "Update an integer attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Any", + "description": "AttributeInteger", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/any" + "$ref": "#\/components\/schemas\/attributeInteger" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "suggestQueries", - "group": null, + "method": "updateIntegerAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/suggest-queries.md", - "rate-limit": 10, + "demo": "databases\/update-integer-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-integer-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateIntegerColumn" + }, "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": "" - }, - "in": "query" - }, - { - "name": "databaseId", - "description": "Database ID. Required when resource is `tables` or `rows`.", - "required": false, - "schema": { - "type": "string", - "x-example": "" + "x-example": "" }, - "in": "query" + "in": "path" }, { - "name": "tableId", - "description": "Table ID. Required when resource is `rows`.", - "required": false, + "name": "key", + "description": "Attribute Key.", + "required": true, "schema": { - "type": "string", - "x-example": "" + "type": "string" }, - "in": "query" + "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\/templates\/email\/{templateId}": { - "get": { - "summary": "Get email template", - "operationId": "consoleGetEmailTemplate", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip": { + "post": { + "summary": "Create IP address attribute", + "operationId": "databasesCreateIpAttribute", "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": "Create IP address attribute.\n", "responses": { - "200": { - "description": "EmailTemplate", + "202": { + "description": "AttributeIP", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/emailTemplate" + "$ref": "#\/components\/schemas\/attributeIp" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getEmailTemplate", - "group": null, + "method": "createIpAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/get-email-template.md", + "demo": "databases\/create-ip-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\/create-ip-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.createIpColumn" + }, "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" } - ] + ], + "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" + ] + } + } + } + } } }, - "\/console\/variables": { - "get": { - "summary": "Get variables", - "operationId": "consoleVariables", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}": { + "patch": { + "summary": "Update IP address attribute", + "operationId": "databasesUpdateIpAttribute", "tags": [ - "console" + "databases" ], - "description": "Get all Environment Variables that are relevant for the console.", + "description": "Update an ip attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Console Variables", + "description": "AttributeIP", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/consoleVariables" + "$ref": "#\/components\/schemas\/attributeIp" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "variables", - "group": "console", + "method": "updateIpAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "console\/variables.md", + "demo": "databases\/update-ip-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\/update-ip-attribute.md", + "deprecated": { + "since": "1.8.0", + "replaceWith": "tablesDB.updateIpColumn" + }, "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 + }, + "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": { - "get": { - "summary": "List databases", - "operationId": "databasesList", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/line": { + "post": { + "summary": "Create line attribute", + "operationId": "databasesCreateLineAttribute", "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": "Create a geometric line attribute.", "responses": { - "200": { - "description": "Databases List", + "202": { + "description": "AttributeLine", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/databaseList" + "$ref": "#\/components\/schemas\/attributeLine" } } } @@ -14899,55 +15431,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "list", - "group": "databases", + "method": "createLineAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/list.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\/list.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-line-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.list" + "replaceWith": "tablesDB.createLineColumn" }, - "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 +15463,24 @@ ], "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, - "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": "", - "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": "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": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "" }, - "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 +15489,33 @@ "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" - } - }, - "name": { + "key": { "type": "string", - "description": "Database name. Max length: 128 chars.", - "x-example": "" + "description": "Attribute Key.", + "x-example": null }, - "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": "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": [ - "databaseId", - "name" + "key", + "required" ] } } @@ -15115,21 +15523,21 @@ } } }, - "\/databases\/transactions": { - "get": { - "summary": "List transactions", - "operationId": "databasesListTransactions", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/line\/{key}": { + "patch": { + "summary": "Update line attribute", + "operationId": "databasesUpdateLineAttribute", "tags": [ "databases" ], - "description": "List transactions across all databases.", + "description": "Update a line attribute. Changing the `default` value will not update already existing documents.", "responses": { "200": { - "description": "Transaction List", + "description": "AttributeLine", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transactionList" + "$ref": "#\/components\/schemas\/attributeLine" } } } @@ -15137,26 +15545,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "listTransactions", - "group": "transactions", + "method": "updateLineAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/list-transactions.md", + "demo": "databases\/update-line-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\/update-line-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.listTransactions" + "replaceWith": "tablesDB.updateLineColumn" }, "auth": { "Project": [] @@ -15165,41 +15572,95 @@ "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" + "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": { + "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, 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" + ] + } + } + } + } + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/longtext": { "post": { - "summary": "Create transaction", - "operationId": "databasesCreateTransaction", + "summary": "Create longtext attribute", + "operationId": "databasesCreateLongtextAttribute", "tags": [ "databases" ], - "description": "Create a new transaction.", + "description": "Create a longtext attribute.\n", "responses": { - "201": { - "description": "Transaction", + "202": { + "description": "AttributeLongtext", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/attributeLongtext" } } } @@ -15207,26 +15668,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "createTransaction", - "group": "transactions", + "method": "createLongtextAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-transaction.md", + "demo": "databases\/create-longtext-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-transaction.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-longtext-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createTransaction" + "replaceWith": "tablesDB.createLongtextColumn" }, "auth": { "Project": [] @@ -15235,9 +15695,29 @@ "security": [ { "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "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": { @@ -15246,35 +15726,60 @@ "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 + }, + "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\/transactions\/{transactionId}": { - "get": { - "summary": "Get transaction", - "operationId": "databasesGetTransaction", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/longtext\/{key}": { + "patch": { + "summary": "Update longtext attribute", + "operationId": "databasesUpdateLongtextAttribute", "tags": [ "databases" ], - "description": "Get a transaction by its unique ID.", + "description": "Update a longtext attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Transaction", + "description": "AttributeLongtext", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/attributeLongtext" } } } @@ -15282,26 +15787,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "getTransaction", - "group": "transactions", + "method": "updateLongtextAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/get-transaction.md", + "demo": "databases\/update-longtext-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-longtext-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.getTransaction" + "replaceWith": "tablesDB.updateLongtextColumn" }, "auth": { "Project": [] @@ -15310,38 +15814,89 @@ "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. 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" } - ] - }, - "patch": { - "summary": "Update transaction", - "operationId": "databasesUpdateTransaction", + ], + "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", "tags": [ "databases" ], - "description": "Update a transaction, to either commit or roll back its operations.", + "description": "Create a mediumtext attribute.\n", "responses": { - "200": { - "description": "Transaction", + "202": { + "description": "AttributeMediumtext", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/attributeMediumtext" } } } @@ -15349,26 +15904,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateTransaction", - "group": "transactions", + "method": "createMediumtextAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-transaction.md", + "demo": "databases\/create-mediumtext-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-mediumtext-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateTransaction" + "replaceWith": "tablesDB.createMediumtextColumn" }, "auth": { "Project": [] @@ -15377,19 +15931,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. 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" } @@ -15400,58 +15962,86 @@ "schema": { "type": "object", "properties": { - "commit": { + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { "type": "boolean", - "description": "Commit transaction?", + "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 }, - "rollback": { + "encrypt": { "type": "boolean", - "description": "Rollback transaction?", + "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" + ] } } } } - }, - "delete": { - "summary": "Delete transaction", - "operationId": "databasesDeleteTransaction", + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/mediumtext\/{key}": { + "patch": { + "summary": "Update mediumtext attribute", + "operationId": "databasesUpdateMediumtextAttribute", "tags": [ "databases" ], - "description": "Delete a transaction by its unique ID.", + "description": "Update a mediumtext attribute. Changing the `default` value will not update already existing documents.\n", "responses": { - "204": { - "description": "No content" + "200": { + "description": "AttributeMediumtext", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/attributeMediumtext" + } + } + } } }, "deprecated": true, "x-appwrite": { - "method": "deleteTransaction", - "group": "transactions", + "method": "updateMediumtextAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/delete-transaction.md", + "demo": "databases\/update-mediumtext-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-mediumtext-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.deleteTransaction" + "replaceWith": "tablesDB.updateMediumtextColumn" }, "auth": { "Project": [] @@ -15460,40 +16050,89 @@ "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. 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" } - ] + ], + "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\/transactions\/{transactionId}\/operations": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/point": { "post": { - "summary": "Create operations", - "operationId": "databasesCreateOperations", + "summary": "Create point attribute", + "operationId": "databasesCreatePointAttribute", "tags": [ "databases" ], - "description": "Create multiple operations in a single transaction.", + "description": "Create a geometric point attribute.", "responses": { - "201": { - "description": "Transaction", + "202": { + "description": "AttributePoint", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/attributePoint" } } } @@ -15501,26 +16140,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "createOperations", - "group": "transactions", + "method": "createPointAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-operations.md", + "demo": "databases\/create-point-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-point-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createOperations" + "replaceWith": "tablesDB.createPointColumn" }, "auth": { "Project": [] @@ -15529,19 +16167,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. 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" } @@ -15552,37 +16198,52 @@ "schema": { "type": "object", "properties": { - "operations": { + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null + }, + "required": { + "type": "boolean", + "description": "Is attribute required?", + "x-example": false + }, + "default": { "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]", + "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": "object" - } + "type": "number", + "format": "double" + }, + "x-nullable": true } - } + }, + "required": [ + "key", + "required" + ] } } } } } }, - "\/databases\/usage": { - "get": { - "summary": "Get databases usage stats", - "operationId": "databasesListUsage", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/point\/{key}": { + "patch": { + "summary": "Update point attribute", + "operationId": "databasesUpdatePointAttribute", "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 a point attribute. Changing the `default` value will not update already existing documents.", "responses": { "200": { - "description": "UsageDatabases", + "description": "AttributePoint", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageDatabases" + "$ref": "#\/components\/schemas\/attributePoint" } } } @@ -15590,102 +16251,119 @@ }, "deprecated": true, "x-appwrite": { - "method": "listUsage", - "group": null, + "method": "updatePointAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/list-usage.md", + "demo": "databases\/update-point-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-point-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.listUsage" + "replaceWith": "tablesDB.updatePointColumn" }, - "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. 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": { + "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" + ] + } + } + } + } } }, - "\/databases\/{databaseId}": { - "get": { - "summary": "Get database", - "operationId": "databasesGet", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/polygon": { + "post": { + "summary": "Create polygon attribute", + "operationId": "databasesCreatePolygonAttribute", "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 polygon attribute.", "responses": { - "200": { - "description": "Database", + "202": { + "description": "AttributePolygon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/database" + "$ref": "#\/components\/schemas\/attributePolygon" } } } @@ -15693,55 +16371,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "get", - "group": "databases", + "method": "createPolygonAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/get.md", + "demo": "databases\/create-polygon-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-polygon-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.get" + "replaceWith": "tablesDB.createPolygonColumn" }, - "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 +16411,76 @@ "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, 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 + } + }, + "required": [ + "key", + "required" + ] + } + } + } + } + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/polygon\/{key}": { + "patch": { + "summary": "Update polygon attribute", + "operationId": "databasesUpdatePolygonAttribute", "tags": [ "databases" ], - "description": "Update a database by its unique ID.", + "description": "Update a polygon attribute. Changing the `default` value will not update already existing documents.", "responses": { "200": { - "description": "Database", + "description": "AttributePolygon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/database" + "$ref": "#\/components\/schemas\/attributePolygon" } } } @@ -15786,57 +16488,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "update", - "group": "databases", + "method": "updatePolygonAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update.md", + "demo": "databases\/update-polygon-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-polygon-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.update" + "replaceWith": "tablesDB.updatePolygonColumn" }, - "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 +16528,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 +16555,85 @@ "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, 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" + ] } } } } - }, - "delete": { - "summary": "Delete database", - "operationId": "databasesDelete", + } + }, + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship": { + "post": { + "summary": "Create relationship attribute", + "operationId": "databasesCreateRelationshipAttribute", "tags": [ "databases" ], - "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", + "description": "Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n", "responses": { - "204": { - "description": "No content" + "202": { + "description": "AttributeRelationship", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/attributeRelationship" + } + } + } } }, "deprecated": true, "x-appwrite": { - "method": "delete", - "group": "databases", + "method": "createRelationshipAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/delete.md", + "demo": "databases\/create-relationship-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-relationship-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.delete" + "replaceWith": "tablesDB.createRelationshipColumn" }, - "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 +16654,108 @@ "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": { + "relatedCollectionId": { + "type": "string", + "description": "Related Collection ID.", + "x-example": "" + }, + "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 Two Way?", + "default": false, + "x-example": false + }, + "key": { + "type": "string", + "description": "Attribute Key.", + "x-example": null, + "x-nullable": true + }, + "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": [ + "relatedCollectionId", + "type" + ] + } + } + } + } } }, - "\/databases\/{databaseId}\/collections": { - "get": { - "summary": "List collections", - "operationId": "databasesListCollections", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship\/{key}": { + "patch": { + "summary": "Update relationship attribute", + "operationId": "databasesUpdateRelationshipAttribute", "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 relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n", "responses": { "200": { - "description": "Collections List", + "description": "AttributeRelationship", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collectionList" + "$ref": "#\/components\/schemas\/attributeRelationship" } } } @@ -15990,25 +16763,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "listCollections", - "group": "collections", + "method": "updateRelationshipAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/list-collections.md", + "demo": "databases\/update-relationship-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-relationship-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.listTables" + "replaceWith": "tablesDB.updateRelationshipColumn" }, "auth": { "Project": [] @@ -16032,56 +16805,75 @@ "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.", + "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": { + "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 collections", - "operationId": "databasesCreateCollection", + "summary": "Create string attribute", + "operationId": "databasesCreateStringAttribute", "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 string attribute.\n", "responses": { - "201": { - "description": "Collection", + "202": { + "description": "AttributeString", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/attributeString" } } } @@ -16089,11 +16881,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createCollection", - "group": "collections", + "method": "createStringAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-collection.md", + "demo": "databases\/create-string-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16104,10 +16896,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-string-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createTable" + "replaceWith": "tablesDB.createStringColumn" }, "auth": { "Project": [] @@ -16129,6 +16921,16 @@ "x-example": "" }, "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, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } ], "requestBody": { @@ -16137,62 +16939,45 @@ "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": "" + "size": { + "type": "integer", + "description": "Attribute size for text attributes, in number of characters.", + "x-example": 1, + "format": "int32" }, - "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" - }, + "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 }, - "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", + "size", + "required" ] } } @@ -16200,21 +16985,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}": { - "get": { - "summary": "Get collection", - "operationId": "databasesGetCollection", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}": { + "patch": { + "summary": "Update string attribute", + "operationId": "databasesUpdateStringAttribute", "tags": [ "databases" ], - "description": "Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.", + "description": "Update a string attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Collection", + "description": "AttributeString", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/attributeString" } } } @@ -16222,25 +17007,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "getCollection", - "group": "collections", + "method": "updateStringAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/get-collection.md", + "demo": "databases\/update-string-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-string-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.getTable" + "replaceWith": "tablesDB.updateStringColumn" }, "auth": { "Project": [] @@ -16265,30 +17050,80 @@ }, { "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", "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 + }, + "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", "tags": [ "databases" ], - "description": "Update a collection by its unique ID.", + "description": "Create a text attribute.\n", "responses": { - "200": { - "description": "Collection", + "202": { + "description": "AttributeText", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/attributeText" } } } @@ -16296,11 +17131,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateCollection", - "group": "collections", + "method": "createTextAttribute", + "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-collection.md", + "demo": "databases\/create-text-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16311,10 +17146,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-text-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateTable" + "replaceWith": "tablesDB.createTextColumn" }, "auth": { "Project": [] @@ -16339,7 +17174,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,127 +17189,60 @@ "schema": { "type": "object", "properties": { - "name": { + "key": { "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 + "description": "Attribute Key.", + "x-example": null }, - "documentSecurity": { + "required": { "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, + "description": "Is attribute required?", "x-example": false }, - "enabled": { + "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 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": "Is attribute an array?", + "default": false, "x-example": false }, - "purge": { + "encrypt": { "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.", + "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" + ] } } } } - }, - "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": true, - "x-appwrite": { - "method": "deleteCollection", - "group": "collections", - "cookies": false, - "type": "", - "demo": "databases\/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-collection.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.deleteTable" - }, - "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" - } - ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes": { - "get": { - "summary": "List attributes", - "operationId": "databasesListAttributes", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/text\/{key}": { + "patch": { + "summary": "Update text attribute", + "operationId": "databasesUpdateTextAttribute", "tags": [ "databases" ], - "description": "List attributes in the collection.", + "description": "Update a text attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "Attributes List", + "description": "AttributeText", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeList" + "$ref": "#\/components\/schemas\/attributeText" } } } @@ -16482,25 +17250,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "listAttributes", + "method": "updateTextAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/list-attributes.md", + "demo": "databases\/update-text-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-attributes.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-text-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.listColumns" + "replaceWith": "tablesDB.updateTextColumn" }, "auth": { "Project": [] @@ -16525,7 +17293,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", @@ -16534,47 +17302,64 @@ "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, + "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\/bigint": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url": { "post": { - "summary": "Create bigint attribute", - "operationId": "databasesCreateBigIntAttribute", + "summary": "Create URL attribute", + "operationId": "databasesCreateUrlAttribute", "tags": [ "databases" ], - "description": "Create a bigint attribute. Optionally, minimum and maximum values can be provided.\n", + "description": "Create a URL attribute.\n", "responses": { "202": { - "description": "AttributeBigInt", + "description": "AttributeURL", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeBigint" + "$ref": "#\/components\/schemas\/attributeUrl" } } } @@ -16582,11 +17367,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createBigIntAttribute", + "method": "createUrlAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-big-int-attribute.md", + "demo": "databases\/create-url-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16597,10 +17382,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-url-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createBigIntColumn" + "replaceWith": "tablesDB.createUrlColumn" }, "auth": { "Project": [] @@ -16650,25 +17435,11 @@ "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": "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 }, "array": { @@ -16688,21 +17459,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/bigint\/{key}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}": { "patch": { - "summary": "Update bigint attribute", - "operationId": "databasesUpdateBigIntAttribute", + "summary": "Update URL attribute", + "operationId": "databasesUpdateUrlAttribute", "tags": [ "databases" ], - "description": "Update a bigint 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": "AttributeBigInt", + "description": "AttributeURL", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeBigint" + "$ref": "#\/components\/schemas\/attributeUrl" } } } @@ -16710,11 +17481,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateBigIntAttribute", + "method": "updateUrlAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-big-int-attribute.md", + "demo": "databases\/update-url-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16725,10 +17496,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-url-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateBigIntColumn" + "replaceWith": "tablesDB.updateUrlColumn" }, "auth": { "Project": [] @@ -16782,25 +17553,11 @@ "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": "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": { @@ -16820,21 +17577,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/varchar": { "post": { - "summary": "Create boolean attribute", - "operationId": "databasesCreateBooleanAttribute", + "summary": "Create varchar attribute", + "operationId": "databasesCreateVarcharAttribute", "tags": [ "databases" ], - "description": "Create a boolean attribute.\n", + "description": "Create a varchar attribute.\n", "responses": { "202": { - "description": "AttributeBoolean", + "description": "AttributeVarchar", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeBoolean" + "$ref": "#\/components\/schemas\/attributeVarchar" } } } @@ -16842,11 +17599,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createBooleanAttribute", + "method": "createVarcharAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-boolean-attribute.md", + "demo": "databases\/create-varchar-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16857,10 +17614,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-varchar-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createBooleanColumn" + "replaceWith": "tablesDB.createVarcharColumn" }, "auth": { "Project": [] @@ -16905,15 +17662,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 }, "default": { - "type": "boolean", + "type": "string", "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": false, + "x-example": "", "x-nullable": true }, "array": { @@ -16921,10 +17684,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" ] } @@ -16933,21 +17703,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/varchar\/{key}": { "patch": { - "summary": "Update boolean attribute", - "operationId": "databasesUpdateBooleanAttribute", + "summary": "Update varchar attribute", + "operationId": "databasesUpdateVarcharAttribute", "tags": [ "databases" ], - "description": "Update a boolean attribute. Changing the `default` value will not update already existing documents.", + "description": "Update a varchar attribute. Changing the `default` value will not update already existing documents.\n", "responses": { "200": { - "description": "AttributeBoolean", + "description": "AttributeVarchar", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeBoolean" + "$ref": "#\/components\/schemas\/attributeVarchar" } } } @@ -16955,11 +17725,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateBooleanAttribute", + "method": "updateVarcharAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-boolean-attribute.md", + "demo": "databases\/update-varchar-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -16970,10 +17740,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-varchar-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateBooleanColumn" + "replaceWith": "tablesDB.updateVarcharColumn" }, "auth": { "Project": [] @@ -16998,7 +17768,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", @@ -17028,14 +17798,21 @@ "x-example": false }, "default": { - "type": "boolean", + "type": "string", "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": false, + "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.", + "description": "New Attribute Key.", "x-example": null, "x-nullable": true } @@ -17050,21 +17827,103 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime": { - "post": { - "summary": "Create datetime attribute", - "operationId": "databasesCreateDatetimeAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}": { + "get": { + "summary": "Get attribute", + "operationId": "databasesGetAttribute", "tags": [ "databases" ], - "description": "Create a date time attribute according to the ISO 8601 standard.", + "description": "Get attribute by ID.", "responses": { - "202": { - "description": "AttributeDatetime", + "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\/attributeDatetime" + "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" + } + } + } } } } @@ -17072,25 +17931,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "createDatetimeAttribute", + "method": "getAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/create-datetime-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-datetime-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createDatetimeColumn" + "replaceWith": "tablesDB.getColumn" }, "auth": { "Project": [] @@ -17115,82 +17974,44 @@ }, { "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" } + ] + }, + "delete": { + "summary": "Delete attribute", + "operationId": "databasesDeleteAttribute", + "tags": [ + "databases" ], - "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.", + "description": "Deletes an attribute.", "responses": { - "200": { - "description": "AttributeDatetime", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributeDatetime" - } - } - } + "204": { + "description": "No content" } }, "deprecated": true, "x-appwrite": { - "method": "updateDatetimeAttribute", + "method": "deleteAttribute", "group": "attributes", "cookies": false, "type": "", - "demo": "databases\/update-datetime-attribute.md", + "demo": "databases\/delete-attribute.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -17201,10 +18022,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\/delete-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateDatetimeColumn" + "replaceWith": "tablesDB.deleteColumn" }, "auth": { "Project": [] @@ -17246,57 +18067,24 @@ }, "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", + "\/databases\/{databaseId}\/collections\/{collectionId}\/documents": { + "get": { + "summary": "List documents", + "operationId": "databasesListDocuments", "tags": [ "databases" ], - "description": "Create an email 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": "AttributeEmail", + "200": { + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeEmail" + "$ref": "#\/components\/schemas\/documentList" } } } @@ -17304,25 +18092,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "createEmailAttribute", - "group": "attributes", + "method": "listDocuments", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-email-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-email-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createEmailColumn" + "replaceWith": "tablesDB.listRows" }, "auth": { "Project": [] @@ -17331,7 +18120,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -17347,70 +18138,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 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" - ] - } - } - } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}": { - "patch": { - "summary": "Update email attribute", - "operationId": "databasesUpdateEmailAttribute", + ] + }, + "post": { + "summary": "Create document", + "operationId": "databasesCreateDocument", "tags": [ "databases" ], - "description": "Update an email 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": "AttributeEmail", + "201": { + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeEmail" + "$ref": "#\/components\/schemas\/document" } } } @@ -17418,26 +18215,96 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateEmailAttribute", - "group": "attributes", + "method": "createDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-email-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-email-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateEmailColumn" + "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": [] } @@ -17445,7 +18312,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -17461,22 +18330,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": { @@ -17485,50 +18345,65 @@ "schema": { "type": "object", "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { + "documentId": { "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "email@example.com", - "format": "email", + "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\/enum": { - "post": { - "summary": "Create enum attribute", - "operationId": "databasesCreateEnumAttribute", + }, + "put": { + "summary": "Upsert documents", + "operationId": "databasesUpsertDocuments", "tags": [ "databases" ], - "description": "Create an enum attribute. The `elements` param acts as a white-list of accepted values for this attribute. \n", + "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": "AttributeEnum", + "201": { + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeEnum" + "$ref": "#\/components\/schemas\/documentList" } } } @@ -17536,26 +18411,60 @@ }, "deprecated": true, "x-appwrite": { - "method": "createEnumAttribute", - "group": "attributes", + "method": "upsertDocuments", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-enum-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-enum-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/upsert-documents.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createEnumColumn" + "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": [] } @@ -17594,63 +18503,43 @@ "schema": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null - }, - "elements": { + "documents": { "type": "array", - "description": "Array of enum values.", + "description": "Array of document data as JSON objects. May contain partial documents.", "x-example": null, "items": { - "type": "string" + "type": "object" } }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "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 } }, "required": [ - "key", - "elements", - "required" + "documents" ] } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}": { + }, "patch": { - "summary": "Update enum attribute", - "operationId": "databasesUpdateEnumAttribute", + "summary": "Update documents", + "operationId": "databasesUpdateDocuments", "tags": [ "databases" ], - "description": "Update an enum attribute. Changing the `default` value will not update already existing documents.\n", + "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": "AttributeEnum", + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeEnum" + "$ref": "#\/components\/schemas\/documentList" } } } @@ -17658,25 +18547,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateEnumAttribute", - "group": "attributes", + "method": "updateDocuments", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-enum-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-enum-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-documents.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateEnumColumn" + "replaceWith": "tablesDB.updateRows" }, "auth": { "Project": [] @@ -17708,15 +18597,6 @@ "x-example": "" }, "in": "path" - }, - { - "name": "key", - "description": "Attribute Key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" } ], "requestBody": { @@ -17725,58 +18605,47 @@ "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?", - "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": "", - "x-nullable": true + "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" + } }, - "newKey": { + "transactionId": { "type": "string", - "description": "New Attribute Key.", - "x-example": null, + "description": "Transaction ID for staging the operation.", + "x-example": "", "x-nullable": true } - }, - "required": [ - "elements", - "required", - "default" - ] + } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float": { - "post": { - "summary": "Create float attribute", - "operationId": "databasesCreateFloatAttribute", + }, + "delete": { + "summary": "Delete documents", + "operationId": "databasesDeleteDocuments", "tags": [ "databases" ], - "description": "Create a float attribute. Optionally, minimum and maximum values can be provided.\n", + "description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.", "responses": { - "202": { - "description": "AttributeFloat", + "200": { + "description": "Documents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeFloat" + "$ref": "#\/components\/schemas\/documentList" } } } @@ -17784,25 +18653,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "createFloatAttribute", - "group": "attributes", + "method": "deleteDocuments", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-float-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-float-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-documents.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createFloatColumn" + "replaceWith": "tablesDB.deleteRows" }, "auth": { "Project": [] @@ -17827,84 +18696,55 @@ }, { "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 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 - }, - "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\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}": { - "patch": { - "summary": "Update float attribute", - "operationId": "databasesUpdateFloatAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { + "get": { + "summary": "Get document", + "operationId": "databasesGetDocument", "tags": [ "databases" ], - "description": "Update a float 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": "AttributeFloat", + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeFloat" + "$ref": "#\/components\/schemas\/document" } } } @@ -17912,25 +18752,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateFloatAttribute", - "group": "attributes", + "method": "getDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-float-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-float-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateFloatColumn" + "replaceWith": "tablesDB.getRow" }, "auth": { "Project": [] @@ -17939,7 +18780,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -17955,7 +18798,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", @@ -17964,79 +18807,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 - }, - "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", + ] + }, + "put": { + "summary": "Upsert a document", + "operationId": "databasesUpsertDocument", "tags": [ "databases" ], - "description": "Create an integer attribute. Optionally, minimum and maximum values can be provided.\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": "AttributeInteger", + "201": { + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeInteger" + "$ref": "#\/components\/schemas\/document" } } } @@ -18044,26 +18862,63 @@ }, "deprecated": true, "x-appwrite": { - "method": "createIntegerAttribute", - "group": "attributes", + "method": "upsertDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-integer-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-integer-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/upsert-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createIntegerColumn" + "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": [] } @@ -18071,7 +18926,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -18094,6 +18951,19 @@ "x-example": "" }, "in": "path" + }, + { + "name": "documentId", + "description": "Document ID.", + "required": true, + "schema": { + "type": "string", + "x-appwrite": { + "idGenerator": "ID.unique" + }, + "x-example": "" + }, + "in": "path" } ], "requestBody": { @@ -18102,69 +18972,47 @@ "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 + "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}" }, - "max": { - "type": "integer", - "description": "Maximum value", - "x-example": null, - "format": "int64", + "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": { - "type": "integer", - "description": "Default value. Cannot be set when attribute is required.", - "x-example": null, - "format": "int64", + "transactionId": { + "type": "string", + "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 } - }, - "required": [ - "key", - "required" - ] + } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}": { + }, "patch": { - "summary": "Update integer attribute", - "operationId": "databasesUpdateIntegerAttribute", + "summary": "Update document", + "operationId": "databasesUpdateDocument", "tags": [ "databases" ], - "description": "Update an integer 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": "AttributeInteger", + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeInteger" + "$ref": "#\/components\/schemas\/document" } } } @@ -18172,25 +19020,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateIntegerAttribute", - "group": "attributes", + "method": "updateDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-integer-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-integer-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateIntegerColumn" + "replaceWith": "tablesDB.updateRow" }, "auth": { "Project": [] @@ -18199,7 +19048,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -18224,11 +19075,12 @@ "in": "path" }, { - "name": "key", - "description": "Attribute Key.", + "name": "documentId", + "description": "Document ID.", "required": true, "schema": { - "type": "string" + "type": "string", + "x-example": "" }, "in": "path" } @@ -18239,90 +19091,67 @@ "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 + "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": "integer", - "description": "Default value. Cannot be set when attribute is required.", - "x-example": null, - "format": "int64", + "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, + "description": "Transaction ID for staging the operation.", + "x-example": "", "x-nullable": true } - }, - "required": [ - "required", - "default" - ] + } } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip": { - "post": { - "summary": "Create IP address attribute", - "operationId": "databasesCreateIpAttribute", + }, + "delete": { + "summary": "Delete document", + "operationId": "databasesDeleteDocument", "tags": [ "databases" ], - "description": "Create IP address attribute.\n", + "description": "Delete a document by its unique ID.", "responses": { - "202": { - "description": "AttributeIP", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributeIp" - } - } - } + "204": { + "description": "No content" } }, "deprecated": true, "x-appwrite": { - "method": "createIpAttribute", - "group": "attributes", + "method": "deleteDocument", + "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-ip-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-ip-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createIpColumn" + "replaceWith": "tablesDB.deleteRow" }, "auth": { "Project": [] @@ -18331,7 +19160,9 @@ "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -18347,69 +19178,52 @@ }, { "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": "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": "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}": { + "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/decrement": { "patch": { - "summary": "Update IP address attribute", - "operationId": "databasesUpdateIpAttribute", + "summary": "Decrement document attribute", + "operationId": "databasesDecrementDocumentAttribute", "tags": [ "databases" ], - "description": "Update an ip attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Decrement a specific attribute of a document by a given value.", "responses": { "200": { - "description": "AttributeIP", + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeIp" + "$ref": "#\/components\/schemas\/document" } } } @@ -18417,25 +19231,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateIpAttribute", - "group": "attributes", + "method": "decrementDocumentAttribute", + "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\/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-ip-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/decrement-document-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateIpColumn" + "replaceWith": "tablesDB.decrementRowColumn" }, "auth": { "Project": [] @@ -18444,6 +19259,8 @@ "security": [ { "Project": [], + "Session": [], + "JWT": [], "Key": [] } ], @@ -18469,8 +19286,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" @@ -18484,49 +19311,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": "string", - "description": "Default value. Cannot be set when attribute is required.", + "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", - "default" - ] + } } } } } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/line": { - "post": { - "summary": "Create line attribute", - "operationId": "databasesCreateLineAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/increment": { + "patch": { + "summary": "Increment document attribute", + "operationId": "databasesIncrementDocumentAttribute", "tags": [ "databases" ], - "description": "Create a geometric line attribute.", + "description": "Increment a specific attribute of a document by a given value.", "responses": { - "202": { - "description": "AttributeLine", + "200": { + "description": "Document", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeLine" + "$ref": "#\/components\/schemas\/document" } } } @@ -18534,25 +19360,26 @@ }, "deprecated": true, "x-appwrite": { - "method": "createLineAttribute", - "group": "attributes", + "method": "incrementDocumentAttribute", + "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\/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-line-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/increment-document-attribute.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createLineColumn" + "replaceWith": "tablesDB.incrementRowColumn" }, "auth": { "Project": [] @@ -18561,6 +19388,8 @@ "security": [ { "Project": [], + "Session": [], + "JWT": [], "Key": [] } ], @@ -18577,13 +19406,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": { @@ -18592,55 +19440,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, 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" - } - }, + "transactionId": { + "type": "string", + "description": "Transaction ID for staging the operation.", + "x-example": "", "x-nullable": true } - }, - "required": [ - "key", - "required" - ] + } } } } } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/line\/{key}": { - "patch": { - "summary": "Update line attribute", - "operationId": "databasesUpdateLineAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/indexes": { + "get": { + "summary": "List indexes", + "operationId": "databasesListIndexes", "tags": [ "databases" ], - "description": "Update a line attribute. Changing the `default` value will not update already existing documents.", + "description": "List indexes in the collection.", "responses": { "200": { - "description": "AttributeLine", + "description": "Indexes List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeLine" + "$ref": "#\/components\/schemas\/indexList" } } } @@ -18648,25 +19489,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateLineAttribute", - "group": "attributes", + "method": "listIndexes", + "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/update-line-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-line-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateLineColumn" + "replaceWith": "tablesDB.listIndexes" }, "auth": { "Project": [] @@ -18691,7 +19532,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", @@ -18700,70 +19541,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, 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" - ] - } - } + "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\/longtext": { + ] + }, "post": { - "summary": "Create longtext attribute", - "operationId": "databasesCreateLongtextAttribute", + "summary": "Create index", + "operationId": "databasesCreateIndex", "tags": [ "databases" ], - "description": "Create a longtext attribute.\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": "AttributeLongtext", + "description": "Index", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeLongtext" + "$ref": "#\/components\/schemas\/index" } } } @@ -18771,11 +19587,11 @@ }, "deprecated": true, "x-appwrite": { - "method": "createLongtextAttribute", - "group": "attributes", + "method": "createIndex", + "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/create-longtext-attribute.md", + "demo": "databases\/create-index.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -18786,10 +19602,10 @@ ], "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\/create-index.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createLongtextColumn" + "replaceWith": "tablesDB.createIndex" }, "auth": { "Project": [] @@ -18831,36 +19647,67 @@ "properties": { "key": { "type": "string", - "description": "Attribute Key.", + "description": "Index Key.", "x-example": null }, - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { + "type": { "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true + "description": "Index type.", + "x-example": "key", + "enum": [ + "key", + "fulltext", + "unique", + "spatial" + ], + "x-enum-name": "DatabasesIndexType", + "x-enum-keys": [ + "key", + "fulltext", + "unique", + "spatial" + ] }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false + "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" + } }, - "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 + "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" + ] + } + }, + "lengths": { + "type": "array", + "description": "Length of index. Maximum of 100", + "default": [], + "x-example": null, + "items": { + "type": "integer" + } } }, "required": [ "key", - "required" + "type", + "attributes" ] } } @@ -18868,21 +19715,21 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/longtext\/{key}": { - "patch": { - "summary": "Update longtext attribute", - "operationId": "databasesUpdateLongtextAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}": { + "get": { + "summary": "Get index", + "operationId": "databasesGetIndex", "tags": [ "databases" ], - "description": "Update a longtext attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Get an index by its unique ID.", "responses": { "200": { - "description": "AttributeLongtext", + "description": "Index", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeLongtext" + "$ref": "#\/components\/schemas\/index" } } } @@ -18890,25 +19737,25 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateLongtextAttribute", - "group": "attributes", + "method": "getIndex", + "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/update-longtext-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-longtext-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateLongtextColumn" + "replaceWith": "tablesDB.getIndex" }, "auth": { "Project": [] @@ -18943,75 +19790,34 @@ }, { "name": "key", - "description": "Attribute Key.", + "description": "Index Key.", "required": true, "schema": { "type": "string" }, "in": "path" } + ] + }, + "delete": { + "summary": "Delete index", + "operationId": "databasesDeleteIndex", + "tags": [ + "databases" ], - "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", - "tags": [ - "databases" - ], - "description": "Create a mediumtext attribute.\n", + "description": "Delete an index.", "responses": { - "202": { - "description": "AttributeMediumtext", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributeMediumtext" - } - } - } + "204": { + "description": "No content" } }, "deprecated": true, "x-appwrite": { - "method": "createMediumtextAttribute", - "group": "attributes", + "method": "deleteIndex", + "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/create-mediumtext-attribute.md", + "demo": "databases\/delete-index.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -19022,10 +19828,10 @@ ], "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\/delete-index.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createMediumtextColumn" + "replaceWith": "tablesDB.deleteIndex" }, "auth": { "Project": [] @@ -19057,68 +19863,34 @@ "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 - }, - "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\/mediumtext\/{key}": { - "patch": { - "summary": "Update mediumtext attribute", - "operationId": "databasesUpdateMediumtextAttribute", + "\/databases\/{databaseId}\/collections\/{collectionId}\/usage": { + "get": { + "summary": "Get collection usage stats", + "operationId": "databasesGetCollectionUsage", "tags": [ "databases" ], - "description": "Update a mediumtext 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": "AttributeMediumtext", + "description": "UsageCollection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeMediumtext" + "$ref": "#\/components\/schemas\/usageCollection" } } } @@ -19126,25 +19898,24 @@ }, "deprecated": true, "x-appwrite": { - "method": "updateMediumtextAttribute", - "group": "attributes", + "method": "getCollectionUsage", + "group": null, "cookies": false, "type": "", - "demo": "databases\/update-mediumtext-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-mediumtext-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-usage.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.updateMediumtextColumn" + "replaceWith": "tablesDB.getTableUsage" }, "auth": { "Project": [] @@ -19152,8 +19923,7 @@ }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ @@ -19168,74 +19938,55 @@ "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" + "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 - }, - "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", + "\/databases\/{databaseId}\/usage": { + "get": { + "summary": "Get database usage stats", + "operationId": "databasesGetUsage", "tags": [ "databases" ], - "description": "Create a geometric point attribute.", + "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": "AttributePoint", + "200": { + "description": "UsageDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributePoint" + "$ref": "#\/components\/schemas\/usageDatabase" } } } @@ -19243,34 +19994,62 @@ }, "deprecated": true, "x-appwrite": { - "method": "createPointAttribute", - "group": "attributes", + "method": "getUsage", + "group": null, "cookies": false, "type": "", - "demo": "databases\/create-point-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-point-attribute.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-database-usage.md", "deprecated": { "since": "1.8.0", - "replaceWith": "tablesDB.createPointColumn" + "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": [ @@ -19285,95 +20064,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": "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" - ] - } - } + "in": "query" } - } + ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/point\/{key}": { - "patch": { - "summary": "Update point attribute", - "operationId": "databasesUpdatePointAttribute", + "\/documentsdb": { + "get": { + "summary": "List databases", + "operationId": "documentsDBList", "tags": [ - "databases" + "documentsDB" ], - "description": "Update a point attribute. Changing the `default` value will not update already existing documents.", + "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": "AttributePoint", + "description": "Databases List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributePoint" + "$ref": "#\/components\/schemas\/databaseList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updatePointAttribute", - "group": "attributes", + "method": "list", + "group": "documentsdb", "cookies": false, "type": "", - "demo": "databases\/update-point-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-point-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updatePointColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list.md", "auth": { "Project": [] } @@ -19386,114 +20138,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#createCollection).", - "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" - } - ], - "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" - ] - } - } + "in": "query" } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/polygon": { + ] + }, "post": { - "summary": "Create polygon attribute", - "operationId": "databasesCreatePolygonAttribute", + "summary": "Create database", + "operationId": "documentsDBCreate", "tags": [ - "databases" + "documentsDB" ], - "description": "Create a geometric polygon attribute.", + "description": "Create a new Database.\n", "responses": { - "202": { - "description": "AttributePolygon", + "201": { + "description": "Database", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributePolygon" + "$ref": "#\/components\/schemas\/database" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createPolygonAttribute", - "group": "attributes", + "method": "create", + "group": "documentsdb", "cookies": false, "type": "", - "demo": "databases\/create-polygon-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-polygon-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createPolygonColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create.md", "auth": { "Project": [] } @@ -19504,64 +20210,41 @@ "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": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "key": { + "databaseId": { "type": "string", - "description": "Attribute Key.", - "x-example": null + "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" + } }, - "required": { + "name": { + "type": "string", + "description": "Database name. Max length: 128 chars.", + "x-example": "" + }, + "enabled": { "type": "boolean", - "description": "Is attribute required?", + "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 }, - "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 + "specification": { + "type": "string", + "description": "Database specification. Defaults to `serverless`, which creates the database on the shared pool. Any other value provisions a dedicated database on that specification.", + "default": "serverless", + "x-example": "serverless" } }, "required": [ - "key", - "required" + "databaseId", + "name" ] } } @@ -19569,48 +20252,45 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/polygon\/{key}": { - "patch": { - "summary": "Update polygon attribute", - "operationId": "databasesUpdatePolygonAttribute", + "\/documentsdb\/transactions": { + "get": { + "summary": "List transactions", + "operationId": "documentsDBListTransactions", "tags": [ - "databases" + "documentsDB" ], - "description": "Update a polygon attribute. Changing the `default` value will not update already existing documents.", + "description": "List transactions across all databases.", "responses": { "200": { - "description": "AttributePolygon", + "description": "Transaction List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributePolygon" + "$ref": "#\/components\/schemas\/transactionList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updatePolygonAttribute", - "group": "attributes", + "method": "listTransactions", + "group": "transactions", "cookies": false, "type": "", - "demo": "databases\/update-polygon-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-polygon-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updatePolygonColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-transactions.md", "auth": { "Project": [] } @@ -19618,125 +20298,65 @@ "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#createCollection).", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "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).", + "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" } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship": { + ] + }, "post": { - "summary": "Create relationship attribute", - "operationId": "databasesCreateRelationshipAttribute", + "summary": "Create transaction", + "operationId": "documentsDBCreateTransaction", "tags": [ - "databases" + "documentsDB" ], - "description": "Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n", + "description": "Create a new transaction.", "responses": { - "202": { - "description": "AttributeRelationship", + "201": { + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeRelationship" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createRelationshipAttribute", - "group": "attributes", + "method": "createTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "databases\/create-relationship-attribute.md", + "demo": "documentsdb\/create-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\/create-relationship-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createRelationshipColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-transaction.md", "auth": { "Project": [] } @@ -19744,29 +20364,9 @@ "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" + "Key": [], + "Session": [], + "JWT": [] } ], "requestBody": { @@ -19775,117 +20375,59 @@ "schema": { "type": "object", "properties": { - "relatedCollectionId": { - "type": "string", - "description": "Related Collection ID.", - "x-example": "" - }, - "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 Two Way?", - "default": false, - "x-example": false - }, - "key": { - "type": "string", - "description": "Attribute Key.", - "x-example": null, - "x-nullable": true - }, - "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" - ] + "ttl": { + "type": "integer", + "description": "Seconds before the transaction expires.", + "default": 300, + "x-example": 60, + "format": "int32" } - }, - "required": [ - "relatedCollectionId", - "type" - ] + } } } } } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship\/{key}": { - "patch": { - "summary": "Update relationship attribute", - "operationId": "databasesUpdateRelationshipAttribute", + "\/documentsdb\/transactions\/{transactionId}": { + "get": { + "summary": "Get transaction", + "operationId": "documentsDBGetTransaction", "tags": [ - "databases" + "documentsDB" ], - "description": "Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n", + "description": "Get a transaction by its unique ID.", "responses": { "200": { - "description": "AttributeRelationship", + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeRelationship" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateRelationshipAttribute", - "group": "attributes", + "method": "getTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "databases\/update-relationship-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\/update-relationship-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateRelationshipColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-transaction.md", "auth": { "Project": [] } @@ -19893,117 +20435,62 @@ "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.", + "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": { - "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", + ] + }, + "patch": { + "summary": "Update transaction", + "operationId": "documentsDBUpdateTransaction", "tags": [ - "databases" + "documentsDB" ], - "description": "Create a string attribute.\n", + "description": "Update a transaction, to either commit or roll back its operations.", "responses": { - "202": { - "description": "AttributeString", + "200": { + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeString" + "$ref": "#\/components\/schemas\/transaction" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createStringAttribute", - "group": "attributes", + "method": "updateTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "databases\/create-string-attribute.md", + "demo": "documentsdb\/update-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\/create-string-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createStringColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-transaction.md", "auth": { "Project": [] } @@ -20011,27 +20498,19 @@ "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 table 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": "" + "x-example": "" }, "in": "path" } @@ -20042,94 +20521,55 @@ "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": { + "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\/string\/{key}": { - "patch": { - "summary": "Update string attribute", - "operationId": "databasesUpdateStringAttribute", + }, + "delete": { + "summary": "Delete transaction", + "operationId": "documentsDBDeleteTransaction", "tags": [ - "databases" + "documentsDB" ], - "description": "Update a string attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Delete a transaction by its unique ID.", "responses": { - "200": { - "description": "AttributeString", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributeString" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateStringAttribute", - "group": "attributes", + "method": "deleteTransaction", + "group": "transactions", "cookies": false, "type": "", - "demo": "databases\/update-string-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-string-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateStringColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete-transaction.md", "auth": { "Project": [] } @@ -20137,123 +20577,63 @@ "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" - }, - { - "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, - "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 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", + "\/documentsdb\/{databaseId}": { + "get": { + "summary": "Get database", + "operationId": "documentsDBGet", "tags": [ - "databases" + "documentsDB" ], - "description": "Create a text attribute.\n", + "description": "Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.", "responses": { - "202": { - "description": "AttributeText", + "200": { + "description": "Database", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeText" + "$ref": "#\/components\/schemas\/database" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createTextAttribute", - "group": "attributes", + "method": "get", + "group": "documentsdb", "cookies": false, "type": "", - "demo": "databases\/create-text-attribute.md", + "demo": "documentsdb\/get.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\/create-text-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createTextColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get.md", "auth": { "Project": [] } @@ -20274,105 +20654,46 @@ "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\/{collectionId}\/attributes\/text\/{key}": { - "patch": { - "summary": "Update text attribute", - "operationId": "databasesUpdateTextAttribute", + ] + }, + "put": { + "summary": "Update database", + "operationId": "documentsDBUpdate", "tags": [ - "databases" + "documentsDB" ], - "description": "Update a text attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Update a database by its unique ID.", "responses": { "200": { - "description": "AttributeText", + "description": "Database", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeText" + "$ref": "#\/components\/schemas\/database" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateTextAttribute", - "group": "attributes", + "method": "update", + "group": "documentsdb", "cookies": false, "type": "", - "demo": "databases\/update-text-attribute.md", + "demo": "documentsdb\/update.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\/update-text-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateTextColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update.md", "auth": { "Project": [] } @@ -20393,25 +20714,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).", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { - "name": "key", - "description": "Attribute Key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" } ], "requestBody": { @@ -20420,76 +20722,56 @@ "schema": { "type": "object", "properties": { - "required": { - "type": "boolean", - "description": "Is attribute required?", - "x-example": false - }, - "default": { + "name": { "type": "string", - "description": "Default value for attribute when not provided. Cannot be set when attribute is required.", - "x-example": "", - "x-nullable": true + "description": "Database name. Max length: 128 chars.", + "x-example": "" }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true + "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": [ - "required", - "default" + "name" ] } } } } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url": { - "post": { - "summary": "Create URL attribute", - "operationId": "databasesCreateUrlAttribute", + }, + "delete": { + "summary": "Delete database", + "operationId": "documentsDBDelete", "tags": [ - "databases" + "documentsDB" ], - "description": "Create a URL attribute.\n", + "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", "responses": { - "202": { - "description": "AttributeURL", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/attributeUrl" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createUrlAttribute", - "group": "attributes", + "method": "delete", + "group": "documentsdb", "cookies": false, "type": "", - "demo": "databases\/create-url-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\/create-url-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.createUrlColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/delete.md", "auth": { "Project": [] } @@ -20510,100 +20792,48 @@ "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 - }, - "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 - }, - "array": { - "type": "boolean", - "description": "Is attribute an array?", - "default": false, - "x-example": false - } - }, - "required": [ - "key", - "required" - ] - } - } } - } + ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}": { - "patch": { - "summary": "Update URL attribute", - "operationId": "databasesUpdateUrlAttribute", + "\/documentsdb\/{databaseId}\/collections": { + "get": { + "summary": "List collections", + "operationId": "documentsDBListCollections", "tags": [ - "databases" + "documentsDB" ], - "description": "Update an url attribute. Changing the `default` value will not update already existing documents.\n", + "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": "AttributeURL", + "description": "Collections List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeUrl" + "$ref": "#\/components\/schemas\/collectionList" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateUrlAttribute", - "group": "attributes", + "method": "listCollections", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/update-url-attribute.md", + "demo": "documentsdb\/list-collections.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-url-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateUrlColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/list-collections.md", "auth": { "Project": [] } @@ -20626,87 +20856,68 @@ "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). 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": "" + "x-example": "", + "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" - } - ], - "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": "https:\/\/example.com", - "format": "url", - "x-nullable": true - }, - "newKey": { - "type": "string", - "description": "New Attribute Key.", - "x-example": null, - "x-nullable": true - } - }, - "required": [ - "required", - "default" - ] - } - } + "in": "query" } - } - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/varchar": { + ] + }, "post": { - "summary": "Create varchar attribute", - "operationId": "databasesCreateVarcharAttribute", + "summary": "Create collection", + "operationId": "documentsDBCreateCollection", "tags": [ - "databases" + "documentsDB" ], - "description": "Create a varchar attribute.\n", + "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": { - "202": { - "description": "AttributeVarchar", + "201": { + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeVarchar" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createVarcharAttribute", - "group": "attributes", + "method": "createCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/create-varchar-attribute.md", + "demo": "documentsdb\/create-collection.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -20717,11 +20928,7 @@ ], "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\/create-collection.md", "auth": { "Project": [] } @@ -20742,16 +20949,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).", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" } ], "requestBody": { @@ -20760,45 +20957,62 @@ "schema": { "type": "object", "properties": { - "key": { + "collectionId": { "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 + "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": "", + "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 }, - "array": { + "documentSecurity": { "type": "boolean", - "description": "Is attribute an array?", + "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 }, - "encrypt": { + "enabled": { "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, + "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 - } - }, - "required": [ - "key", - "size", - "required" + }, + "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" ] } } @@ -20806,48 +21020,44 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/varchar\/{key}": { - "patch": { - "summary": "Update varchar attribute", - "operationId": "databasesUpdateVarcharAttribute", + "\/documentsdb\/{databaseId}\/collections\/{collectionId}": { + "get": { + "summary": "Get collection", + "operationId": "documentsDBGetCollection", "tags": [ - "databases" + "documentsDB" ], - "description": "Update a varchar attribute. Changing the `default` value will not update already existing documents.\n", + "description": "Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.", "responses": { "200": { - "description": "AttributeVarchar", + "description": "Collection", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/attributeVarchar" + "$ref": "#\/components\/schemas\/collection" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateVarcharAttribute", - "group": "attributes", + "method": "getCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/update-varchar-attribute.md", + "demo": "documentsdb\/get-collection.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-varchar-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.updateVarcharColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/get-collection.md", "auth": { "Project": [] } @@ -20871,189 +21081,53 @@ }, { "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": "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": "", - "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}": { - "get": { - "summary": "Get attribute", - "operationId": "databasesGetAttribute", + ] + }, + "put": { + "summary": "Update collection", + "operationId": "documentsDBUpdateCollection", "tags": [ - "databases" + "documentsDB" ], - "description": "Get attribute by ID.", + "description": "Update a collection by its unique ID.", "responses": { "200": { - "description": "AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString", + "description": "Collection", "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\/collection" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "getAttribute", - "group": "attributes", + "method": "updateCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/get-attribute.md", + "demo": "documentsdb\/update-collection.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-attribute.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.getColumn" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/update-collection.md", "auth": { "Project": [] } @@ -21084,37 +21158,73 @@ "x-example": "" }, "in": "path" - }, - { - "name": "key", - "description": "Attribute Key.", - "required": true, - "schema": { - "type": "string" - }, - "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 attribute", - "operationId": "databasesDeleteAttribute", + "summary": "Delete collection", + "operationId": "documentsDBDeleteCollection", "tags": [ - "databases" + "documentsDB" ], - "description": "Deletes an attribute.", + "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": true, + "deprecated": false, "x-appwrite": { - "method": "deleteAttribute", - "group": "attributes", + "method": "deleteCollection", + "group": "collections", "cookies": false, "type": "", - "demo": "databases\/delete-attribute.md", + "demo": "documentsdb\/delete-collection.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -21125,11 +21235,7 @@ ], "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-collection.md", "auth": { "Project": [] } @@ -21160,25 +21266,16 @@ "x-example": "" }, "in": "path" - }, - { - "name": "key", - "description": "Attribute Key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" } ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents": { + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents": { "get": { "summary": "List documents", - "operationId": "databasesListDocuments", + "operationId": "documentsDBListDocuments", "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.", "responses": { @@ -21193,13 +21290,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "listDocuments", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/list-documents.md", + "demo": "documentsdb\/list-documents.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -21211,11 +21308,7 @@ ], "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-documents.md", "auth": { "Project": [] } @@ -21285,7 +21378,7 @@ }, { "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).", + "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", @@ -21299,11 +21392,11 @@ }, "post": { "summary": "Create document", - "operationId": "databasesCreateDocument", + "operationId": "documentsDBCreateDocument", "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 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", @@ -21316,13 +21409,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "createDocument", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/create-document.md", + "demo": "documentsdb\/create-document.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -21334,15 +21427,11 @@ ], "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" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/create-document.md", "methods": [ { "name": "createDocument", - "namespace": "databases", + "namespace": "documentsDB", "desc": "Create document", "auth": { "Project": [] @@ -21352,8 +21441,7 @@ "collectionId", "documentId", "data", - "permissions", - "transactionId" + "permissions" ], "required": [ "databaseId", @@ -21367,17 +21455,13 @@ "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" - } + "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": "databases", + "namespace": "documentsDB", "desc": "Create documents", "auth": { "Project": [] @@ -21385,8 +21469,7 @@ "parameters": [ "databaseId", "collectionId", - "documents", - "transactionId" + "documents" ], "required": [ "databaseId", @@ -21399,13 +21482,9 @@ "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" - } + "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": { @@ -21469,8 +21548,7 @@ "x-example": "[\"read(\"any\")\"]", "items": { "type": "string" - }, - "x-nullable": true + } }, "documents": { "type": "array", @@ -21484,8 +21562,7 @@ "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } @@ -21495,11 +21572,11 @@ }, "put": { "summary": "Upsert documents", - "operationId": "databasesUpsertDocuments", + "operationId": "documentsDBUpsertDocuments", "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": "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": { "201": { "description": "Documents List", @@ -21512,13 +21589,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "upsertDocuments", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/upsert-documents.md", + "demo": "documentsdb\/upsert-documents.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -21529,15 +21606,11 @@ ], "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" - }, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/documentsdb\/upsert-documents.md", "methods": [ { "name": "upsertDocuments", - "namespace": "databases", + "namespace": "documentsDB", "desc": "", "auth": { "Project": [] @@ -21559,13 +21632,9 @@ "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" - } + "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": { @@ -21617,8 +21686,7 @@ "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } }, "required": [ @@ -21631,9 +21699,9 @@ }, "patch": { "summary": "Update documents", - "operationId": "databasesUpdateDocuments", + "operationId": "documentsDBUpdateDocuments", "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.", "responses": { @@ -21648,13 +21716,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "updateDocuments", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-documents.md", + "demo": "documentsdb\/update-documents.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -21665,11 +21733,7 @@ ], "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-documents.md", "auth": { "Project": [] } @@ -21712,7 +21776,7 @@ "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": "{}" }, "queries": { "type": "array", @@ -21726,8 +21790,7 @@ "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } @@ -21737,9 +21800,9 @@ }, "delete": { "summary": "Delete documents", - "operationId": "databasesDeleteDocuments", + "operationId": "documentsDBDeleteDocuments", "tags": [ - "databases" + "documentsDB" ], "description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.", "responses": { @@ -21754,13 +21817,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "deleteDocuments", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/delete-documents.md", + "demo": "documentsdb\/delete-documents.md", "rate-limit": 60, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -21771,11 +21834,7 @@ ], "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-documents.md", "auth": { "Project": [] } @@ -21833,12 +21892,12 @@ ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { "get": { "summary": "Get document", - "operationId": "databasesGetDocument", + "operationId": "documentsDBGetDocument", "tags": [ - "databases" + "documentsDB" ], "description": "Get a document by its unique ID. This endpoint response returns a JSON object with the document data.", "responses": { @@ -21853,13 +21912,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "getDocument", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/get-document.md", + "demo": "documentsdb\/get-document.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -21871,11 +21930,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\/get-document.md", "auth": { "Project": [] } @@ -21946,11 +22001,11 @@ }, "put": { "summary": "Upsert a document", - "operationId": "databasesUpsertDocument", + "operationId": "documentsDBUpsertDocument", "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 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": { "201": { "description": "Document", @@ -21963,13 +22018,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "upsertDocument", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/upsert-document.md", + "demo": "documentsdb\/upsert-document.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -21981,15 +22036,11 @@ ], "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\/upsert-document.md", "methods": [ { "name": "upsertDocument", - "namespace": "databases", + "namespace": "documentsDB", "desc": "", "auth": { "Project": [] @@ -22013,13 +22064,9 @@ "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 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": { @@ -22061,9 +22108,6 @@ "required": true, "schema": { "type": "string", - "x-appwrite": { - "idGenerator": "ID.unique" - }, "x-example": "" }, "in": "path" @@ -22077,9 +22121,9 @@ "properties": { "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. Include all required fields 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}" + "x-example": "{}" }, "permissions": { "type": "array", @@ -22087,14 +22131,12 @@ "x-example": "[\"read(\"any\")\"]", "items": { "type": "string" - }, - "x-nullable": true + } }, "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } @@ -22104,9 +22146,9 @@ }, "patch": { "summary": "Update document", - "operationId": "databasesUpdateDocument", + "operationId": "documentsDBUpdateDocument", "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.", "responses": { @@ -22121,13 +22163,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "updateDocument", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/update-document.md", + "demo": "documentsdb\/update-document.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -22139,11 +22181,7 @@ ], "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\/update-document.md", "auth": { "Project": [] } @@ -22196,9 +22234,9 @@ "properties": { "data": { "type": "object", - "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", + "description": "Document data as JSON object. Include only fields 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": { "type": "array", @@ -22206,14 +22244,12 @@ "x-example": "[\"read(\"any\")\"]", "items": { "type": "string" - }, - "x-nullable": true + } }, "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } @@ -22223,9 +22259,9 @@ }, "delete": { "summary": "Delete document", - "operationId": "databasesDeleteDocument", + "operationId": "documentsDBDeleteDocument", "tags": [ - "databases" + "documentsDB" ], "description": "Delete a document by its unique ID.", "responses": { @@ -22233,13 +22269,13 @@ "description": "No content" } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "deleteDocument", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/delete-document.md", + "demo": "documentsdb\/delete-document.md", "rate-limit": 60, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -22251,11 +22287,7 @@ ], "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-document.md", "auth": { "Project": [] } @@ -22312,111 +22344,14 @@ ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs": { - "get": { - "summary": "List document logs", - "operationId": "databasesListDocumentLogs", - "tags": [ - "databases" - ], - "description": "Get the document activity logs list by its unique ID.", - "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } - } - }, - "deprecated": true, - "x-appwrite": { - "method": "listDocumentLogs", - "group": "logs", - "cookies": false, - "type": "", - "demo": "databases\/list-document-logs.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "documents.read", - "platforms": [ - "console" - ], - "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" - }, - "auth": { - "Project": [] - } - }, - "security": [ - { - "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.", - "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", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - } - ] - } - }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/decrement": { + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/decrement": { "patch": { "summary": "Decrement document attribute", - "operationId": "databasesDecrementDocumentAttribute", + "operationId": "documentsDBDecrementDocumentAttribute", "tags": [ - "databases" + "documentsDB" ], - "description": "Decrement a specific attribute of a document by a given value.", + "description": "Decrement a specific column of a row by a given value.", "responses": { "200": { "description": "Document", @@ -22429,13 +22364,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "decrementDocumentAttribute", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/decrement-document-attribute.md", + "demo": "documentsdb\/decrement-document-attribute.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -22447,11 +22382,7 @@ ], "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\/decrement-document-attribute.md", "auth": { "Project": [] } @@ -22513,7 +22444,7 @@ "properties": { "value": { "type": "number", - "description": "Value to increment the attribute by. The value must be a number.", + "description": "Value to decrement the attribute by. The value must be a number.", "default": 1, "x-example": null, "format": "float" @@ -22522,14 +22453,12 @@ "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 + "format": "float" }, "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } @@ -22538,14 +22467,14 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/increment": { + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/increment": { "patch": { "summary": "Increment document attribute", - "operationId": "databasesIncrementDocumentAttribute", + "operationId": "documentsDBIncrementDocumentAttribute", "tags": [ - "databases" + "documentsDB" ], - "description": "Increment a specific attribute of a document by a given value.", + "description": "Increment a specific column of a row by a given value.", "responses": { "200": { "description": "Document", @@ -22558,13 +22487,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "incrementDocumentAttribute", "group": "documents", "cookies": false, "type": "", - "demo": "databases\/increment-document-attribute.md", + "demo": "documentsdb\/increment-document-attribute.md", "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", @@ -22576,11 +22505,7 @@ ], "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\/increment-document-attribute.md", "auth": { "Project": [] } @@ -22651,14 +22576,12 @@ "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 + "format": "float" }, "transactionId": { "type": "string", "description": "Transaction ID for staging the operation.", - "x-example": "", - "x-nullable": true + "x-example": "" } } } @@ -22667,12 +22590,12 @@ } } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/indexes": { + "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/indexes": { "get": { "summary": "List indexes", - "operationId": "databasesListIndexes", + "operationId": "documentsDBListIndexes", "tags": [ - "databases" + "documentsDB" ], "description": "List indexes in the collection.", "responses": { @@ -22687,13 +22610,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "listIndexes", "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/list-indexes.md", + "demo": "documentsdb\/list-indexes.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -22704,11 +22627,7 @@ ], "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\/list-indexes.md", "auth": { "Project": [] } @@ -22768,9 +22687,9 @@ }, "post": { "summary": "Create index", - "operationId": "databasesCreateIndex", + "operationId": "documentsDBCreateIndex", "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`.", "responses": { @@ -22785,13 +22704,13 @@ } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { "method": "createIndex", "group": "indexes", "cookies": false, "type": "", - "demo": "databases\/create-index.md", + "demo": "documentsdb\/create-index.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -22802,11 +22721,7 @@ ], "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\/create-index.md", "auth": { "Project": [] } @@ -22857,15 +22772,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 +22828,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 +22848,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 +22865,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 +22910,9 @@ }, "delete": { "summary": "Delete index", - "operationId": "databasesDeleteIndex", + "operationId": "documentsDBDeleteIndex", "tags": [ - "databases" + "documentsDB" ], "description": "Delete an index.", "responses": { @@ -23011,13 +22920,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 +22937,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,47 +22981,42 @@ ] } }, - "\/databases\/{databaseId}\/collections\/{collectionId}\/logs": { + "\/domains": { "get": { - "summary": "List collection logs", - "operationId": "databasesListCollectionLogs", + "summary": "List domains", + "operationId": "domainsList", "tags": [ - "databases" + "domains" ], - "description": "Get the collection 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": "listCollectionLogs", - "group": "collections", + "method": "list", + "group": null, "cookies": false, "type": "", - "demo": "databases\/list-collection-logs.md", + "demo": "domains\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "domains.read", "platforms": [ "console" ], "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" - }, "auth": { "Project": [] } @@ -23127,29 +23027,9 @@ } ], "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). 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", @@ -23159,51 +23039,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}\/collections\/{collectionId}\/usage": { - "get": { - "summary": "Get collection usage stats", - "operationId": "databasesGetCollectionUsage", + }, + "post": { + "summary": "Create a new domain.", + "operationId": "domainsCreate", "tags": [ - "databases" + "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 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": "UsageCollection", + "201": { + "description": "Domain", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageCollection" + "$ref": "#\/components\/schemas\/domain" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "getCollectionUsage", + "method": "create", "group": null, "cookies": false, "type": "", - "demo": "databases\/get-collection-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-collection-usage.md", - "deprecated": { - "since": "1.8.0", - "replaceWith": "tablesDB.getTableUsage" - }, "auth": { "Project": [] } @@ -23213,123 +23097,69 @@ "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" - }, - { - "name": "collectionId", - "description": "Collection ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "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" + ] + } + } } - ] + } } }, - "\/databases\/{databaseId}\/logs": { + "\/domains\/price": { "get": { - "summary": "List database logs", - "operationId": "databasesListLogs", + "summary": "Get domain price", + "operationId": "domainsGetPrice", "tags": [ - "databases" + "domains" ], - "description": "Get the database activity logs list by its unique ID.", + "description": "Get the registration price for a domain name.", "responses": { "200": { - "description": "Logs List", + "description": "DomainPrice", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/domainPrice" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "listLogs", - "group": "logs", + "method": "getPrice", + "group": null, "cookies": false, "type": "", - "demo": "databases\/list-logs.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" ], "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": [] } @@ -23341,102 +23171,88 @@ ], "parameters": [ { - "name": "databaseId", - "description": "Database ID.", + "name": "domain", + "description": "Domain name to get price for.", "required": true, "schema": { - "type": "string", - "x-example": "" + "type": "string" }, - "in": "path" + "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). Only supported methods are limit and offset", + "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": "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" }, "in": "query" } ] } }, - "\/databases\/{databaseId}\/usage": { - "get": { - "summary": "Get database usage stats", - "operationId": "databasesGetUsage", + "\/domains\/purchases": { + "post": { + "summary": "Create a domain purchase", + "operationId": "domainsCreatePurchase", "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": "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": { - "200": { - "description": "UsageDatabase", + "201": { + "description": "DomainPurchase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageDatabase" + "$ref": "#\/components\/schemas\/domainPurchase" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "getUsage", + "method": "createPurchase", "group": null, "cookies": false, "type": "", - "demo": "databases\/get-usage.md", + "demo": "domains\/create-purchase.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\/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 +23262,111 @@ "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": { + "domain": { + "type": "string", + "description": "Fully qualified domain name to purchase (for example, example.com).", + "x-example": null + }, + "organizationId": { + "type": "string", + "description": "Team ID that will own the domain.", + "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": { + "type": "integer", + "description": "Registration term in years (1-10).", + "default": 1, + "x-example": 1, + "format": "int32" + }, + "autoRenewal": { + "type": "boolean", + "description": "Whether the domain should renew automatically after purchase.", + "default": true, + "x-example": false + }, + "paymentMethodId": { + "type": "string", + "description": "Payment method ID to authorize and capture the purchase.", + "x-example": "" + } + }, + "required": [ + "domain", + "organizationId", + "firstName", + "lastName", + "email", + "phone", + "billingAddressId", + "paymentMethodId" + ] + } + } } - ] + } } }, - "\/documentsdb": { - "get": { - "summary": "List databases", - "operationId": "documentsDBList", + "\/domains\/purchases\/{invoiceId}": { + "patch": { + "summary": "Confirm a domain purchase", + "operationId": "domainsUpdatePurchase", "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": "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": "Databases List", + "description": "DomainPurchase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/databaseList" + "$ref": "#\/components\/schemas\/domainPurchase" } } } @@ -23504,104 +23374,39 @@ }, "deprecated": false, "x-appwrite": { - "method": "list", - "group": "documentsdb", + "method": "updatePurchase", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list.md", + "demo": "domains\/update-purchase.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "billing.write", "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", - "required": false, + "name": "invoiceId", + "description": "Invoice ID.", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "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" - } - ] - }, - "post": { - "summary": "Create database", - "operationId": "documentsDBCreate", - "tags": [ - "documentsDB" - ], - "description": "Create a new Database.\n", - "responses": { - "201": { - "description": "Database", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/database" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "create", - "group": "documentsdb", - "cookies": false, - "type": "", - "demo": "documentsdb\/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\/documentsdb\/create.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] + "in": "path" } ], "requestBody": { @@ -23610,38 +23415,14 @@ "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" - } - }, - "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 - }, - "dedicatedDatabaseId": { + "organizationId": { "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": "Team ID that owns the domain.", + "x-example": "" } }, "required": [ - "databaseId", - "name" + "organizationId" ] } } @@ -23649,21 +23430,21 @@ } } }, - "\/documentsdb\/transactions": { + "\/domains\/suggestions": { "get": { - "summary": "List transactions", - "operationId": "documentsDBListTransactions", + "summary": "List domain suggestions", + "operationId": "domainsListSuggestions", "tags": [ - "documentsDB" + "domains" ], - "description": "List transactions across all databases.", + "description": "List domain suggestions.", "responses": { "200": { - "description": "Transaction List", + "description": "Domain suggestions list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transactionList" + "$ref": "#\/components\/schemas\/domainSuggestionsList" } } } @@ -23671,39 +23452,43 @@ }, "deprecated": false, "x-appwrite": { - "method": "listTransactions", - "group": "transactions", + "method": "listSuggestions", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-transactions.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\/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).", + "name": "query", + "description": "Query to find available domains and suggestions. Max length: 256 chars.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "query" + }, + { + "name": "tlds", + "description": "TLDs to suggest.", "required": false, "schema": { "type": "array", @@ -23713,23 +23498,74 @@ "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" } ] - }, + } + }, + "\/domains\/transfers\/in": { "post": { - "summary": "Create transaction", - "operationId": "documentsDBCreateTransaction", + "summary": "Create a domain transfer in.", + "operationId": "domainsCreateTransferIn", "tags": [ - "documentsDB" + "domains" ], - "description": "Create a new transaction.", + "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": { "201": { - "description": "Transaction", + "description": "DomainPurchase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/domainPurchase" } } } @@ -23737,33 +23573,27 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTransaction", - "group": "transactions", + "method": "createTransferIn", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/create-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\/create-transaction.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Project": [] } ], "requestBody": { @@ -23772,35 +23602,60 @@ "schema": { "type": "object", "properties": { - "ttl": { - "type": "integer", - "description": "Seconds before the transaction expires.", - "default": 300, - "x-example": 60, - "format": "int32" + "domain": { + "type": "string", + "description": "Domain name to transfer in.", + "x-example": null + }, + "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": "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" + ] } } } } } }, - "\/documentsdb\/transactions\/{transactionId}": { - "get": { - "summary": "Get transaction", - "operationId": "documentsDBGetTransaction", + "\/domains\/transfers\/in\/{invoiceId}": { + "patch": { + "summary": "Confirm a domain transfer in", + "operationId": "domainsUpdateTransferIn", "tags": [ - "documentsDB" + "domains" ], - "description": "Get 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": { "200": { - "description": "Transaction", + "description": "DomainPurchase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/domainPurchase" } } } @@ -23808,62 +23663,77 @@ }, "deprecated": false, "x-appwrite": { - "method": "getTransaction", - "group": "transactions", + "method": "updateTransferIn", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-transaction.md", + "demo": "domains\/update-transfer-in.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\/get-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" } - ] - }, - "patch": { - "summary": "Update transaction", - "operationId": "documentsDBUpdateTransaction", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "organizationId": { + "type": "string", + "description": "Team ID that owns the domain.", + "x-example": "" + } + }, + "required": [ + "organizationId" + ] + } + } + } + } + } + }, + "\/domains\/transfers\/out": { + "post": { + "summary": "Create a domain transfer out.", + "operationId": "domainsCreateTransferOut", "tags": [ - "documentsDB" + "domains" ], - "description": "Update a transaction, to either commit or roll back its operations.", + "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": "Transaction", + "202": { + "description": "domainTransferOut", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/transaction" + "$ref": "#\/components\/schemas\/domainTransferOut" } } } @@ -23871,45 +23741,27 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTransaction", - "group": "transactions", + "method": "createTransferOut", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/update-transaction.md", + "demo": "domains\/create-transfer-out.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,140 +23770,115 @@ "schema": { "type": "object", "properties": { - "commit": { - "type": "boolean", - "description": "Commit transaction?", - "default": false, - "x-example": false + "domainId": { + "type": "string", + "description": "Domain unique ID.", + "x-example": "" }, - "rollback": { - "type": "boolean", - "description": "Rollback transaction?", - "default": false, - "x-example": false + "organizationId": { + "type": "string", + "description": "Organization ID that this domain belongs to.", + "x-example": "" } - } + }, + "required": [ + "domainId", + "organizationId" + ] } } } } - }, - "delete": { - "summary": "Delete transaction", - "operationId": "documentsDBDeleteTransaction", + } + }, + "\/domains\/{domainId}": { + "get": { + "summary": "Get a single domain by its unique ID.", + "operationId": "domainsGet", "tags": [ - "documentsDB" + "domains" ], - "description": "Delete a transaction by its unique ID.", + "description": "Get a domain by its unique ID.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Domain", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/domain" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteTransaction", - "group": "transactions", + "method": "get", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/delete-transaction.md", + "demo": "domains\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "documents.write", + "scope": "domains.read", "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": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } ] - } - }, - "\/documentsdb\/usage": { - "get": { - "summary": "Get DocumentsDB usage stats", - "operationId": "documentsDBListUsage", + }, + "delete": { + "summary": "Delete a domain by its unique ID.", + "operationId": "domainsDelete", "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": "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": { - "200": { - "description": "UsageDatabases", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/usageDatabases" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "listUsage", + "method": "delete", "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-usage.md", + "demo": "domains\/delete.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\/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 - } + "produces": [ + "application\/json" ], "auth": { "Project": [] @@ -24064,45 +23891,33 @@ ], "parameters": [ { - "name": "range", - "description": "Date range.", - "required": false, + "name": "domainId", + "description": "Domain 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" } ] } }, - "\/documentsdb\/{databaseId}": { - "get": { - "summary": "Get database", - "operationId": "documentsDBGet", + "\/domains\/{domainId}\/auto-renewal": { + "patch": { + "summary": "Update domain auto-renewal setting.", + "operationId": "domainsUpdateAutoRenewal", "tags": [ - "documentsDB" + "domains" ], - "description": "Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.", + "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" } } } @@ -24110,59 +23925,77 @@ }, "deprecated": false, "x-appwrite": { - "method": "get", - "group": "documentsdb", + "method": "updateAutoRenewal", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get.md", + "demo": "domains\/update-auto-renewal.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.read", + "scope": "domains.write", "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", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "autoRenewal": { + "type": "boolean", + "description": "Whether the domain should renew automatically.", + "x-example": false + } + }, + "required": [ + "autoRenewal" + ] + } + } + } + } + } + }, + "\/domains\/{domainId}\/nameservers": { + "patch": { + "summary": "Update the registrar nameservers for the given domain.", + "operationId": "domainsUpdateNameservers", "tags": [ - "documentsDB" + "domains" ], - "description": "Update a database by its unique ID.", + "description": "Update the registrar nameservers for the given domain. When nameservers are not provided,\nthe domain will be updated to use Appwrite nameservers.", "responses": { "200": { - "description": "Database", + "description": "Domain", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/database" + "$ref": "#\/components\/schemas\/domain" } } } @@ -24170,40 +24003,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "update", - "group": "documentsdb", + "method": "updateNameservers", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/update.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\/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 +24044,96 @@ "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 + "nameservers": { + "type": "array", + "description": "Nameservers to set for the domain. Defaults to Appwrite nameservers when omitted.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } } - }, - "required": [ - "name" - ] + } } } } } - }, - "delete": { - "summary": "Delete database", - "operationId": "documentsDBDelete", + } + }, + "\/domains\/{domainId}\/nameservers\/verification": { + "patch": { + "summary": "Verify which NS records are used and update the domain accordingly.", + "operationId": "domainsVerifyNameservers", "tags": [ - "documentsDB" + "domains" ], - "description": "Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.", + "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": { - "204": { - "description": "No content" + "200": { + "description": "Domain", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/domain" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", - "group": "documentsdb", + "method": "verifyNameservers", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/delete.md", + "demo": "domains\/verify-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": { + "\/domains\/{domainId}\/presets\/google-workspace": { "get": { - "summary": "List collections", - "operationId": "documentsDBListCollections", + "summary": "Get Google Workspace preset (Records)", + "operationId": "domainsGetPresetGoogleWorkspace", "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": "List Google Workspace DNS records.", "responses": { - "200": { - "description": "Collections List", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collectionList" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24310,94 +24141,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCollections", - "group": "collections", + "method": "getPresetGoogleWorkspace", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-collections.md", + "demo": "domains\/get-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\/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", + "summary": "Create Google Workspace preset (Records)", + "operationId": "domainsCreatePresetGoogleWorkspace", "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": "Add Google Workspace DNS records to the domain. This will create the required MX records \nfor Google Workspace email hosting.", "responses": { "201": { - "description": "Collection", + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24405,128 +24198,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "createCollection", - "group": "collections", + "method": "createPresetGoogleWorkspace", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/create-collection.md", + "demo": "domains\/create-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}": { + "\/domains\/{domainId}\/presets\/icloud": { "get": { - "summary": "Get collection", - "operationId": "documentsDBGetCollection", + "summary": "Get iCloud preset (Records)", + "operationId": "domainsGetPresetICloud", "tags": [ - "documentsDB" + "domains" ], - "description": "Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.", + "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" } } } @@ -24534,69 +24257,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "getCollection", - "group": "collections", + "method": "getPresetICloud", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-collection.md", + "demo": "domains\/get-preset-i-cloud.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", + "post": { + "summary": "Create iCloud preset (Records)", + "operationId": "domainsCreatePresetICloud", "tags": [ - "documentsDB" + "domains" ], - "description": "Update a collection by its unique ID.", + "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": { - "200": { - "description": "Collection", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/collection" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24604,179 +24314,115 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateCollection", - "group": "collections", + "method": "createPresetICloud", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/update-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\/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", + ] + } + }, + "\/domains\/{domainId}\/presets\/mailgun": { + "get": { + "summary": "Get Mailgun preset (Records)", + "operationId": "domainsGetPresetMailgun", "tags": [ - "documentsDB" + "domains" ], - "description": "Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.", + "description": "List Mailgun DNS records.", "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": "getPresetMailgun", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/delete-collection.md", + "demo": "domains\/get-preset-mailgun.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": { - "get": { - "summary": "List documents", - "operationId": "documentsDBListDocuments", + }, + "post": { + "summary": "Create Mailgun preset (Records)", + "operationId": "domainsCreatePresetMailgun", "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": "Add Mailgun DNS records to the domain. This endpoint will create the required DNS records \nfor Mailgun in the specified domain.", "responses": { - "200": { - "description": "Documents List", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24784,118 +24430,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDocuments", - "group": "documents", + "method": "createPresetMailgun", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-documents.md", + "demo": "domains\/create-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", + } + }, + "\/domains\/{domainId}\/presets\/outlook": { + "get": { + "summary": "Get Outlook preset (Records)", + "operationId": "domainsGetPresetOutlook", "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": "List Outlook DNS records.", "responses": { "201": { - "description": "Document", + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -24903,179 +24489,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDocument", - "group": "documents", + "method": "getPresetOutlook", + "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", + "demo": "domains\/get-preset-outlook.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\/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", + "post": { + "summary": "Create Outlook preset (Records)", + "operationId": "domainsCreatePresetOutlook", "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": "Add Outlook DNS records to the domain. This will create the required MX records\nfor setting up Outlook email hosting for your domain.", "responses": { "201": { - "description": "Documents List", + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -25083,126 +24546,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "upsertDocuments", - "group": "documents", + "method": "createPresetOutlook", + "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\/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\/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", + ] + } + }, + "\/domains\/{domainId}\/presets\/proton-mail": { + "get": { + "summary": "Get ProtonMail preset (Records)", + "operationId": "domainsGetPresetProtonMail", "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": "List ProtonMail DNS records.", "responses": { - "200": { - "description": "Documents List", + "201": { + "description": "DNS records list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/documentList" + "$ref": "#\/components\/schemas\/dnsRecordsList" } } } @@ -25210,100 +24605,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateDocuments", - "group": "documents", + "method": "getPresetProtonMail", + "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\/get-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\/update-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.", + "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 +24662,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", - "platforms": [ - "console", - "server" + "demo": "domains\/create-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, - "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,69 +24721,149 @@ }, "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" - }, + } + ] + }, + "post": { + "summary": "Create Zoho Mail preset (Records)", + "operationId": "domainsCreatePresetZoho", + "tags": [ + "domains" + ], + "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": "DNS records list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dnsRecordsList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createPresetZoho", + "group": null, + "cookies": false, + "type": "", + "demo": "domains\/create-preset-zoho.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. 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" - }, + "Project": [] + } + ], + "parameters": [ { - "name": "documentId", - "description": "Document ID.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" - }, + } + ] + } + }, + "\/domains\/{domainId}\/records": { + "get": { + "summary": "List DNS records for a given domain.", + "operationId": "domainsListRecords", + "tags": [ + "domains" + ], + "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": "DNS records list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dnsRecordsList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listRecords", + "group": null, + "cookies": false, + "type": "", + "demo": "domains\/list-records.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": "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. 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": "array", @@ -25480,31 +24875,33 @@ "in": "query" }, { - "name": "transactionId", - "description": "Transaction ID to read uncommitted changes within the transaction.", - "required": false, + "name": "domainId", + "description": "Domain unique ID.", + "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, - "in": "query" + "in": "path" } ] - }, - "put": { - "summary": "Upsert a document", - "operationId": "documentsDBUpsertDocument", + } + }, + "\/domains\/{domainId}\/records\/a": { + "post": { + "summary": "Create a new A record for the given domain.", + "operationId": "domainsCreateRecordA", "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": "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": { "201": { - "description": "Document", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -25512,95 +24909,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "upsertDocument", - "group": "documents", + "method": "createRecordA", + "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-record-a.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" } @@ -25611,45 +24950,55 @@ "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": "{}" + "name": { + "type": "string", + "description": "Record name (subdomain).", + "x-example": null }, - "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" - } + "value": { + "type": "string", + "description": "IPv4 address for this A record.", + "x-example": null }, - "transactionId": { + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "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" + ] } } } } - }, - "patch": { - "summary": "Update document", - "operationId": "documentsDBUpdateDocument", + } + }, + "\/domains\/{domainId}\/records\/a\/{recordId}": { + "put": { + "summary": "Update an existing A record for the given domain.", + "operationId": "domainsUpdateRecordA", "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": "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" } } } @@ -25657,63 +25006,47 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateDocument", - "group": "documents", + "method": "updateRecordA", + "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\/update-record-a.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\/update-document.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.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" }, { - "name": "documentId", - "description": "Document ID.", + "name": "recordId", + "description": "DNS record unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } @@ -25724,133 +25057,152 @@ "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": "{}" + "name": { + "type": "string", + "description": "Record name (subdomain).", + "x-example": null }, - "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" - } + "value": { + "type": "string", + "description": "IPv4 address for this A record.", + "x-example": null }, - "transactionId": { + "ttl": { + "type": "integer", + "description": "Time to live, in seconds. Must be greater than 0.", + "x-example": 1, + "format": "int32" + }, + "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" + ] } } } } - }, - "delete": { - "summary": "Delete document", - "operationId": "documentsDBDeleteDocument", + } + }, + "\/domains\/{domainId}\/records\/aaaa": { + "post": { + "summary": "Create a new AAAA record for the given domain.", + "operationId": "domainsCreateRecordAAAA", "tags": [ - "documentsDB" + "domains" ], - "description": "Delete a document by its unique ID.", + "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": { - "204": { - "description": "No content" + "201": { + "description": "DNSRecord", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dnsRecord" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteDocument", - "group": "documents", + "method": "createRecordAAAA", + "group": null, "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", + "demo": "domains\/create-record-aaaa.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\/delete-document.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).", - "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" - }, - { - "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": { + "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" + ] + } + } + } + } } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/{attribute}\/decrement": { - "patch": { - "summary": "Decrement document attribute", - "operationId": "documentsDBDecrementDocumentAttribute", + "\/domains\/{domainId}\/records\/aaaa\/{recordId}": { + "put": { + "summary": "Update an existing AAAA record for the given domain.", + "operationId": "domainsUpdateRecordAAAA", "tags": [ - "documentsDB" + "domains" ], - "description": "Decrement a specific column of a row by a given value.", + "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": { "200": { - "description": "Document", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -25858,72 +25210,47 @@ }, "deprecated": false, "x-appwrite": { - "method": "decrementDocumentAttribute", - "group": "documents", + "method": "updateRecordAAAA", + "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\/update-record-aaaa.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.", + "name": "domainId", + "description": "Domain unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" }, { - "name": "documentId", - "description": "Document ID.", + "name": "recordId", + "description": "DNS record 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 +25261,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": "IPv6 address for this AAAA 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 for this record.", + "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\/alias": { + "post": { + "summary": "Create a new ALIAS record for the given domain.", + "operationId": "domainsCreateRecordAlias", "tags": [ - "documentsDB" + "domains" ], - "description": "Increment a specific column of a row by a given value.", + "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": "Document", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/document" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -25981,72 +25317,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "incrementDocumentAttribute", - "group": "documents", + "method": "createRecordAlias", + "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\/create-record-alias.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.", - "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" } @@ -26057,46 +25358,55 @@ "schema": { "type": "object", "properties": { + "name": { + "type": "string", + "description": "Record name.", + "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": "Target domain for this ALIAS record.", + "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" + "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 for this record.", + "default": "", + "x-example": "" } - } + }, + "required": [ + "name", + "value", + "ttl" + ] } } } } } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/indexes": { - "get": { - "summary": "List indexes", - "operationId": "documentsDBListIndexes", + "\/domains\/{domainId}\/records\/alias\/{recordId}": { + "put": { + "summary": "Update an existing ALIAS record for the given domain.", + "operationId": "domainsUpdateRecordAlias", "tags": [ - "documentsDB" + "domains" ], - "description": "List indexes in the collection.", + "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": { "200": { - "description": "Indexes List", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/indexList" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26104,93 +25414,106 @@ }, "deprecated": false, "x-appwrite": { - "method": "listIndexes", - "group": "indexes", + "method": "updateRecordAlias", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/list-indexes.md", + "demo": "domains\/update-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\/list-indexes.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" - }, - { - "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" } - ] - }, + ], + "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\/caa": { "post": { - "summary": "Create index", - "operationId": "documentsDBCreateIndex", + "summary": "Create a new CAA record for the given domain.", + "operationId": "domainsCreateRecordCAA", "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": "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": { - "202": { - "description": "Index", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/index" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26198,50 +25521,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "createIndex", - "group": "indexes", + "method": "createRecordCAA", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/create-index.md", + "demo": "domains\/create-record-caa.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.", - "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" } @@ -26252,67 +25562,33 @@ "schema": { "type": "object", "properties": { - "key": { + "name": { "type": "string", - "description": "Index Key.", + "description": "Record name.", "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": "CAA value (e.g. issuer domain).", + "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" - } - } - }, - "required": [ - "key", - "type", - "attributes" + "comment": { + "type": "string", + "description": "A comment for this record.", + "default": "", + "x-example": "" + } + }, + "required": [ + "name", + "value", + "ttl" ] } } @@ -26320,21 +25596,21 @@ } } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}": { - "get": { - "summary": "Get index", - "operationId": "documentsDBGetIndex", + "\/domains\/{domainId}\/records\/caa\/{recordId}": { + "put": { + "summary": "Update an existing CAA record for the given domain.", + "operationId": "domainsUpdateRecordCAA", "tags": [ - "documentsDB" + "domains" ], - "description": "Get index by ID.", + "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": "Index", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/index" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26342,152 +25618,203 @@ }, "deprecated": false, "x-appwrite": { - "method": "getIndex", - "group": "indexes", + "method": "updateRecordCAA", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-index.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", - "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.", + "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" } - ] - }, - "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": "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\/{domainId}\/records\/cname": { + "post": { + "summary": "Create a new CNAME record for the given domain.", + "operationId": "domainsCreateRecordCNAME", "tags": [ - "documentsDB" + "domains" ], - "description": "Delete an index.", + "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": { - "204": { - "description": "No content" + "201": { + "description": "DNSRecord", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dnsRecord" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteIndex", - "group": "indexes", + "method": "createRecordCNAME", + "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/delete-index.md", + "demo": "domains\/create-record-cname.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.", - "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" } - ] + ], + "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" + ] + } + } + } + } } }, - "\/documentsdb\/{databaseId}\/collections\/{collectionId}\/usage": { - "get": { - "summary": "Get collection usage stats", - "operationId": "documentsDBGetCollectionUsage", + "\/domains\/{domainId}\/records\/cname\/{recordId}": { + "put": { + "summary": "Update an existing CNAME record for the given domain.", + "operationId": "domainsUpdateRecordCNAME", "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": "Update an existing CNAME record for the given domain.", "responses": { "200": { - "description": "UsageCollection", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageCollection" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26495,21 +25822,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getCollectionUsage", + "method": "updateRecordCNAME", "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-collection-usage.md", + "demo": "domains\/update-record-cname.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 +25847,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, - "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": "recordId", + "description": "DNS record 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 (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" + ] + } + } + } + } } }, - "\/documentsdb\/{databaseId}\/usage": { - "get": { - "summary": "Get DocumentsDB usage stats", - "operationId": "documentsDBGetUsage", + "\/domains\/{domainId}\/records\/https": { + "post": { + "summary": "Create a new HTTPS record for the given domain.", + "operationId": "domainsCreateRecordHTTPS", "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": "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": "UsageDocumentsDB", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageDocumentsDB" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26587,47 +25929,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getUsage", + "method": "createRecordHTTPS", "group": null, "cookies": false, "type": "", - "demo": "documentsdb\/get-usage.md", + "demo": "domains\/create-record-https.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 +25954,71 @@ ], "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, - "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": "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": { - "get": { - "summary": "List domains", - "operationId": "domainsList", + "\/domains\/{domainId}\/records\/https\/{recordId}": { + "put": { + "summary": "Update an existing HTTPS record for the given domain.", + "operationId": "domainsUpdateRecordHTTPS", "tags": [ "domains" ], - "description": "List all domains registered for this project. This endpoint supports pagination.", + "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": { "200": { - "description": "Domains list", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainsList" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26695,15 +26026,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "list", + "method": "updateRecordHTTPS", "group": null, "cookies": false, "type": "", - "demo": "domains\/list.md", + "demo": "domains\/update-record-https.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "domains.write", "platforms": [ "console" ], @@ -26720,73 +26051,24 @@ ], "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, + "name": "domainId", + "description": "Domain unique 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": "recordId", + "description": "DNS record unique ID.", + "required": true, "schema": { "type": "string", - "x-example": "", - "default": "" + "x-example": "" }, - "in": "query" - } - ] - }, - "post": { - "summary": "Create a new domain.", - "operationId": "domainsCreate", - "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.", - "responses": { - "201": { - "description": "Domain", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/domain" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "create", - "group": null, - "cookies": false, - "type": "", - "demo": "domains\/create.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": [ - { - "Project": [] + "in": "path" } ], "requestBody": { @@ -26795,20 +26077,33 @@ "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": "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": [ - "teamId", - "domain" + "name", + "value", + "ttl" ] } } @@ -26816,21 +26111,21 @@ } } }, - "\/domains\/price": { - "get": { - "summary": "Get domain price", - "operationId": "domainsGetPrice", + "\/domains\/{domainId}\/records\/mx": { + "post": { + "summary": "Create a new MX record for the given domain.", + "operationId": "domainsCreateRecordMX", "tags": [ "domains" ], - "description": "Get the registration price for a domain name.", + "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": "DomainPrice", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPrice" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26838,15 +26133,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPrice", + "method": "createRecordMX", "group": null, "cookies": false, "type": "", - "demo": "domains\/get-price.md", + "demo": "domains\/create-record-mx.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "domains.write", "platforms": [ "console" ], @@ -26863,67 +26158,78 @@ ], "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": "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\/purchases": { - "post": { - "summary": "Create a domain purchase", - "operationId": "domainsCreatePurchase", + "\/domains\/{domainId}\/records\/mx\/{recordId}": { + "put": { + "summary": "Update an existing MX record for the given domain.", + "operationId": "domainsUpdateRecordMX", "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 MX record for the given domain.", "responses": { - "201": { - "description": "DomainPurchase", + "200": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPurchase" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -26931,15 +26237,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPurchase", + "method": "updateRecordMX", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-purchase.md", + "demo": "domains\/update-record-mx.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "domains.write", "platforms": [ "console" ], @@ -26954,89 +26260,68 @@ "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": { - "type": "string", - "description": "Team ID that will own the domain.", - "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": { + "value": { "type": "string", - "description": "Company or organization name for the registrant.", - "default": "", - "x-example": "" + "description": "Mail server domain for this MX record.", + "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 + "priority": { + "type": "integer", + "description": "MX priority.", + "x-example": null, + "format": "int32" }, - "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", + "priority" ] } } @@ -27044,21 +26329,21 @@ } } }, - "\/domains\/purchases\/{invoiceId}": { - "patch": { - "summary": "Confirm a domain purchase", - "operationId": "domainsUpdatePurchase", + "\/domains\/{domainId}\/records\/ns": { + "post": { + "summary": "Create a new NS record for the given domain.", + "operationId": "domainsCreateRecordNS", "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 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": { - "200": { - "description": "DomainPurchase", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPurchase" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27066,15 +26351,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "updatePurchase", + "method": "createRecordNS", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-purchase.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" ], @@ -27091,12 +26376,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 +26392,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" ] } } @@ -27122,21 +26426,21 @@ } } }, - "\/domains\/suggestions": { - "get": { - "summary": "List domain suggestions", - "operationId": "domainsListSuggestions", + "\/domains\/{domainId}\/records\/ns\/{recordId}": { + "put": { + "summary": "Update an existing NS record for the given domain.", + "operationId": "domainsUpdateRecordNS", "tags": [ "domains" ], - "description": "List domain suggestions.", + "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": "Domain suggestions list", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainSuggestionsList" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27144,15 +26448,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "listSuggestions", + "method": "updateRecordNS", "group": null, "cookies": false, "type": "", - "demo": "domains\/list-suggestions.md", - "rate-limit": 50, + "demo": "domains\/update-record-ns.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "domains.write", "platforms": [ "console" ], @@ -27169,95 +26473,81 @@ ], "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": "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" + ] + } + } + } + } } }, - "\/domains\/transfers\/in": { + "\/domains\/{domainId}\/records\/srv": { "post": { - "summary": "Create a domain transfer in.", - "operationId": "domainsCreateTransferIn", + "summary": "Create a new SRV record for the given domain.", + "operationId": "domainsCreateRecordSRV", "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 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": { "201": { - "description": "DomainPurchase", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPurchase" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27265,15 +26555,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTransferIn", + "method": "createRecordSRV", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-transfer-in.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" ], @@ -27288,44 +26578,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": { - "domain": { + "name": { "type": "string", - "description": "Domain name to transfer in.", + "description": "Record name (service name).", "x-example": null }, - "organizationId": { + "value": { "type": "string", - "description": "Organization ID that this domain will belong to.", - "x-example": "" + "description": "Target hostname for this SRV record.", + "x-example": "" }, - "authCode": { - "type": "string", - "description": "Authorization code for the domain transfer.", - "x-example": "" + "ttl": { + "type": "integer", + "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 transfer.", - "default": true, - "x-example": false + "priority": { + "type": "integer", + "description": "Record priority.", + "x-example": null, + "format": "int32" }, - "paymentMethodId": { - "type": "string", - "description": "Payment method ID to authorize and capture the transfer.", - "x-example": "" - } - }, - "required": [ - "domain", - "organizationId", - "authCode", - "paymentMethodId" + "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" ] } } @@ -27333,21 +26651,21 @@ } } }, - "\/domains\/transfers\/in\/{invoiceId}": { - "patch": { - "summary": "Confirm a domain transfer in", - "operationId": "domainsUpdateTransferIn", + "\/domains\/{domainId}\/records\/srv\/{recordId}": { + "put": { + "summary": "Update an existing SRV record for the given domain.", + "operationId": "domainsUpdateRecordSRV", "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 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": "DomainPurchase", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainPurchase" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27355,15 +26673,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTransferIn", + "method": "updateRecordSRV", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-transfer-in.md", + "demo": "domains\/update-record-srv.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "domains.write", "platforms": [ "console" ], @@ -27380,12 +26698,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 +26724,54 @@ "schema": { "type": "object", "properties": { - "organizationId": { + "name": { "type": "string", - "description": "Team ID that owns the domain.", - "x-example": "" + "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": [ - "organizationId" + "name", + "value", + "ttl", + "priority", + "weight", + "port" ] } } @@ -27411,21 +26779,21 @@ } } }, - "\/domains\/transfers\/out": { + "\/domains\/{domainId}\/records\/txt": { "post": { - "summary": "Create a domain transfer out.", - "operationId": "domainsCreateTransferOut", + "summary": "Create a new TXT record for the given domain.", + "operationId": "domainsCreateRecordTXT", "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 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": { - "202": { - "description": "domainTransferOut", + "201": { + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainTransferOut" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27433,15 +26801,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTransferOut", + "method": "createRecordTXT", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-transfer-out.md", + "demo": "domains\/create-record-txt.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "billing.write", + "scope": "domains.write", "platforms": [ "console" ], @@ -27456,26 +26824,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": { - "domainId": { + "name": { "type": "string", - "description": "Domain unique ID.", - "x-example": "" + "description": "Record name (subdomain) for the TXT record.", + "x-example": null }, - "organizationId": { + "value": { "type": "string", - "description": "Organization ID that this domain belongs to.", - "x-example": "" + "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": [ - "domainId", - "organizationId" + "name", + "ttl" ] } } @@ -27483,21 +26876,128 @@ } } }, - "\/domains\/{domainId}": { + "\/domains\/{domainId}\/records\/txt\/{recordId}": { + "put": { + "summary": "Update an existing TXT record for the given domain.", + "operationId": "domainsUpdateRecordTXT", + "tags": [ + "domains" + ], + "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": "DNSRecord", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dnsRecord" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateRecordTXT", + "group": null, + "cookies": false, + "type": "", + "demo": "domains\/update-record-txt.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": [ + { + "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) 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}\/records\/{recordId}": { "get": { - "summary": "Get a single domain by its unique ID.", - "operationId": "domainsGet", + "summary": "Get a single DNS record for a given domain by record ID.", + "operationId": "domainsGetRecord", "tags": [ "domains" ], - "description": "Get a domain by its unique ID.", + "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": { "200": { - "description": "Domain", + "description": "DNSRecord", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/dnsRecord" } } } @@ -27505,11 +27005,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "get", + "method": "getRecord", "group": null, "cookies": false, "type": "", - "demo": "domains\/get.md", + "demo": "domains\/get-record.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -27538,16 +27038,26 @@ "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", + "summary": "Delete a DNS record for the given domain.", + "operationId": "domainsDeleteRecord", "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.", + "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" @@ -27555,11 +27065,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "delete", + "method": "deleteRecord", "group": null, "cookies": false, "type": "", - "demo": "domains\/delete.md", + "demo": "domains\/delete-record.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -27591,18 +27101,28 @@ "x-example": "" }, "in": "path" + }, + { + "name": "recordId", + "description": "DNS record unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } ] } }, - "\/domains\/{domainId}\/auto-renewal": { + "\/domains\/{domainId}\/team": { "patch": { - "summary": "Update domain auto-renewal setting.", - "operationId": "domainsUpdateAutoRenewal", + "summary": "Update domain team.", + "operationId": "domainsUpdateTeam", "tags": [ "domains" ], - "description": "Enable or disable auto-renewal for a domain.", + "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": { "200": { "description": "Domain", @@ -27617,11 +27137,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateAutoRenewal", + "method": "updateTeam", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-auto-renewal.md", + "demo": "domains\/update-team.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -27658,14 +27178,14 @@ "schema": { "type": "object", "properties": { - "autoRenewal": { - "type": "boolean", - "description": "Whether the domain should renew automatically.", - "x-example": false + "teamId": { + "type": "string", + "description": "New team unique ID.", + "x-example": "" } }, "required": [ - "autoRenewal" + "teamId" ] } } @@ -27673,21 +27193,21 @@ } } }, - "\/domains\/{domainId}\/nameservers": { - "patch": { - "summary": "Verify which NS records are used and update the domain accordingly.", - "operationId": "domainsUpdateNameservers", + "\/domains\/{domainId}\/transfers\/status": { + "get": { + "summary": "Get domain transfer status.", + "operationId": "domainsGetTransferStatus", "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": "Retrieve the current transfer status for a domain. Returns the status, an optional reason, and a timestamp of the last status change.", "responses": { "200": { - "description": "Domain", + "description": "domainTransferStatus", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/domainTransferStatus" } } } @@ -27695,15 +27215,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateNameservers", + "method": "getTransferStatus", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-nameservers.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" ], @@ -27732,21 +27252,21 @@ ] } }, - "\/domains\/{domainId}\/presets\/google-workspace": { + "\/domains\/{domainId}\/zone": { "get": { - "summary": "Get Google Workspace preset (Records)", - "operationId": "domainsGetPresetGoogleWorkspace", + "summary": "Retrieve the DNS zone file for the given domain.", + "operationId": "domainsGetZone", "tags": [ "domains" ], - "description": "List Google Workspace 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" } } } @@ -27754,15 +27274,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetGoogleWorkspace", + "method": "getZone", "group": null, "cookies": false, "type": "", - "demo": "domains\/get-preset-google-workspace.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" ], @@ -27790,20 +27310,20 @@ } ] }, - "post": { - "summary": "Create Google Workspace preset (Records)", - "operationId": "domainsCreatePresetGoogleWorkspace", + "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 Google Workspace DNS records to the domain. This will create the required MX records \nfor Google Workspace email hosting.", + "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" } } } @@ -27811,11 +27331,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetGoogleWorkspace", + "method": "updateZone", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-preset-google-workspace.md", + "demo": "domains\/update-zone.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -27845,24 +27365,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\/icloud": { + "\/functions": { "get": { - "summary": "Get iCloud preset (Records)", - "operationId": "domainsGetPresetICloud", + "summary": "List functions", + "operationId": "functionsList", "tags": [ - "domains" + "functions" ], - "description": "List iCloud 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" } } } @@ -27870,17 +27409,18 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetICloud", - "group": null, + "method": "list", + "group": "functions", "cookies": false, "type": "", - "demo": "domains\/get-preset-i-cloud.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, @@ -27890,36 +27430,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 iCloud preset (Records)", - "operationId": "domainsCreatePresetICloud", + "summary": "Create function", + "operationId": "functionsCreate", "tags": [ - "domains" + "functions" ], - "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": "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" } } } @@ -27927,58 +27493,5053 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetICloud", - "group": null, + "method": "create", + "group": "functions", "cookies": false, "type": "", - "demo": "domains\/create-preset-i-cloud.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", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "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.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.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 200 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.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.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.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.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 200 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\/geo": { + "get": { + "summary": "Get geo", + "operationId": "healthGetGeo", + "tags": [ + "health" + ], + "description": "Check the Appwrite geo service is up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getGeo", + "group": "health", + "cookies": false, + "type": "", + "demo": "health\/get-geo.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-geo.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, + "\/health\/geo-premium": { + "get": { + "summary": "Get premium geo health", + "operationId": "healthGetGeoPremium", + "tags": [ + "health" + ], + "description": "Get the health status of the premium geo service. This endpoint probes the internal `appwrite-geo-premium` service used for premium IP-to-location lookups (organizations or projects on the premium geo DB addon) and returns a `pass` status when reachable.\n", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getGeoPremium", + "group": null, + "cookies": false, + "type": "", + "demo": "health\/get-geo-premium.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-geo-premium.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": "integer", + "format": "int32", + "default": 5000 + }, + "in": "query" + } + ] + } + }, + "\/health\/queue\/certificates": { + "get": { + "summary": "Get certificates queue", + "operationId": "healthGetQueueCertificates", + "tags": [ + "health" + ], + "description": "Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getQueueCertificates", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-certificates.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-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": "name", + "description": "Queue name for which to check the queue size", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "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" + } + ] + } + }, + "\/health\/queue\/deletes": { + "get": { + "summary": "Get deletes queue", + "operationId": "healthGetQueueDeletes", + "tags": [ + "health" + ], + "description": "Get the number of background destructive 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": "getQueueDeletes", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-deletes.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-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": "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", + "v1-notifications" + ], + "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", + "v1-notifications" + ] + }, + "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" + } + ] + } + }, + "\/health\/queue\/functions": { + "get": { + "summary": "Get functions queue", + "operationId": "healthGetQueueFunctions", + "tags": [ + "health" + ], + "description": "Get the number of function executions 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": "getQueueFunctions", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-functions.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-functions.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": "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\/messaging": { + "get": { + "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" + "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": [] + "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}\/presets\/mailgun": { + "\/health\/queue\/migrations": { "get": { - "summary": "Get Mailgun preset (Records)", - "operationId": "domainsGetPresetMailgun", + "summary": "Get migrations queue", + "operationId": "healthGetQueueMigrations", "tags": [ - "domains" + "health" ], - "description": "List Mailgun DNS records.", + "description": "Get the number of migrations 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" } } } @@ -27986,56 +32547,125 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetMailgun", - "group": null, + "method": "getQueueMigrations", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/get-preset-mailgun.md", + "demo": "health\/get-queue-migrations.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-migrations.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\/notifications": { + "get": { + "summary": "Get notifications queue", + "operationId": "healthGetQueueNotifications", + "tags": [ + "health" + ], + "description": "Get the number of jobs in the notifications queue.\n", + "responses": { + "200": { + "description": "Health Queue", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthQueue" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getQueueNotifications", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-notifications.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-notifications.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" } ] - }, - "post": { - "summary": "Create Mailgun preset (Records)", - "operationId": "domainsCreatePresetMailgun", + } + }, + "\/health\/queue\/region-manager": { + "get": { + "summary": "Get region manager queue", + "operationId": "healthGetQueueRegionManager", "tags": [ - "domains" + "health" ], - "description": "Add Mailgun DNS records to the domain. This endpoint will create the required DNS records \nfor Mailgun in the specified domain.", + "description": "Get region manager queue.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28043,58 +32673,62 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetMailgun", + "method": "getQueueRegionManager", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-preset-mailgun.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" + "in": "query" } ] } }, - "\/domains\/{domainId}\/presets\/outlook": { + "\/health\/queue\/stats-resources": { "get": { - "summary": "Get Outlook preset (Records)", - "operationId": "domainsGetPresetOutlook", + "summary": "Get stats resources queue", + "operationId": "healthGetQueueStatsResources", "tags": [ - "domains" + "health" ], - "description": "List Outlook DNS records.", + "description": "Get the number of metrics that are waiting to be processed in the Appwrite stats resources queue.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28102,56 +32736,125 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetOutlook", - "group": null, + "method": "getQueueStatsResources", + "group": "queue", "cookies": false, "type": "", - "demo": "domains\/get-preset-outlook.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": [], + "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\/stats-usage": { + "get": { + "summary": "Get stats usage queue", + "operationId": "healthGetQueueUsage", + "tags": [ + "health" + ], + "description": "Get the number of metrics 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": "getQueueUsage", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-usage.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-stats-usage.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" } ] - }, - "post": { - "summary": "Create Outlook preset (Records)", - "operationId": "domainsCreatePresetOutlook", + } + }, + "\/health\/queue\/threats": { + "get": { + "summary": "Get threats queue", + "operationId": "healthGetQueueThreats", "tags": [ - "domains" + "health" ], - "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": "Get threats queue.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Health Queue", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/healthQueue" } } } @@ -28159,58 +32862,225 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetOutlook", + "method": "getQueueThreats", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-preset-outlook.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": [], + "Key": [] + } + ], + "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" + } + ] + } + }, + "\/health\/queue\/webhooks": { + "get": { + "summary": "Get webhooks queue", + "operationId": "healthGetQueueWebhooks", + "tags": [ + "health" + ], + "description": "Get the number of webhooks 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": "getQueueWebhooks", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-webhooks.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-webhooks.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" + } + ] + } + }, + "\/health\/storage": { + "get": { + "summary": "Get storage", + "operationId": "healthGetStorage", + "tags": [ + "health" + ], + "description": "Check the Appwrite 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": "getStorage", + "group": "storage", + "cookies": false, + "type": "", + "demo": "health\/get-storage.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.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": [ + { + "Project": [], + "Key": [] } ] } }, - "\/domains\/{domainId}\/presets\/proton-mail": { + "\/health\/time": { "get": { - "summary": "Get ProtonMail preset (Records)", - "operationId": "domainsGetPresetProtonMail", + "summary": "Get time", + "operationId": "healthGetTime", "tags": [ - "domains" + "health" ], - "description": "List ProtonMail DNS records.", + "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": { - "201": { - "description": "DNS records list", + "200": { + "description": "Health Time", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/healthTime" } } } @@ -28218,56 +33088,49 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetProtonMail", - "group": null, + "method": "getTime", + "group": "health", "cookies": false, "type": "", - "demo": "domains\/get-preset-proton-mail.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" + "Project": [], + "Key": [] } ] - }, - "post": { - "summary": "Create ProtonMail preset (Records)", - "operationId": "domainsCreatePresetProtonMail", + } + }, + "\/locale": { + "get": { + "summary": "Get user locale", + "operationId": "localeGet", "tags": [ - "domains" + "locale" ], - "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 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": "DNS records list", + "200": { + "description": "Locale", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/cloudLocale" } } } @@ -28275,58 +33138,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetProtonMail", + "method": "get", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-preset-proton-mail.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" + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } ] } }, - "\/domains\/{domainId}\/presets\/zoho": { + "\/locale\/codes": { "get": { - "summary": "Get Zoho preset (Records)", - "operationId": "domainsGetPresetZoho", + "summary": "List locale codes", + "operationId": "localeListCodes", "tags": [ - "domains" + "locale" ], - "description": "List Zoho DNS records.", + "description": "List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Locale codes list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/localeCodeList" } } } @@ -28334,56 +33191,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPresetZoho", + "method": "listCodes", "group": null, "cookies": false, "type": "", - "demo": "domains\/get-preset-zoho.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" + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } ] - }, - "post": { - "summary": "Create Zoho Mail preset (Records)", - "operationId": "domainsCreatePresetZoho", + } + }, + "\/locale\/continents": { + "get": { + "summary": "List continents", + "operationId": "localeListContinents", "tags": [ - "domains" + "locale" ], - "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": "List of all continents. You can use the locale header to get the data in a supported language.", "responses": { - "201": { - "description": "DNS records list", + "200": { + "description": "Continents List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/continentList" } } } @@ -28391,58 +33244,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPresetZoho", + "method": "listContinents", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-preset-zoho.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" + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } ] } }, - "\/domains\/{domainId}\/records": { + "\/locale\/countries": { "get": { - "summary": "List DNS records for a given domain.", - "operationId": "domainsListRecords", + "summary": "List countries", + "operationId": "localeListCountries", "tags": [ - "domains" + "locale" ], - "description": "List DNS records for a given domain. You can use this endpoint to list all the DNS records\nassociated with your domain.", + "description": "List of all countries. You can use the locale header to get the data in a supported language.", "responses": { "200": { - "description": "DNS records list", + "description": "Countries List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecordsList" + "$ref": "#\/components\/schemas\/countryList" } } } @@ -28450,71 +33297,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "listRecords", + "method": "listCountries", "group": null, "cookies": false, "type": "", - "demo": "domains\/list-records.md", + "demo": "locale\/list-countries.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "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": "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": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" - }, - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } ] } }, - "\/domains\/{domainId}\/records\/a": { - "post": { - "summary": "Create a new A record for the given domain.", - "operationId": "domainsCreateRecordA", + "\/locale\/countries\/eu": { + "get": { + "summary": "List EU countries", + "operationId": "localeListCountriesEU", "tags": [ - "domains" + "locale" ], - "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": "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" } } } @@ -28522,96 +33350,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordA", + "method": "listCountriesEU", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-a.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": "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" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/a\/{recordId}": { - "put": { - "summary": "Update an existing A record for the given domain.", - "operationId": "domainsUpdateRecordA", + "\/locale\/countries\/phones": { + "get": { + "summary": "List countries phone codes", + "operationId": "localeListCountriesPhones", "tags": [ - "domains" + "locale" ], - "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": "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" } } } @@ -28619,106 +33403,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordA", + "method": "listCountriesPhones", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-record-a.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": "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" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/aaaa": { - "post": { - "summary": "Create a new AAAA record for the given domain.", - "operationId": "domainsCreateRecordAAAA", + "\/locale\/currencies": { + "get": { + "summary": "List currencies", + "operationId": "localeListCurrencies", "tags": [ - "domains" + "locale" ], - "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": "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" } } } @@ -28726,96 +33456,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordAAAA", + "method": "listCurrencies", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-aaaa.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": "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" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } - } - }, - "\/domains\/{domainId}\/records\/aaaa\/{recordId}": { - "put": { - "summary": "Update an existing AAAA record for the given domain.", - "operationId": "domainsUpdateRecordAAAA", + ] + } + }, + "\/locale\/languages": { + "get": { + "summary": "List languages", + "operationId": "localeListLanguages", "tags": [ - "domains" + "locale" ], - "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": "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" } } } @@ -28823,106 +33509,52 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordAAAA", + "method": "listLanguages", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-record-aaaa.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": [] - } - ], - "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": "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" - ] - } - } + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } - } + ] } }, - "\/domains\/{domainId}\/records\/alias": { + "\/manager\/blocks": { "post": { - "summary": "Create a new ALIAS record for the given domain.", - "operationId": "domainsCreateRecordAlias", + "summary": "Create a new resource block for a project", + "operationId": "managerCreateBlock", "tags": [ - "domains" + "manager" ], - "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": "Creates a new resource block.", "responses": { "201": { - "description": "DNSRecord", + "description": "Block", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/block" } } } @@ -28930,96 +33562,118 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordAlias", + "method": "createBlock", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-alias.md", + "demo": "manager\/create-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.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "name": { + "projectId": { "type": "string", - "description": "Record name.", - "x-example": null + "description": "Project ID", + "x-example": "" }, - "value": { + "resourceType": { "type": "string", - "description": "Target domain for this ALIAS record.", - "x-example": "" + "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" + ] }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" + "resourceId": { + "type": "string", + "description": "Optional resource ID (if omitted, all resources of this type will be blocked)", + "default": "", + "x-example": "" }, - "comment": { + "mode": { "type": "string", - "description": "A comment for this record.", + "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" + ] + }, + "reason": { + "type": "string", + "description": "Optional reason why the resource is blocked", "default": "", - "x-example": "" + "x-example": "" + }, + "expiredAt": { + "type": "string", + "description": "Optional expiration date for the block", + "default": "", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime" } }, "required": [ - "name", - "value", - "ttl" + "projectId", + "resourceType" ] } } } } - } - }, - "\/domains\/{domainId}\/records\/alias\/{recordId}": { - "put": { - "summary": "Update an existing ALIAS record for the given domain.", - "operationId": "domainsUpdateRecordAlias", + }, + "delete": { + "summary": "Delete resource blocks for a project", + "operationId": "managerDeleteBlock", "tags": [ - "domains" + "manager" ], - "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": "Deletes resource blocks for a project.", "responses": { "200": { - "description": "DNSRecord", + "description": "BlockDelete", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/blockDelete" } } } @@ -29027,106 +33681,94 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordAlias", + "method": "deleteBlock", "group": null, "cookies": false, "type": "", - "demo": "domains\/update-record-alias.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" + "in": "query" }, { - "name": "recordId", - "description": "DNS record unique ID.", + "name": "resourceType", + "description": "Resource type to unblock", "required": true, "schema": { "type": "string", - "x-example": "" + "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": "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" + }, + { + "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\/caa": { - "post": { - "summary": "Create a new CAA record for the given domain.", - "operationId": "domainsCreateRecordCAA", + "\/manager\/blocks\/{projectId}": { + "get": { + "summary": "List all resource blocks for a project", + "operationId": "managerListBlocks", "tags": [ - "domains" + "manager" ], - "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": "Lists all resource blocks for a project.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Blocks list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/blockList" } } } @@ -29134,96 +33776,213 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordCAA", + "method": "listBlocks", "group": null, "cookies": false, "type": "", - "demo": "domains\/create-record-caa.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": [ + "parameters": [ { - "Project": [] + "name": "projectId", + "description": "Project ID", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" } + ] + } + }, + "\/manager\/cache": { + "delete": { + "summary": "Clear internal cache", + "operationId": "managerDeleteCache", + "tags": [ + "manager" ], + "description": "Clears internal cache.", + "responses": { + "200": { + "description": "File", + "content": { + "application\/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteCache", + "group": "cache", + "cookies": false, + "type": "", + "demo": "manager\/delete-cache.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "", + "platforms": [ + "console" + ], + "packaging": false, + "public": true + }, "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, + "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" + }, + { + "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": "" + "x-example": "", + "default": "" }, - "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" - ] - } - } + "in": "query" } - } + ] } }, - "\/domains\/{domainId}\/records\/caa\/{recordId}": { - "put": { - "summary": "Update an existing CAA record for the given domain.", - "operationId": "domainsUpdateRecordCAA", + "\/manager\/users\/status": { + "patch": { + "summary": "Update a user status by ID or email", + "operationId": "managerUpdateUserStatus", "tags": [ - "domains" + "manager" ], - "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": "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" } } } @@ -29231,84 +33990,53 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordCAA", - "group": null, + "method": "updateUserStatus", + "group": "users", "cookies": false, "type": "", - "demo": "domains\/update-record-caa.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.", - "x-example": null + "description": "User ID.", + "default": "", + "x-example": "" }, - "value": { + "email": { "type": "string", - "description": "CAA value (e.g. issuer domain).", - "x-example": null + "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" ] } } @@ -29316,21 +34044,21 @@ } } }, - "\/domains\/{domainId}\/records\/cname": { - "post": { - "summary": "Create a new CNAME record for the given domain.", - "operationId": "domainsCreateRecordCNAME", + "\/messaging\/messages": { + "get": { + "summary": "List messages", + "operationId": "messagingListMessages", "tags": [ - "domains" + "messaging" ], - "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 a list of all messages from the current Appwrite project.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Message list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/messageList" } } } @@ -29338,96 +34066,86 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordCNAME", - "group": null, + "method": "listMessages", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/create-record-cname.md", + "demo": "messaging\/list-messages.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "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": "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" - } - ], - "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" - ] - } - } + "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" } - } + ] } }, - "\/domains\/{domainId}\/records\/cname\/{recordId}": { - "put": { - "summary": "Update an existing CNAME record for the given domain.", - "operationId": "domainsUpdateRecordCNAME", + "\/messaging\/messages\/email": { + "post": { + "summary": "Create email", + "operationId": "messagingCreateEmail", "tags": [ - "domains" + "messaging" ], - "description": "Update an existing CNAME record for the given domain.", + "description": "Create a new email message.", "responses": { - "200": { - "description": "DNSRecord", + "201": { + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/message" } } } @@ -29435,49 +34153,30 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordCNAME", - "group": null, + "method": "createEmail", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/update-record-cname.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" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "Project": [], + "Key": [] } ], "requestBody": { @@ -29486,33 +34185,102 @@ "schema": { "type": "object", "properties": { - "name": { + "messageId": { "type": "string", - "description": "Record name (subdomain).", - "x-example": null + "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" + } }, - "value": { + "subject": { "type": "string", - "description": "Canonical target for this CNAME record.", - "x-example": "" + "description": "Email Subject.", + "x-example": "" }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" + "content": { + "type": "string", + "description": "Email Content.", + "x-example": "" }, - "comment": { + "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": "A comment for this record.", - "default": "", - "x-example": "" + "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": [ - "name", - "value", - "ttl" + "messageId", + "subject", + "content" ] } } @@ -29520,21 +34288,21 @@ } } }, - "\/domains\/{domainId}\/records\/https": { - "post": { - "summary": "Create a new HTTPS record for the given domain.", - "operationId": "domainsCreateRecordHTTPS", + "\/messaging\/messages\/email\/{messageId}": { + "patch": { + "summary": "Update email", + "operationId": "messagingUpdateEmail", "tags": [ - "domains" + "messaging" ], - "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": "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": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/message" } } } @@ -29542,37 +34310,40 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordHTTPS", - "group": null, + "method": "updateEmail", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/create-record-https.md", + "demo": "messaging\/update-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\/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" } @@ -29583,55 +34354,113 @@ "schema": { "type": "object", "properties": { - "name": { + "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": "Record name (subdomain).", - "x-example": null + "description": "Email Subject.", + "x-example": "", + "x-nullable": true }, - "value": { + "content": { "type": "string", - "description": "Target for the HTTPS record.", - "x-example": "" + "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 }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" + "bcc": { + "type": "array", + "description": "Array of target IDs to be added as BCC.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true }, - "comment": { + "scheduledAt": { "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "" + "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 } - }, - "required": [ - "name", - "value", - "ttl" - ] + } } } } } } }, - "\/domains\/{domainId}\/records\/https\/{recordId}": { - "put": { - "summary": "Update an existing HTTPS record for the given domain.", - "operationId": "domainsUpdateRecordHTTPS", + "\/messaging\/messages\/push": { + "post": { + "summary": "Create push notification", + "operationId": "messagingCreatePush", "tags": [ - "domains" + "messaging" ], - "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": "Create a new push notification.", "responses": { - "200": { - "description": "DNSRecord", + "201": { + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/message" } } } @@ -29639,49 +34468,30 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordHTTPS", - "group": null, + "method": "createPush", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/update-record-https.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" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" + "Project": [], + "Key": [] } ], "requestBody": { @@ -29690,33 +34500,146 @@ "schema": { "type": "object", "properties": { - "name": { + "messageId": { "type": "string", - "description": "Record name (subdomain).", - "x-example": null + "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" + } }, - "value": { + "title": { "type": "string", - "description": "Target for the HTTPS record.", - "x-example": "" + "description": "Title for push notification.", + "default": "", + "x-example": "" }, - "ttl": { + "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": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, + "description": "Badge for push notification. Available only for iOS Platform.", + "default": -1, + "x-example": null, "format": "int32" }, - "comment": { + "draft": { + "type": "boolean", + "description": "Is message a draft", + "default": false, + "x-example": false + }, + "scheduledAt": { "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "<COMMENT>" + "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": [ - "name", - "value", - "ttl" + "messageId" ] } } @@ -29724,21 +34647,21 @@ } } }, - "\/domains\/{domainId}\/records\/mx": { - "post": { - "summary": "Create a new MX record for the given domain.", - "operationId": "domainsCreateRecordMX", + "\/messaging\/messages\/push\/{messageId}": { + "patch": { + "summary": "Update push notification", + "operationId": "messagingUpdatePush", "tags": [ - "domains" + "messaging" ], - "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": "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": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/message" } } } @@ -29746,37 +34669,40 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordMX", - "group": null, + "method": "updatePush", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/create-record-mx.md", + "demo": "messaging\/update-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\/update-push.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": "<DOMAIN_ID>" + "x-example": "<MESSAGE_ID>" }, "in": "path" } @@ -29787,112 +34713,258 @@ "schema": { "type": "object", "properties": { - "name": { + "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": "Record name (subdomain).", - "x-example": null + "description": "Title for push notification.", + "x-example": "<TITLE>", + "x-nullable": true }, - "value": { + "body": { "type": "string", - "description": "Mail server domain for this MX record.", - "x-example": "<VALUE>" + "description": "Body for push notification.", + "x-example": "<BODY>", + "x-nullable": true }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" + "data": { + "type": "object", + "description": "Additional Data for push notification.", + "default": {}, + "x-example": "{}", + "x-nullable": true }, - "priority": { + "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": "MX priority.", + "description": "Badge for push notification. Available only for iOS platforms.", "x-example": null, - "format": "int32" + "format": "int32", + "x-nullable": true }, - "comment": { + "draft": { + "type": "boolean", + "description": "Is message a draft", + "x-example": false, + "x-nullable": true + }, + "scheduledAt": { "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "<COMMENT>" + "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": { + "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" + ], + "x-nullable": true } - }, - "required": [ - "name", - "value", - "ttl", - "priority" - ] + } } } } } } }, - "\/domains\/{domainId}\/records\/mx\/{recordId}": { - "put": { - "summary": "Update an existing MX record for the given domain.", - "operationId": "domainsUpdateRecordMX", + "\/messaging\/messages\/sms": { + "post": { + "summary": "Create SMS", + "operationId": "messagingCreateSms", "tags": [ - "domains" + "messaging" ], - "description": "Update an existing MX record for the given domain.", + "description": "Create a new SMS message.", "responses": { - "200": { - "description": "DNSRecord", + "201": { + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$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 } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "updateRecordMX", - "group": null, - "cookies": false, - "type": "", - "demo": "domains\/update-record-mx.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": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DOMAIN_ID>" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<RECORD_ID>" - }, - "in": "path" + "Project": [], + "Key": [] } ], "requestBody": { @@ -29901,40 +34973,63 @@ "schema": { "type": "object", "properties": { - "name": { + "messageId": { "type": "string", - "description": "Record name (subdomain).", - "x-example": null + "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" + } }, - "value": { + "content": { "type": "string", - "description": "Mail server domain for this MX record.", - "x-example": "<VALUE>" + "description": "SMS Content.", + "x-example": "<CONTENT>" }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" + "topics": { + "type": "array", + "description": "List of Topic IDs.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } }, - "priority": { - "type": "integer", - "description": "MX priority.", + "users": { + "type": "array", + "description": "List of User IDs.", + "default": [], "x-example": null, - "format": "int32" + "items": { + "type": "string" + } }, - "comment": { + "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 + }, + "scheduledAt": { "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "<COMMENT>" + "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": [ - "name", - "value", - "ttl", - "priority" + "messageId", + "content" ] } } @@ -29942,59 +35037,130 @@ } } }, - "\/domains\/{domainId}\/records\/ns": { - "post": { - "summary": "Create a new NS record for the given domain.", - "operationId": "domainsCreateRecordNS", + "\/messaging\/messages\/sms\/{messageId}": { + "patch": { + "summary": "Update SMS", + "operationId": "messagingUpdateSms", "tags": [ - "domains" + "messaging" ], - "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": "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": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/message" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "createRecordNS", - "group": null, + "method": "updateSms", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/create-record-ns.md", + "demo": "messaging\/update-sms.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, + "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": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", + "name": "messageId", + "description": "Message ID.", "required": true, "schema": { "type": "string", - "x-example": "<DOMAIN_ID>" + "x-example": "<MESSAGE_ID>" }, "in": "path" } @@ -30005,55 +35171,74 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Record name (subdomain).", - "x-example": null + "topics": { + "type": "array", + "description": "List of Topic IDs.", + "x-example": null, + "items": { + "type": "string" + }, + "x-nullable": true }, - "value": { + "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": "Nameserver target for this NS record.", - "x-example": "<VALUE>" + "description": "Email Content.", + "x-example": "<CONTENT>", + "x-nullable": true }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" + "draft": { + "type": "boolean", + "description": "Is message a draft", + "x-example": false, + "x-nullable": true }, - "comment": { + "scheduledAt": { "type": "string", - "description": "A comment for this record.", - "default": "", - "x-example": "<COMMENT>" + "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": [ - "name", - "value", - "ttl" - ] + } } } } } } }, - "\/domains\/{domainId}\/records\/ns\/{recordId}": { - "put": { - "summary": "Update an existing NS record for the given domain.", - "operationId": "domainsUpdateRecordNS", + "\/messaging\/messages\/{messageId}": { + "get": { + "summary": "Get message", + "operationId": "messagingGetMessage", "tags": [ - "domains" + "messaging" ], - "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": "Get a message by its unique ID.\n", "responses": { "200": { - "description": "DNSRecord", + "description": "Message", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/message" } } } @@ -30061,224 +35246,114 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordNS", - "group": null, + "method": "getMessage", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/update-record-ns.md", + "demo": "messaging\/get-message.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "messages.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DOMAIN_ID>" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", + "name": "messageId", + "description": "Message ID.", "required": true, "schema": { "type": "string", - "x-example": "<RECORD_ID>" + "x-example": "<MESSAGE_ID>" }, "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": "<VALUE>" - }, - "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": "<COMMENT>" - } - }, - "required": [ - "name", - "value", - "ttl" - ] - } - } - } - } - } - }, - "\/domains\/{domainId}\/records\/srv": { - "post": { - "summary": "Create a new SRV record for the given domain.", - "operationId": "domainsCreateRecordSRV", + ] + }, + "delete": { + "summary": "Delete message", + "operationId": "messagingDelete", "tags": [ - "domains" + "messaging" ], - "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": "Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message.", "responses": { - "201": { - "description": "DNSRecord", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "createRecordSRV", - "group": null, + "method": "delete", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/create-record-srv.md", + "demo": "messaging\/delete.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\/delete-message.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": "<DOMAIN_ID>" + "x-example": "<MESSAGE_ID>" }, "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": "<VALUE>" - }, - "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": "<COMMENT>" - } - }, - "required": [ - "name", - "value", - "ttl", - "priority", - "weight", - "port" - ] - } - } - } - } + ] } }, - "\/domains\/{domainId}\/records\/srv\/{recordId}": { - "put": { - "summary": "Update an existing SRV record for the given domain.", - "operationId": "domainsUpdateRecordSRV", + "\/messaging\/messages\/{messageId}\/targets": { + "get": { + "summary": "List message targets", + "operationId": "messagingListTargets", "tags": [ - "domains" + "messaging" ], - "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": "Get a list of the targets associated with a message.", "responses": { "200": { - "description": "DNSRecord", + "description": "Target list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/targetList" } } } @@ -30286,127 +35361,85 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateRecordSRV", - "group": null, + "method": "listTargets", + "group": "messages", "cookies": false, "type": "", - "demo": "domains\/update-record-srv.md", + "demo": "messaging\/list-targets.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "messages.read", "platforms": [ - "console" + "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": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", + "name": "messageId", + "description": "Message ID.", "required": true, "schema": { "type": "string", - "x-example": "<DOMAIN_ID>" + "x-example": "<MESSAGE_ID>" }, "in": "path" }, { - "name": "recordId", - "description": "DNS record 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: userId, providerId, identifier, providerType", + "required": false, "schema": { - "type": "string", - "x-example": "<RECORD_ID>" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "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": "<VALUE>" - }, - "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": "<COMMENT>" - } - }, - "required": [ - "name", - "value", - "ttl", - "priority", - "weight", - "port" - ] - } - } + "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" } - } + ] } }, - "\/domains\/{domainId}\/records\/txt": { - "post": { - "summary": "Create a new TXT record for the given domain.", - "operationId": "domainsCreateRecordTXT", + "\/messaging\/providers": { + "get": { + "summary": "List providers", + "operationId": "messagingListProviders", "tags": [ - "domains" + "messaging" ], - "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": "Get a list of all providers from the current Appwrite project.", "responses": { - "201": { - "description": "DNSRecord", + "200": { + "description": "Provider list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/providerList" } } } @@ -30414,146 +35447,189 @@ }, "deprecated": false, "x-appwrite": { - "method": "createRecordTXT", - "group": null, + "method": "listProviders", + "group": "providers", "cookies": false, "type": "", - "demo": "domains\/create-record-txt.md", + "demo": "messaging\/list-providers.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "providers.read", "platforms": [ - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.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: 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, "schema": { "type": "string", - "x-example": "<DOMAIN_ID>" + "x-example": "<SEARCH>", + "default": "" }, - "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": "<VALUE>" - }, - "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": "<COMMENT>" - } - }, - "required": [ - "name", - "ttl" - ] - } - } + "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" } - } + ] } }, - "\/domains\/{domainId}\/records\/txt\/{recordId}": { - "put": { - "summary": "Update an existing TXT record for the given domain.", - "operationId": "domainsUpdateRecordTXT", + "\/messaging\/providers\/apns": { + "post": { + "summary": "Create APNS provider", + "operationId": "messagingCreateApnsProvider", "tags": [ - "domains" + "messaging" ], - "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": "Create a new Apple Push Notification service provider.", "responses": { - "200": { - "description": "DNSRecord", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/provider" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "updateRecordTXT", - "group": null, + "method": "createApnsProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "domains\/update-record-txt.md", + "demo": "messaging\/create-apns-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "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": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DOMAIN_ID>" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<RECORD_ID>" - }, - "in": "path" + "Project": [], + "Key": [] } ], "requestBody": { @@ -30562,33 +35638,59 @@ "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": "Record name (subdomain) for the TXT record.", - "x-example": null + "description": "Provider name.", + "x-example": "<NAME>" }, - "value": { + "authKey": { "type": "string", - "description": "TXT record value.", - "x-example": "<VALUE>" + "description": "APNS authentication key.", + "default": "", + "x-example": "<AUTH_KEY>" }, - "ttl": { - "type": "integer", - "description": "Time to live, in seconds. Must be greater than 0.", - "x-example": 1, - "format": "int32" + "authKeyId": { + "type": "string", + "description": "APNS authentication key ID.", + "default": "", + "x-example": "<AUTH_KEY_ID>" }, - "comment": { + "teamId": { "type": "string", - "description": "A comment for this record.", + "description": "APNS team ID.", "default": "", - "x-example": "<COMMENT>" + "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": [ - "name", - "value", - "ttl" + "providerId", + "name" ] } } @@ -30596,193 +35698,301 @@ } } }, - "\/domains\/{domainId}\/records\/{recordId}": { - "get": { - "summary": "Get a single DNS record for a given domain by record ID.", - "operationId": "domainsGetRecord", + "\/messaging\/providers\/apns\/{providerId}": { + "patch": { + "summary": "Update APNS provider", + "operationId": "messagingUpdateApnsProvider", "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": "Update a Apple Push Notification service provider by its unique ID.", "responses": { "200": { - "description": "DNSRecord", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dnsRecord" + "$ref": "#\/components\/schemas\/provider" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getRecord", - "group": null, + "method": "updateApnsProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "domains\/get-record.md", + "demo": "messaging\/update-apns-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "providers.write", "platforms": [ - "console" + "console", + "server" ], "packaging": false, - "public": true, + "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": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DOMAIN_ID>" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<RECORD_ID>" + "x-example": "<PROVIDER_ID>" }, "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, - "schema": { - "type": "string", - "x-example": "<DOMAIN_ID>" - }, - "in": "path" - }, - { - "name": "recordId", - "description": "DNS record unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<RECORD_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 + } + } + } + } } - ] + } } }, - "\/domains\/{domainId}\/team": { - "patch": { - "summary": "Update domain team.", - "operationId": "domainsUpdateTeam", + "\/messaging\/providers\/fcm": { + "post": { + "summary": "Create FCM provider", + "operationId": "messagingCreateFcmProvider", "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 Firebase Cloud Messaging provider.", "responses": { - "200": { - "description": "Domain", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/provider" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "updateTeam", - "group": null, + "method": "createFcmProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "domains\/update-team.md", + "demo": "messaging\/create-fcm-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "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-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 + } + ], "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DOMAIN_ID>" - }, - "in": "path" + "Project": [], + "Key": [] } ], "requestBody": { @@ -30791,14 +36001,36 @@ "schema": { "type": "object", "properties": { - "teamId": { + "providerId": { "type": "string", - "description": "New team unique ID.", - "x-example": "<TEAM_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" + } + }, + "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": [ - "teamId" + "providerId", + "name" ] } } @@ -30806,80 +36038,175 @@ } } }, - "\/domains\/{domainId}\/transfers\/status": { - "get": { - "summary": "Get domain transfer status.", - "operationId": "domainsGetTransferStatus", + "\/messaging\/providers\/fcm\/{providerId}": { + "patch": { + "summary": "Update FCM provider", + "operationId": "messagingUpdateFcmProvider", "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 a Firebase Cloud Messaging provider by its unique ID.", "responses": { "200": { - "description": "domainTransferStatus", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domainTransferStatus" + "$ref": "#\/components\/schemas\/provider" } } } } }, - "deprecated": false, + "deprecated": true, "x-appwrite": { - "method": "getTransferStatus", - "group": null, + "method": "updateFcmProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "domains\/get-transfer-status.md", + "demo": "messaging\/update-fcm-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "providers.write", "platforms": [ - "console" + "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": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<DOMAIN_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 + }, + "serviceAccountJSON": { + "type": "object", + "description": "FCM service account JSON.", + "default": {}, + "x-example": "{}", + "x-nullable": true + } + } + } + } + } + } } }, - "\/domains\/{domainId}\/zone": { - "get": { - "summary": "Retrieve the DNS zone file for the given domain.", - "operationId": "domainsGetZone", + "\/messaging\/providers\/mailgun": { + "post": { + "summary": "Create Mailgun provider", + "operationId": "messagingCreateMailgunProvider", "tags": [ - "domains" + "messaging" ], - "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.", + "description": "Create a new Mailgun provider.", "responses": { - "200": { - "description": "Text", + "201": { + "description": "Provider", "content": { - "text\/plain": { + "application\/json": { "schema": { - "type": "string" + "$ref": "#\/components\/schemas\/provider" } } } @@ -30887,56 +36214,127 @@ }, "deprecated": false, "x-appwrite": { - "method": "getZone", - "group": null, + "method": "createMailgunProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "domains\/get-zone.md", + "demo": "messaging\/create-mailgun-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.read", + "scope": "providers.write", "platforms": [ - "console" + "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": [] + "Project": [], + "Key": [] } ], - "parameters": [ - { - "name": "domainId", - "description": "Domain unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DOMAIN_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>" + }, + "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" + ] + } + } } - ] - }, - "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\/providers\/mailgun\/{providerId}": { + "patch": { + "summary": "Update Mailgun provider", + "operationId": "messagingUpdateMailgunProvider", "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": "Update a Mailgun provider by its unique ID.", "responses": { - "201": { - "description": "Domain", + "200": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/domain" + "$ref": "#\/components\/schemas\/provider" } } } @@ -30944,37 +36342,40 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateZone", - "group": null, + "method": "updateMailgunProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "domains\/update-zone.md", + "demo": "messaging\/update-mailgun-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "domains.write", + "scope": "providers.write", "platforms": [ - "console" + "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": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "domainId", - "description": "Domain unique ID.", + "name": "providerId", + "description": "Provider ID.", "required": true, "schema": { "type": "string", - "x-example": "<DOMAIN_ID>" + "x-example": "<PROVIDER_ID>" }, "in": "path" } @@ -30985,36 +36386,83 @@ "schema": { "type": "object", "properties": { - "content": { + "name": { "type": "string", - "description": "DNS zone file content as a string.", - "x-example": "<CONTENT>" + "description": "Provider name.", + "default": "", + "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 + }, + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "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.", + "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": [ - "content" - ] + } } } } } } }, - "\/functions": { - "get": { - "summary": "List functions", - "operationId": "functionsList", + "\/messaging\/providers\/msg91": { + "post": { + "summary": "Create Msg91 provider", + "operationId": "messagingCreateMsg91Provider", "tags": [ - "functions" + "messaging" ], - "description": "Get a list of all the project's functions. You can use the query params to filter your results.", + "description": "Create a new MSG91 provider.", "responses": { - "200": { - "description": "Functions List", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/functionList" + "$ref": "#\/components\/schemas\/provider" } } } @@ -31022,21 +36470,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "list", - "group": "functions", + "method": "createMsg91Provider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/list.md", + "demo": "messaging\/create-msg-91-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-msg91-provider.md", "auth": { "Project": [] } @@ -31047,58 +36496,75 @@ "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, 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": "<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>" + }, + "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" + ] + } + } } - ] - }, - "post": { - "summary": "Create function", - "operationId": "functionsCreate", + } + } + }, + "\/messaging\/providers\/msg91\/{providerId}": { + "patch": { + "summary": "Update Msg91 provider", + "operationId": "messagingUpdateMsg91Provider", "tags": [ - "functions" + "messaging" ], - "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.", + "description": "Update a MSG91 provider by its unique ID.", "responses": { - "201": { - "description": "Function", + "200": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/function" + "$ref": "#\/components\/schemas\/provider" } } } @@ -31106,21 +36572,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "create", - "group": "functions", + "method": "updateMsg91Provider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/create.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": [] } @@ -31131,580 +36598,308 @@ "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": { - "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.", + "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" - } + "templateId": { + "type": "string", + "description": "Msg91 template ID.", + "default": "", + "x-example": "<TEMPLATE_ID>" }, - "events": { - "type": "array", - "description": "Events list. Maximum of 100 events are allowed.", - "default": [], - "x-example": null, - "items": { - "type": "string" - } + "senderId": { + "type": "string", + "description": "Msg91 sender ID.", + "default": "", + "x-example": "<SENDER_ID>" }, - "schedule": { + "authKey": { "type": "string", - "description": "Schedule CRON syntax.", + "description": "Msg91 auth key.", "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 + "x-example": "<AUTH_KEY>" + } + } + } + } + } + } + } + }, + "\/messaging\/providers\/resend": { + "post": { + "summary": "Create Resend provider", + "operationId": "messagingCreateResendProvider", + "tags": [ + "messaging" + ], + "description": "Create a new Resend provider.", + "responses": { + "201": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createResendProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/create-resend-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-resend-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" + } }, - "logging": { - "type": "boolean", - "description": "When disabled, executions will exclude logs and errors, and will be slightly faster.", - "default": true, - "x-example": false + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" }, - "entrypoint": { + "apiKey": { "type": "string", - "description": "Entrypoint File. This path is relative to the \"providerRootDirectory\".", + "description": "Resend API key.", "default": "", - "x-example": "<ENTRYPOINT>" + "x-example": "<API_KEY>" }, - "commands": { + "fromName": { "type": "string", - "description": "Build Commands.", + "description": "Sender Name.", "default": "", - "x-example": "<COMMANDS>" + "x-example": "<FROM_NAME>" }, - "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" - ] - } + "fromEmail": { + "type": "string", + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" }, - "installationId": { + "replyToName": { "type": "string", - "description": "Appwrite Installation ID for VCS (Version Control System) deployment.", + "description": "Name set in the reply to field for the mail. Default value is sender name.", "default": "", - "x-example": "<INSTALLATION_ID>" + "x-example": "<REPLY_TO_NAME>" }, - "providerRepositoryId": { + "replyToEmail": { "type": "string", - "description": "Repository ID of the repo linked to the function.", + "description": "Email set in the reply to field for the mail. Default value is sender email.", "default": "", - "x-example": "<PROVIDER_REPOSITORY_ID>" + "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\/resend\/{providerId}": { + "patch": { + "summary": "Update Resend provider", + "operationId": "messagingUpdateResendProvider", + "tags": [ + "messaging" + ], + "description": "Update a Resend provider by its unique ID.", + "responses": { + "200": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateResendProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/update-resend-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-resend-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": { + "enabled": { "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": "Set as enabled.", + "x-example": false, + "x-nullable": true }, - "providerRootDirectory": { + "apiKey": { "type": "string", - "description": "Path to function code in the linked repo.", + "description": "Resend API key.", "default": "", - "x-example": "<PROVIDER_ROOT_DIRECTORY>" - }, - "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" - } + "x-example": "<API_KEY>" }, - "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" - } + "fromName": { + "type": "string", + "description": "Sender Name.", + "default": "", + "x-example": "<FROM_NAME>" }, - "buildSpecification": { + "fromEmail": { "type": "string", - "description": "Build specification for the function deployments.", - "default": {}, - "x-example": null + "description": "Sender email address.", + "default": "", + "x-example": "email@example.com", + "format": "email" }, - "runtimeSpecification": { + "replyToName": { "type": "string", - "description": "Runtime specification for the function executions.", - "default": {}, - "x-example": null + "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": [ - "functionId", - "name", - "runtime" - ] + } } } } } } }, - "\/functions\/runtimes": { - "get": { - "summary": "List runtimes", - "operationId": "functionsListRuntimes", + "\/messaging\/providers\/sendgrid": { + "post": { + "summary": "Create Sendgrid provider", + "operationId": "messagingCreateSendgridProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a list of all runtimes that are currently active on your instance.", + "description": "Create a new Sendgrid provider.", "responses": { - "200": { - "description": "Runtimes List", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/runtimeList" + "$ref": "#\/components\/schemas\/provider" } } } @@ -31712,21 +36907,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "listRuntimes", - "group": "runtimes", + "method": "createSendgridProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/list-runtimes.md", + "demo": "messaging\/create-sendgrid-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "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": [] } @@ -31736,24 +36932,90 @@ "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>" + }, + "apiKey": { + "type": "string", + "description": "Sendgrid 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" + ] + } + } + } + } } }, - "\/functions\/specifications": { - "get": { - "summary": "List specifications", - "operationId": "functionsListSpecifications", + "\/messaging\/providers\/sendgrid\/{providerId}": { + "patch": { + "summary": "Update Sendgrid provider", + "operationId": "messagingUpdateSendgridProvider", "tags": [ - "functions" + "messaging" ], - "description": "List allowed function specifications for this instance.", + "description": "Update a Sendgrid provider by its unique ID.", "responses": { "200": { - "description": "Specifications List", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/specificationList" + "$ref": "#\/components\/schemas\/provider" } } } @@ -31761,21 +37023,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "listSpecifications", - "group": "runtimes", + "method": "updateSendgridProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/list-specifications.md", + "demo": "messaging\/update-sendgrid-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "providers.write", "platforms": [ - "server", - "console" + "console", + "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md", "auth": { "Project": [] } @@ -31788,34 +37051,87 @@ ], "parameters": [ { - "name": "type", - "description": "Specification type to list. Can be one of: runtimes, builds.", - "required": false, + "name": "providerId", + "description": "Provider ID.", + "required": true, "schema": { "type": "string", - "x-example": "runtimes", - "default": "runtimes" + "x-example": "<PROVIDER_ID>" }, - "in": "query" + "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 + }, + "apiKey": { + "type": "string", + "description": "Sendgrid 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>" + } + } + } + } + } + } } }, - "\/functions\/templates": { - "get": { - "summary": "List templates", - "operationId": "functionsListTemplates", + "\/messaging\/providers\/ses": { + "post": { + "summary": "Create Amazon SES provider", + "operationId": "messagingCreateSesProvider", "tags": [ - "functions" + "messaging" ], - "description": "List available function templates. You can use template details in [createFunction](\/docs\/references\/cloud\/server-nodejs\/functions#create) method.", + "description": "Create a new Amazon SES provider.", "responses": { - "200": { - "description": "Function Templates List", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/templateFunctionList" + "$ref": "#\/components\/schemas\/provider" } } } @@ -31823,321 +37139,127 @@ }, "deprecated": false, "x-appwrite": { - "method": "listTemplates", - "group": "templates", + "method": "createSesProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/list-templates.md", + "demo": "messaging\/create-ses-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, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-ses-provider.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, - "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" + "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" + ] + } + } } - ] + } } }, - "\/functions\/templates\/{templateId}": { - "get": { - "summary": "Get function template", - "operationId": "functionsGetTemplate", + "\/messaging\/providers\/ses\/{providerId}": { + "patch": { + "summary": "Update Amazon SES provider", + "operationId": "messagingUpdateSesProvider", "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": "Update an Amazon SES provider by its unique ID.", "responses": { "200": { - "description": "Template Function", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/templateFunction" + "$ref": "#\/components\/schemas\/provider" } } } @@ -32145,129 +37267,623 @@ }, "deprecated": false, "x-appwrite": { - "method": "getTemplate", - "group": "templates", + "method": "updateSesProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/get-template.md", + "demo": "messaging\/update-ses-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, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-ses-provider.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "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 + }, + "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\/usage": { - "get": { - "summary": "Get functions usage", - "operationId": "functionsListUsage", + "\/messaging\/providers\/smtp": { + "post": { + "summary": "Create SMTP provider", + "operationId": "messagingCreateSmtpProvider", "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 SMTP provider.", + "responses": { + "201": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": true, + "x-appwrite": { + "method": "createSmtpProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/create-smtp-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\/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": [] + } + }, + "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>" + }, + "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" + ] + } + } + } + } + } + }, + "\/messaging\/providers\/smtp\/{providerId}": { + "patch": { + "summary": "Update SMTP provider", + "operationId": "messagingUpdateSmtpProvider", + "tags": [ + "messaging" + ], + "description": "Update a SMTP provider by its unique ID.", "responses": { "200": { - "description": "UsageFunctions", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageFunctions" + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": true, + "x-appwrite": { + "method": "updateSmtpProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/update-smtp-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-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 } - } - }, - "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": [] + "Project": [], + "Key": [] } ], "parameters": [ { - "name": "range", - "description": "Date range.", - "required": false, + "name": "providerId", + "description": "Provider 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": "<PROVIDER_ID>" }, - "in": "query" + "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}": { - "get": { - "summary": "Get function", - "operationId": "functionsGet", + "\/messaging\/providers\/telesign": { + "post": { + "summary": "Create Telesign provider", + "operationId": "messagingCreateTelesignProvider", "tags": [ - "functions" + "messaging" ], - "description": "Get a function by its unique ID.", + "description": "Create a new Telesign provider.", "responses": { - "200": { - "description": "Function", + "201": { + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/function" + "$ref": "#\/components\/schemas\/provider" } } } @@ -32275,21 +37891,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "get", - "group": "functions", + "method": "createTelesignProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/get.md", + "demo": "messaging\/create-telesign-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-telesign-provider.md", "auth": { "Project": [] } @@ -32300,33 +37917,76 @@ "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>" + }, + "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" + ] + } + } } - ] - }, - "put": { - "summary": "Update function", - "operationId": "functionsUpdate", + } + } + }, + "\/messaging\/providers\/telesign\/{providerId}": { + "patch": { + "summary": "Update Telesign provider", + "operationId": "messagingUpdateTelesignProvider", "tags": [ - "functions" + "messaging" ], - "description": "Update function by its unique ID.", + "description": "Update a Telesign provider by its unique ID.", "responses": { "200": { - "description": "Function", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/function" + "$ref": "#\/components\/schemas\/provider" } } } @@ -32334,21 +37994,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "update", - "group": "functions", + "method": "updateTelesignProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/update.md", + "demo": "messaging\/update-telesign-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-telesign-provider.md", "auth": { "Project": [] } @@ -32361,12 +38022,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 +38040,388 @@ "properties": { "name": { "type": "string", - "description": "Function name. Max length: 128 chars.", + "description": "Provider name.", + "default": "", "x-example": "<NAME>" }, - "runtime": { + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + }, + "customerId": { "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" - ] + "description": "Telesign customer ID.", + "default": "", + "x-example": "<CUSTOMER_ID>" }, - "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" + "apiKey": { + "type": "string", + "description": "Telesign API key.", + "default": "", + "x-example": "<API_KEY>" + }, + "from": { + "type": "string", + "description": "Sender number.", + "default": "", + "x-example": "<FROM>" + } + } + } + } + } + } + } + }, + "\/messaging\/providers\/textmagic": { + "post": { + "summary": "Create Textmagic provider", + "operationId": "messagingCreateTextmagicProvider", + "tags": [ + "messaging" + ], + "description": "Create a new Textmagic provider.", + "responses": { + "201": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createTextmagicProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/create-textmagic-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-textmagic-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": { + "from": { "type": "string", - "description": "Schedule CRON syntax.", + "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", "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 + "x-example": "+12065550100", + "format": "phone" }, - "entrypoint": { + "username": { "type": "string", - "description": "Entrypoint File. This path is relative to the \"providerRootDirectory\".", + "description": "Textmagic username.", "default": "", - "x-example": "<ENTRYPOINT>" + "x-example": "<USERNAME>" }, - "commands": { + "apiKey": { "type": "string", - "description": "Build Commands.", + "description": "Textmagic apiKey.", "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": "<API_KEY>" }, - "installationId": { + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, + "x-nullable": true + } + }, + "required": [ + "providerId", + "name" + ] + } + } + } + } + } + }, + "\/messaging\/providers\/textmagic\/{providerId}": { + "patch": { + "summary": "Update Textmagic provider", + "operationId": "messagingUpdateTextmagicProvider", + "tags": [ + "messaging" + ], + "description": "Update a Textmagic provider by its unique ID.", + "responses": { + "200": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateTextmagicProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/update-textmagic-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-textmagic-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": "Appwrite Installation ID for VCS (Version Controle System) deployment.", + "description": "Provider name.", "default": "", - "x-example": "<INSTALLATION_ID>" + "x-example": "<NAME>" }, - "providerRepositoryId": { - "type": "string", - "description": "Repository ID of the repo linked to the function", - "x-example": "<PROVIDER_REPOSITORY_ID>", + "enabled": { + "type": "boolean", + "description": "Set as enabled.", + "x-example": false, "x-nullable": true }, - "providerBranch": { + "username": { "type": "string", - "description": "Production branch for the repo linked to the function", + "description": "Textmagic username.", "default": "", - "x-example": "<PROVIDER_BRANCH>" - }, - "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 + "x-example": "<USERNAME>" }, - "providerRootDirectory": { + "apiKey": { "type": "string", - "description": "Path to function code in the linked repo.", + "description": "Textmagic apiKey.", "default": "", - "x-example": "<PROVIDER_ROOT_DIRECTORY>" + "x-example": "<API_KEY>" }, - "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 + "from": { + "type": "string", + "description": "Sender number.", + "default": "", + "x-example": "<FROM>" + } + } + } + } + } + } + } + }, + "\/messaging\/providers\/twilio": { + "post": { + "summary": "Create Twilio provider", + "operationId": "messagingCreateTwilioProvider", + "tags": [ + "messaging" + ], + "description": "Create a new Twilio provider.", + "responses": { + "201": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createTwilioProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/create-twilio-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-twilio-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" + } }, - "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 + "name": { + "type": "string", + "description": "Provider name.", + "x-example": "<NAME>" }, - "buildSpecification": { + "from": { "type": "string", - "description": "Build specification for the function deployments.", - "x-example": null, - "x-nullable": true + "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", + "default": "", + "x-example": "+12065550100", + "format": "phone" }, - "runtimeSpecification": { + "accountSid": { "type": "string", - "description": "Runtime specification for the function executions.", - "default": {}, - "x-example": null + "description": "Twilio account secret ID.", + "default": "", + "x-example": "<ACCOUNT_SID>" }, - "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" + "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" ] } } } } - }, - "delete": { - "summary": "Delete function", - "operationId": "functionsDelete", + } + }, + "\/messaging\/providers\/twilio\/{providerId}": { + "patch": { + "summary": "Update Twilio provider", + "operationId": "messagingUpdateTwilioProvider", "tags": [ - "functions" + "messaging" ], - "description": "Delete a function by its unique ID.", + "description": "Update a Twilio provider by its unique ID.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", - "group": "functions", + "method": "updateTwilioProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/delete.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": [] } @@ -32960,33 +38434,177 @@ ], "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": { + "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>" + } + } + } + } + } + } } }, - "\/functions\/{functionId}\/deployment": { + "\/messaging\/providers\/vonage": { + "post": { + "summary": "Create Vonage provider", + "operationId": "messagingCreateVonageProvider", + "tags": [ + "messaging" + ], + "description": "Create a new Vonage provider.", + "responses": { + "201": { + "description": "Provider", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/provider" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createVonageProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/create-vonage-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-vonage-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" + } + }, + "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" + ] + } + } + } + } + } + }, + "\/messaging\/providers\/vonage\/{providerId}": { "patch": { - "summary": "Update function's deployment", - "operationId": "functionsUpdateFunctionDeployment", + "summary": "Update Vonage provider", + "operationId": "messagingUpdateVonageProvider", "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 Vonage 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 +38612,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateFunctionDeployment", - "group": "functions", + "method": "updateVonageProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/update-function-deployment.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": [] } @@ -33021,12 +38640,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 +38656,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 + }, + "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>" } - }, - "required": [ - "deploymentId" - ] + } } } } } } }, - "\/functions\/{functionId}\/deployments": { + "\/messaging\/providers\/{providerId}": { "get": { - "summary": "List deployments", - "operationId": "functionsListDeployments", + "summary": "Get provider", + "operationId": "messagingGetProvider", "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": "Get a provider by its unique ID.\n", "responses": { "200": { - "description": "Deployments List", + "description": "Provider", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deploymentList" + "$ref": "#\/components\/schemas\/provider" } } } @@ -33074,21 +38715,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "listDeployments", - "group": "deployments", + "method": "getProvider", + "group": "providers", "cookies": false, "type": "", - "demo": "functions\/list-deployments.md", + "demo": "messaging\/get-provider.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "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": [] } @@ -33101,18 +38743,123 @@ ], "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" - }, + } + ] + }, + "delete": { + "summary": "Delete provider", + "operationId": "messagingDeleteProvider", + "tags": [ + "messaging" + ], + "description": "Delete a provider by its unique ID.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteProvider", + "group": "providers", + "cookies": false, + "type": "", + "demo": "messaging\/delete-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\/delete-provider.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "providerId", + "description": "Provider ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROVIDER_ID>" + }, + "in": "path" + } + ] + } + }, + "\/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": "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", + "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", @@ -33148,19 +38895,19 @@ ] }, "post": { - "summary": "Create deployment", - "operationId": "functionsCreateDeployment", + "summary": "Create topic", + "operationId": "messagingCreateTopic", "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": "Create a new topic.", "responses": { - "202": { - "description": "Deployment", + "201": { + "description": "Topic", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/topic" } } } @@ -33168,21 +38915,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDeployment", - "group": "deployments", + "method": "createTopic", + "group": "topics", "cookies": false, - "type": "upload", - "demo": "functions\/create-deployment.md", + "type": "", + "demo": "messaging\/create-topic.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "topics.write", "platforms": [ "console", "server" ], - "packaging": true, + "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md", "auth": { "Project": [] } @@ -33193,73 +38941,62 @@ "Key": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - } - ], "requestBody": { "content": { - "multipart\/form-data": { + "application\/json": { "schema": { "type": "object", "properties": { - "entrypoint": { - "type": "string", - "description": "Entrypoint File.", - "x-example": "<ENTRYPOINT>", - "x-nullable": true - }, - "commands": { + "topicId": { "type": "string", - "description": "Build Commands.", - "x-example": "<COMMANDS>", - "x-nullable": true + "description": "Topic ID. Choose a custom Topic ID or a new Topic ID.", + "x-example": "<TOPIC_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } }, - "code": { + "name": { "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": "Topic Name.", + "x-example": "<NAME>" }, - "activate": { - "type": "boolean", - "description": "Automatically activate the deployment when it is finished building.", - "x-example": false + "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": [ - "code", - "activate" + "topicId", + "name" ] } } } } - } - }, - "\/functions\/{functionId}\/deployments\/duplicate": { - "post": { - "summary": "Create duplicate deployment", - "operationId": "functionsCreateDuplicateDeployment", + } + }, + "\/messaging\/topics\/{topicId}": { + "get": { + "summary": "Get topic", + "operationId": "messagingGetTopic", "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": "Get a topic by its unique ID.\n", "responses": { - "202": { - "description": "Deployment", + "200": { + "description": "Topic", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/topic" } } } @@ -33267,21 +39004,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDuplicateDeployment", - "group": "deployments", + "method": "getTopic", + "group": "topics", "cookies": false, "type": "", - "demo": "functions\/create-duplicate-deployment.md", + "demo": "messaging\/get-topic.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "topics.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md", "auth": { "Project": [] } @@ -33294,58 +39032,31 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "topicId", + "description": "Topic ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<TOPIC_ID>" }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "deploymentId": { - "type": "string", - "description": "Deployment ID.", - "x-example": "<DEPLOYMENT_ID>" - }, - "buildId": { - "type": "string", - "description": "Build unique ID.", - "default": "", - "x-example": "<BUILD_ID>" - } - }, - "required": [ - "deploymentId" - ] - } - } - } - } - } - }, - "\/functions\/{functionId}\/deployments\/template": { - "post": { - "summary": "Create template deployment", - "operationId": "functionsCreateTemplateDeployment", + ] + }, + "patch": { + "summary": "Update topic", + "operationId": "messagingUpdateTopic", "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 topic by its unique ID.\n", "responses": { - "202": { - "description": "Deployment", + "200": { + "description": "Topic", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/topic" } } } @@ -33353,21 +39064,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTemplateDeployment", - "group": "deployments", + "method": "updateTopic", + "group": "topics", "cookies": false, "type": "", - "demo": "functions\/create-template-deployment.md", + "demo": "messaging\/update-topic.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "topics.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md", "auth": { "Project": [] } @@ -33380,12 +39092,12 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "topicId", + "description": "Topic ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<TOPIC_ID>" }, "in": "path" } @@ -33396,99 +39108,57 @@ "schema": { "type": "object", "properties": { - "repository": { - "type": "string", - "description": "Repository name of the template.", - "x-example": "<REPOSITORY>" - }, - "owner": { - "type": "string", - "description": "The name of the owner of the template.", - "x-example": "<OWNER>" - }, - "rootDirectory": { - "type": "string", - "description": "Path to function code in the template repo.", - "x-example": "<ROOT_DIRECTORY>" - }, - "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": { + "name": { "type": "string", - "description": "Reference value, can be a commit hash, branch name, or release tag", - "x-example": "<REFERENCE>" + "description": "Topic Name.", + "x-example": "<NAME>", + "x-nullable": true }, - "activate": { - "type": "boolean", - "description": "Automatically activate the deployment when it is finished building.", - "default": false, - "x-example": false + "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 } - }, - "required": [ - "repository", - "owner", - "rootDirectory", - "type", - "reference" - ] + } } } } } - } - }, - "\/functions\/{functionId}\/deployments\/vcs": { - "post": { - "summary": "Create VCS deployment", - "operationId": "functionsCreateVcsDeployment", + }, + "delete": { + "summary": "Delete topic", + "operationId": "messagingDeleteTopic", "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": "Delete a topic by its unique ID.", "responses": { - "202": { - "description": "Deployment", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/deployment" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "createVcsDeployment", - "group": "deployments", + "method": "deleteTopic", + "group": "topics", "cookies": false, "type": "", - "demo": "functions\/create-vcs-deployment.md", + "demo": "messaging\/delete-topic.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "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": [] } @@ -33501,73 +39171,33 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "topicId", + "description": "Topic ID.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<TOPIC_ID>" }, "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": "<REFERENCE>" - }, - "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}": { + "\/messaging\/topics\/{topicId}\/subscribers": { "get": { - "summary": "Get deployment", - "operationId": "functionsGetDeployment", + "summary": "List subscribers", + "operationId": "messagingListSubscribers", "tags": [ - "functions" + "messaging" ], - "description": "Get a function deployment by its unique ID.", + "description": "Get a list of all subscribers from the current Appwrite project.", "responses": { "200": { - "description": "Deployment", + "description": "Subscriber list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/deployment" + "$ref": "#\/components\/schemas\/subscriberList" } } } @@ -33575,21 +39205,22 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDeployment", - "group": "deployments", + "method": "listSubscribers", + "group": "subscribers", "cookies": false, "type": "", - "demo": "functions\/get-deployment.md", + "demo": "messaging\/list-subscribers.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "subscribers.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md", "auth": { "Project": [] } @@ -33602,56 +39233,90 @@ ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "topicId", + "description": "Topic ID. The topic ID subscribed to.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<TOPIC_ID>" }, "in": "path" }, { - "name": "deploymentId", - "description": "Deployment 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: 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": "<DEPLOYMENT_ID>" + "x-example": "<SEARCH>", + "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" } ] }, - "delete": { - "summary": "Delete deployment", - "operationId": "functionsDeleteDeployment", + "post": { + "summary": "Create subscriber", + "operationId": "messagingCreateSubscriber", "tags": [ - "functions" + "messaging" ], - "description": "Delete a code deployment by its unique ID.", + "description": "Create a new subscriber.", "responses": { - "204": { - "description": "No content" + "201": { + "description": "Subscriber", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/subscriber" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteDeployment", - "group": "deployments", + "method": "createSubscriber", + "group": "subscribers", "cookies": false, "type": "", - "demo": "functions\/delete-deployment.md", + "demo": "messaging\/create-subscriber.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "subscribers.write", "platforms": [ - "console", - "server" + "server", + "client", + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md", "auth": { "Project": [] } @@ -33659,49 +39324,68 @@ "security": [ { "Project": [], + "JWT": [], + "Session": [], "Key": [] } ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "deploymentId", - "description": "Deployment ID.", + "name": "topicId", + "description": "Topic ID. The topic ID to subscribe to.", "required": true, "schema": { "type": "string", - "x-example": "<DEPLOYMENT_ID>" + "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" + ] + } + } + } + } } }, - "\/functions\/{functionId}\/deployments\/{deploymentId}\/download": { + "\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}": { "get": { - "summary": "Get deployment download", - "operationId": "functionsGetDeploymentDownload", + "summary": "Get subscriber", + "operationId": "messagingGetSubscriber", "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": "Get a subscriber by its unique ID.\n", "responses": { "200": { - "description": "File", + "description": "Subscriber", "content": { - "*\/*": { + "application\/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#\/components\/schemas\/subscriber" } } } @@ -33709,115 +39393,86 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDeploymentDownload", - "group": "deployments", + "method": "getSubscriber", + "group": "subscribers", "cookies": false, - "type": "location", - "demo": "functions\/get-deployment-download.md", + "type": "", + "demo": "messaging\/get-subscriber.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "subscribers.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md", "auth": { - "Project": [], - "ImpersonateUserId": [] + "Project": [] } }, "security": [ { "Project": [], - "Key": [], - "JWT": [], - "ImpersonateUserId": [] + "Key": [] } ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "topicId", + "description": "Topic ID. The topic ID subscribed to.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<TOPIC_ID>" }, "in": "path" }, { - "name": "deploymentId", - "description": "Deployment ID.", + "name": "subscriberId", + "description": "Subscriber ID.", "required": true, "schema": { "type": "string", - "x-example": "<DEPLOYMENT_ID>" + "x-example": "<SUBSCRIBER_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" } ] - } - }, - "\/functions\/{functionId}\/deployments\/{deploymentId}\/status": { - "patch": { - "summary": "Update deployment status", - "operationId": "functionsUpdateDeploymentStatus", + }, + "delete": { + "summary": "Delete subscriber", + "operationId": "messagingDeleteSubscriber", "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": "Delete a subscriber by its unique ID.", "responses": { - "200": { - "description": "Deployment", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/deployment" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "updateDeploymentStatus", - "group": "deployments", + "method": "deleteSubscriber", + "group": "subscribers", "cookies": false, "type": "", - "demo": "functions\/update-deployment-status.md", + "demo": "messaging\/delete-subscriber.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "subscribers.write", "platforms": [ - "console", - "server" + "server", + "client", + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md", "auth": { "Project": [] } @@ -33825,48 +39480,50 @@ "security": [ { "Project": [], + "JWT": [], + "Session": [], "Key": [] } ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "topicId", + "description": "Topic ID. The topic ID subscribed to.", "required": true, "schema": { "type": "string", - "x-example": "<FUNCTION_ID>" + "x-example": "<TOPIC_ID>" }, "in": "path" }, { - "name": "deploymentId", - "description": "Deployment ID.", + "name": "subscriberId", + "description": "Subscriber ID.", "required": true, "schema": { "type": "string", - "x-example": "<DEPLOYMENT_ID>" + "x-example": "<SUBSCRIBER_ID>" }, "in": "path" } ] } }, - "\/functions\/{functionId}\/executions": { + "\/migrations": { "get": { - "summary": "List executions", - "operationId": "functionsListExecutions", + "summary": "List migrations", + "operationId": "migrationsList", "tags": [ - "functions" + "migrations" ], - "description": "Get a list of all the current user function execution logs. You can use the query params to filter your results.", + "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": "Executions List", + "description": "Migrations List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/executionList" + "$ref": "#\/components\/schemas\/migrationList" } } } @@ -33874,51 +39531,34 @@ }, "deprecated": false, "x-appwrite": { - "method": "listExecutions", - "group": "executions", + "method": "list", + "group": null, "cookies": false, "type": "", - "demo": "functions\/list-executions.md", + "demo": "migrations\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": [ - "executions.read", - "execution.read" - ], + "scope": "migrations.read", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] } ], "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", + "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", @@ -33929,6 +39569,17 @@ }, "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.", @@ -33941,21 +39592,23 @@ "in": "query" } ] - }, + } + }, + "\/migrations\/appwrite": { "post": { - "summary": "Create execution", - "operationId": "functionsCreateExecution", + "summary": "Create Appwrite migration", + "operationId": "migrationsCreateAppwriteMigration", "tags": [ - "functions" + "migrations" ], - "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": "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": { - "201": { - "description": "Execution", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/execution" + "$ref": "#\/components\/schemas\/migration" } } } @@ -33963,47 +39616,28 @@ }, "deprecated": false, "x-appwrite": { - "method": "createExecution", - "group": "executions", + "method": "createAppwriteMigration", + "group": null, "cookies": false, "type": "", - "demo": "functions\/create-execution.md", + "demo": "migrations\/create-appwrite-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": [ - "executions.write", - "execution.write" - ], + "scope": "migrations.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" + "Project": [] } ], "requestBody": { @@ -34012,83 +39646,158 @@ "schema": { "type": "object", "properties": { - "body": { + "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": "HTTP body of execution. Default value is empty string.", - "default": "", - "x-example": "<BODY>" + "description": "Source Appwrite endpoint", + "x-example": "https:\/\/example.com", + "format": "url" }, - "async": { - "type": "boolean", - "description": "Execute code in the background. Default value is false.", - "default": false, - "x-example": false + "projectId": { + "type": "string", + "description": "Source Project ID", + "x-example": "<PROJECT_ID>" }, - "path": { + "apiKey": { "type": "string", - "description": "HTTP path of execution. Path can include query params. Default value is \/", - "default": "\/", - "x-example": "<PATH>" + "description": "Source API Key", + "x-example": "<API_KEY>" }, - "method": { + "onDuplicate": { "type": "string", - "description": "HTTP method of execution. Default value is POST.", - "default": "POST", - "x-example": "GET", + "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": [ - "GET", - "POST", - "PUT", - "PATCH", - "DELETE", - "OPTIONS", - "HEAD" + "fail", + "skip", + "overwrite" ], - "x-enum-name": "ExecutionMethod", + "x-enum-name": "OnDuplicate", "x-enum-keys": [ - "GET", - "POST", - "PUT", - "PATCH", - "DELETE", - "OPTIONS", - "HEAD" + "fail", + "skip", + "overwrite" ] - }, - "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": "<SCHEDULED_AT>", - "x-nullable": true } - } + }, + "required": [ + "resources", + "endpoint", + "projectId", + "apiKey" + ] } } } } } }, - "\/functions\/{functionId}\/executions\/{executionId}": { + "\/migrations\/appwrite\/report": { "get": { - "summary": "Get execution", - "operationId": "functionsGetExecution", + "summary": "Get Appwrite migration report", + "operationId": "migrationsGetAppwriteReport", "tags": [ - "functions" + "migrations" ], - "description": "Get a function execution log by its unique ID.", + "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": "Execution", + "description": "Migration Report", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/execution" + "$ref": "#\/components\/schemas\/migrationReport" } } } @@ -34096,141 +39805,398 @@ }, "deprecated": false, "x-appwrite": { - "method": "getExecution", - "group": "executions", + "method": "getAppwriteReport", + "group": null, "cookies": false, "type": "", - "demo": "functions\/get-execution.md", + "demo": "migrations\/get-appwrite-report.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": [ - "executions.read", - "execution.read" - ], + "scope": "migrations.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "functionId", - "description": "Function ID.", + "name": "resources", + "description": "List of resources to migrate", + "required": true, + "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", - "x-example": "<FUNCTION_ID>" + "format": "url", + "x-example": "https:\/\/example.com" }, - "in": "path" + "in": "query" }, { - "name": "executionId", - "description": "Execution ID.", + "name": "projectID", + "description": "Source's Project ID", "required": true, "schema": { "type": "string", - "x-example": "<EXECUTION_ID>" + "x-example": "<PROJECT_ID>" }, - "in": "path" + "in": "query" + }, + { + "name": "key", + "description": "Source's API Key", + "required": true, + "schema": { + "type": "string", + "x-example": "<KEY>" + }, + "in": "query" + } + ] + } + }, + "\/migrations\/csv\/exports": { + "post": { + "summary": "Export documents to CSV", + "operationId": "migrationsCreateCSVExport", + "tags": [ + "migrations" + ], + "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": { + "202": { + "description": "Migration", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/migration" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createCSVExport", + "group": null, + "cookies": false, + "type": "", + "demo": "migrations\/create-csv-export.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "migrations.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-csv-export.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "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" + ] + } + } } - ] - }, - "delete": { - "summary": "Delete execution", - "operationId": "functionsDeleteExecution", + } + } + }, + "\/migrations\/csv\/imports": { + "post": { + "summary": "Import documents from a CSV", + "operationId": "migrationsCreateCSVImport", "tags": [ - "functions" + "migrations" ], - "description": "Delete a function execution by its unique ID.", + "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": { - "204": { - "description": "No content" + "202": { + "description": "Migration", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/migration" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteExecution", - "group": "executions", + "method": "createCSVImport", + "group": null, "cookies": false, "type": "", - "demo": "functions\/delete-execution.md", + "demo": "migrations\/create-csv-import.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": [ - "executions.write", - "execution.write" - ], + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-csv-import.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "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": { + "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" + ] + } + } } - ] + } } }, - "\/functions\/{functionId}\/usage": { - "get": { - "summary": "Get function usage", - "operationId": "functionsGetUsage", + "\/migrations\/firebase": { + "post": { + "summary": "Create Firebase migration", + "operationId": "migrationsCreateFirebaseMigration", "tags": [ - "functions" + "migrations" ], - "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": "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": "UsageFunction", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageFunction" + "$ref": "#\/components\/schemas\/migration" } } } @@ -34238,20 +40204,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getUsage", + "method": "createFirebaseMigration", "group": null, "cookies": false, "type": "", - "demo": "functions\/get-usage.md", + "demo": "migrations\/create-firebase-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "migrations.write", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md", "auth": { "Project": [] } @@ -34261,57 +40228,76 @@ "Project": [] } ], - "parameters": [ - { - "name": "functionId", - "description": "Function ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_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": { + "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" + ] + } + } } - ] + } } }, - "\/functions\/{functionId}\/variables": { + "\/migrations\/firebase\/report": { "get": { - "summary": "List variables", - "operationId": "functionsListVariables", + "summary": "Get Firebase migration report", + "operationId": "migrationsGetFirebaseReport", "tags": [ - "functions" + "migrations" ], - "description": "Get a list of all variables of a specific function.", + "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": "Variables List", + "description": "Migration Report", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variableList" + "$ref": "#\/components\/schemas\/migrationReport" } } } @@ -34319,82 +40305,96 @@ }, "deprecated": false, "x-appwrite": { - "method": "listVariables", - "group": "variables", + "method": "getFirebaseReport", + "group": null, "cookies": false, "type": "", - "demo": "functions\/list-variables.md", + "demo": "migrations\/get-firebase-report.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.read", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "functionId", - "description": "Function unique ID.", + "name": "resources", + "description": "List of resources to migrate", "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": [] + "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": "total", - "description": "When set to false, the total count returned will be 0 and will not be calculated.", - "required": false, + "name": "serviceAccount", + "description": "JSON of the Firebase service account credentials", + "required": true, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "<SERVICE_ACCOUNT>" }, "in": "query" } ] - }, + } + }, + "\/migrations\/json\/exports": { "post": { - "summary": "Create variable", - "operationId": "functionsCreateVariable", + "summary": "Export documents to JSON", + "operationId": "migrationsCreateJSONExport", "tags": [ - "functions" + "migrations" ], - "description": "Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.", + "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": { - "201": { - "description": "Variable", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variable" + "$ref": "#\/components\/schemas\/migration" } } } @@ -34402,41 +40402,28 @@ }, "deprecated": false, "x-appwrite": { - "method": "createVariable", - "group": "variables", + "method": "createJSONExport", + "group": null, "cookies": false, "type": "", - "demo": "functions\/create-variable.md", + "demo": "migrations\/create-json-export.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-json-export.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "functionId", - "description": "Function unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<FUNCTION_ID>" - }, - "in": "path" + "Project": [] } ], "requestBody": { @@ -34445,35 +40432,44 @@ "schema": { "type": "object", "properties": { - "variableId": { + "resourceId": { "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": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database to export.", + "x-example": "<ID1:ID2>" }, - "key": { + "filename": { "type": "string", - "description": "Variable key. Max length: 255 chars.", - "x-example": "<KEY>" + "description": "The name of the file to be created for the export, excluding the .json extension.", + "x-example": "<FILENAME>" }, - "value": { - "type": "string", - "description": "Variable value. Max length: 8192 chars.", - "x-example": "<VALUE>" + "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" + } }, - "secret": { + "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": "Secret variables can be updated or deleted, but only functions can read them during build and runtime.", + "description": "Set to true to receive an email when the export is complete. Default is true.", "default": true, "x-example": false } }, "required": [ - "variableId", - "key", - "value" + "resourceId", + "filename" ] } } @@ -34481,90 +40477,21 @@ } } }, - "\/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": "<FUNCTION_ID>" - }, - "in": "path" - }, - { - "name": "variableId", - "description": "Variable unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<VARIABLE_ID>" - }, - "in": "path" - } - ] - }, - "put": { - "summary": "Update variable", - "operationId": "functionsUpdateVariable", + "\/migrations\/json\/imports": { + "post": { + "summary": "Import documents from a JSON", + "operationId": "migrationsCreateJSONImport", "tags": [ - "functions" + "migrations" ], - "description": "Update variable by its unique ID.", + "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": "Variable", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variable" + "$ref": "#\/components\/schemas\/migration" } } } @@ -34572,51 +40499,28 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateVariable", - "group": "variables", + "method": "createJSONImport", + "group": null, "cookies": false, "type": "", - "demo": "functions\/update-variable.md", + "demo": "migrations\/create-json-import.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-json-import.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "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" + "Project": [] } ], "requestBody": { @@ -34625,108 +40529,212 @@ "schema": { "type": "object", "properties": { - "key": { + "bucketId": { "type": "string", - "description": "Variable key. Max length: 255 chars.", - "x-example": "<KEY>", - "x-nullable": true + "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>" }, - "value": { + "fileId": { "type": "string", - "description": "Variable value. Max length: 8192 chars.", - "x-example": "<VALUE>", - "x-nullable": true + "description": "File ID.", + "x-example": "<FILE_ID>" }, - "secret": { + "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": "Secret variables can be updated or deleted, but only functions can read them during build and runtime.", - "x-example": false, - "x-nullable": true + "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" + ] } } } } - }, - "delete": { - "summary": "Delete variable", - "operationId": "functionsDeleteVariable", + } + }, + "\/migrations\/nhost": { + "post": { + "summary": "Create NHost migration", + "operationId": "migrationsCreateNHostMigration", "tags": [ - "functions" + "migrations" ], - "description": "Delete a variable by its unique ID.", + "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": { - "204": { - "description": "No content" + "202": { + "description": "Migration", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/migration" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteVariable", - "group": "variables", + "method": "createNHostMigration", + "group": null, "cookies": false, "type": "", - "demo": "functions\/delete-variable.md", + "demo": "migrations\/create-n-host-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "functions.write", + "scope": "migrations.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "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": { + "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" + ] + } + } } - ] + } } }, - "\/graphql": { - "post": { - "summary": "GraphQL endpoint", - "operationId": "graphqlQuery", + "\/migrations\/nhost\/report": { + "get": { + "summary": "Get NHost migration report", + "operationId": "migrationsGetNHostReport", "tags": [ - "graphql" + "migrations" ], - "description": "Execute a GraphQL mutation.", + "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": "Any", + "description": "Migration Report", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/any" + "$ref": "#\/components\/schemas\/migrationReport" } } } @@ -34734,72 +40742,160 @@ }, "deprecated": false, "x-appwrite": { - "method": "query", - "group": "graphql", + "method": "getNHostReport", + "group": null, "cookies": false, - "type": "graphql", - "demo": "graphql\/query.md", - "rate-limit": 60, - "rate-time": 60, + "type": "", + "demo": "migrations\/get-n-host-report.md", + "rate-limit": 0, + "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "graphql", + "scope": "migrations.write", "platforms": [ - "console", - "server", - "client" + "console" ], "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\/migrations\/migration-nhost-report.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "query": { - "type": "object", - "description": "The query or queries to execute.", - "default": {}, - "x-example": "{}" - } - }, - "required": [ - "query" + "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.", + "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 + }, + "in": "query" } - } + ] } }, - "\/graphql\/mutation": { + "\/migrations\/supabase": { "post": { - "summary": "GraphQL endpoint", - "operationId": "graphqlMutation", + "summary": "Create Supabase migration", + "operationId": "migrationsCreateSupabaseMigration", "tags": [ - "graphql" + "migrations" ], - "description": "Execute a GraphQL mutation.", + "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": "Any", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/any" + "$ref": "#\/components\/schemas\/migration" } } } @@ -34807,33 +40903,28 @@ }, "deprecated": false, "x-appwrite": { - "method": "mutation", - "group": "graphql", + "method": "createSupabaseMigration", + "group": null, "cookies": false, - "type": "graphql", - "demo": "graphql\/mutation.md", - "rate-limit": 60, - "rate-time": 60, + "type": "", + "demo": "migrations\/create-supabase-migration.md", + "rate-limit": 0, + "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "graphql", + "scope": "migrations.write", "platforms": [ - "console", - "server", - "client" + "console" ], "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\/migrations\/migration-supabase.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] + "Project": [] } ], "requestBody": { @@ -34842,15 +40933,83 @@ "schema": { "type": "object", "properties": { - "query": { - "type": "object", - "description": "The query or queries to execute.", - "default": {}, - "x-example": "{}" + "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": [ - "query" + "resources", + "endpoint", + "apiKey", + "databaseHost", + "username", + "password" ] } } @@ -34858,21 +41017,21 @@ } } }, - "\/health": { + "\/migrations\/supabase\/report": { "get": { - "summary": "Get HTTP", - "operationId": "healthGet", + "summary": "Get Supabase migration report", + "operationId": "migrationsGetSupabaseReport", "tags": [ - "health" + "migrations" ], - "description": "Check the Appwrite HTTP server is up and responsive.", + "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 Status", + "description": "Migration Report", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatus" + "$ref": "#\/components\/schemas\/migrationReport" } } } @@ -34880,99 +41039,151 @@ }, "deprecated": false, "x-appwrite": { - "method": "get", - "group": "health", + "method": "getSupabaseReport", + "group": null, "cookies": false, "type": "", - "demo": "health\/get.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.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } - ] - } - }, - "\/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" - } + "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" + ] } - } - } - }, - "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": [ + }, + "in": "query" + }, { - "Project": [], - "Key": [] + "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": "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": 5432 + }, + "in": "query" } ] } }, - "\/health\/audits-db": { + "\/migrations\/{migrationId}": { "get": { - "summary": "Get audits DB", - "operationId": "healthGetAuditsDB", + "summary": "Get migration", + "operationId": "migrationsGet", "tags": [ - "health" + "migrations" ], - "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 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": "Status List", + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatusList" + "$ref": "#\/components\/schemas\/migration" } } } @@ -34980,49 +41191,57 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAuditsDB", + "method": "get", "group": null, "cookies": false, "type": "", - "demo": "health\/get-audits-db.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\/health\/get-audits-db.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "migrationId", + "description": "Migration unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<MIGRATION_ID>" + }, + "in": "path" } ] - } - }, - "\/health\/cache": { - "get": { - "summary": "Get cache", - "operationId": "healthGetCache", + }, + "patch": { + "summary": "Update retry migration", + "operationId": "migrationsRetry", "tags": [ - "health" + "migrations" ], - "description": "Check the Appwrite in-memory cache servers are up and connection is successful.", + "description": "Retry a failed migration. This endpoint allows you to retry a migration that has previously failed.", "responses": { - "200": { - "description": "Status List", + "202": { + "description": "Migration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatusList" + "$ref": "#\/components\/schemas\/migration" } } } @@ -35030,110 +41249,110 @@ }, "deprecated": false, "x-appwrite": { - "method": "getCache", - "group": "health", + "method": "retry", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-cache.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\/references\/health\/get-cache.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "migrationId", + "description": "Migration unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<MIGRATION_ID>" + }, + "in": "path" } ] - } - }, - "\/health\/certificate": { - "get": { - "summary": "Get the SSL certificate for a domain", - "operationId": "healthGetCertificate", + }, + "delete": { + "summary": "Delete migration", + "operationId": "migrationsDelete", "tags": [ - "health" + "migrations" ], - "description": "Get the SSL certificate for a domain", + "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 Certificate", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthCertificate" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "getCertificate", - "group": "health", + "method": "delete", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-certificate.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-certificate.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/delete-migration.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "domain", - "description": "string", - "required": false, + "name": "migrationId", + "description": "Migration ID.", + "required": true, "schema": { - "type": "string" + "type": "string", + "x-example": "<MIGRATION_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/health\/console-pausing": { + "\/mongo": { "get": { - "summary": "Get console pausing health", - "operationId": "healthGetConsolePausing", + "summary": "List dedicated databases.", + "operationId": "mongoList", "tags": [ - "health" + "mongo" ], - "description": "Get console pausing health status. Monitors projects approaching the pause threshold to detect potential issues with console access tracking.\n", + "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" } } } @@ -35141,73 +41360,59 @@ }, "deprecated": false, "x-appwrite": { - "method": "getConsolePausing", - "group": null, + "method": "list", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-console-pausing.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\/health\/get-console-pausing.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "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.", + "name": "queries", + "description": "Array of query strings.", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 7 + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" } ] - } - }, - "\/health\/db": { - "get": { - "summary": "Get DB", - "operationId": "healthGetDB", + }, + "post": { + "summary": "Create a dedicated database.", + "operationId": "mongoCreate", "tags": [ - "health" + "mongo" ], - "description": "Check the Appwrite database servers are up and connection is successful.", + "description": "Create a new dedicated database with the chosen engine and configuration. Status will be 'provisioning' until the database is ready.", "responses": { - "200": { - "description": "Status List", + "201": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatusList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -35215,49 +41420,161 @@ }, "deprecated": false, "x-appwrite": { - "method": "getDB", - "group": "health", + "method": "create", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-db.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-db.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "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>" + }, + "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. Drives the allocated CPU, memory, storage, storage class, and connection ceiling.", + "default": "s-1vcpu-1gb", + "x-example": "<SPECIFICATION>" + }, + "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" + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true + }, + "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" + }, + "pitr": { + "type": "boolean", + "description": "Enable point-in-time recovery (PITR). Continuously archives changes so the database can be restored to any moment within the retention window.", + "default": true, + "x-example": false + }, + "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" + }, + "api": { + "type": "string", + "description": "Product API that owns this database: nativedb (raw, direct-access), tablesdb, documentsdb, or vectorsdb. tablesdb\/documentsdb\/vectorsdb databases are reached only through their product APIs.", + "default": "nativedb", + "x-example": "nativedb" + } + }, + "required": [ + "databaseId", + "name" + ] + } + } } - ] + } } }, - "\/health\/pubsub": { + "\/mongo\/specifications": { "get": { - "summary": "Get pubsub", - "operationId": "healthGetPubSub", + "summary": "List dedicated database specifications.", + "operationId": "mongoListSpecifications", "tags": [ - "health" + "mongo" ], - "description": "Check the Appwrite pub-sub servers are up and connection is successful.", + "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": "Status List", + "description": "SpecificationList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatusList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseSpecificationList" } } } @@ -35265,49 +41582,46 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPubSub", - "group": "health", + "method": "listSpecifications", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-pub-sub.md", + "demo": "mongo\/list-specifications.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-pubsub.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ] } }, - "\/health\/queue\/audits": { + "\/mongo\/{databaseId}": { "get": { - "summary": "Get audits queue", - "operationId": "healthGetQueueAudits", + "summary": "Get dedicated database.", + "operationId": "mongoGet", "tags": [ - "health" + "mongo" ], - "description": "Get the number of audit logs that are waiting to be processed in the Appwrite internal queue server.\n", + "description": "Get a dedicated database by its unique ID. Returns the database configuration and current status.", "responses": { "200": { - "description": "Health Queue", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -35315,62 +41629,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueAudits", - "group": "queue", + "method": "get", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-audits.md", + "demo": "mongo\/get.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-queue-audits.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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/health\/queue\/billing-project-aggregation": { - "get": { - "summary": "Get billing project aggregation queue", - "operationId": "healthGetQueueBillingProjectAggregation", + }, + "patch": { + "summary": "Update dedicated database.", + "operationId": "mongoUpdate", "tags": [ - "health" + "mongo" ], - "description": "Get billing project aggregation queue.", + "description": "Update a dedicated database configuration. All changes are applied with zero downtime. Specification changes (cpu, memory, storage) are handled via rolling cutover. Storage expansion is done online. All other settings are applied in-place.", "responses": { "200": { - "description": "Health Queue", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -35378,188 +41686,259 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueBillingProjectAggregation", - "group": null, + "method": "update", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-billing-project-aggregation.md", + "demo": "mongo\/update.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\/health\/get-queue-billing-project-aggregation.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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 10000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" } - ] - } - }, - "\/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" + "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, storage, connection ceiling, and node pool based on specification config. Resource changes are applied via rolling cutover with zero downtime.", + "x-example": "<SPECIFICATION>", + "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 + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "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 + }, + "pitr": { + "type": "boolean", + "description": "Enable or disable point-in-time recovery (PITR).", + "x-example": false, + "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 + }, + "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 + } } } } } - }, - "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", + } + }, + "delete": { + "summary": "Delete dedicated database.", + "operationId": "mongoDelete", "tags": [ - "health" + "mongo" ], - "description": "Get the number of builds that are waiting to be processed in the Appwrite internal queue server.", + "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": "Health Queue", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthQueue" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "getQueueBuilds", - "group": "queue", + "method": "delete", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-builds.md", + "demo": "mongo\/delete.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-queue-builds.md", + "produces": [ + "application\/json" + ], "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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/health\/queue\/certificates": { + "\/mongo\/{databaseId}\/backups": { "get": { - "summary": "Get certificates queue", - "operationId": "healthGetQueueCertificates", + "summary": "List database backups.", + "operationId": "mongoListBackups", "tags": [ - "health" + "mongo" ], - "description": "Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.", + "description": "List all backups for a dedicated database. Results can be filtered by status and type.", "responses": { "200": { - "description": "Health Queue", + "description": "BackupList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupList" } } } @@ -35567,62 +41946,69 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueCertificates", - "group": "queue", + "method": "listBackups", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-certificates.md", + "demo": "mongo\/list-backups.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-queue-certificates.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": "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": "integer", - "format": "int32", - "default": 5000 + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" } ] - } - }, - "\/health\/queue\/databases": { - "get": { - "summary": "Get databases queue", - "operationId": "healthGetQueueDatabases", + }, + "post": { + "summary": "Create a database backup.", + "operationId": "mongoCreateBackup", "tags": [ - "health" + "mongo" ], - "description": "Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.", + "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": "Health Queue", + "202": { + "description": "Backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -35630,73 +42016,75 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueDatabases", - "group": "queue", + "method": "createBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-databases.md", + "demo": "mongo\/create-backup.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-queue-databases.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "name", - "description": "Queue name for which to check the queue size", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "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 + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" + } + } + } + } + } + } } }, - "\/health\/queue\/deletes": { + "\/mongo\/{databaseId}\/backups\/policies": { "get": { - "summary": "Get deletes queue", - "operationId": "healthGetQueueDeletes", + "summary": "List database backup policies.", + "operationId": "mongoListBackupPolicies", "tags": [ - "health" + "mongo" ], - "description": "Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.", + "description": "List scheduled backup policies for a dedicated database.", "responses": { "200": { - "description": "Health Queue", + "description": "Backup policy list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/backupPolicyList" } } } @@ -35704,62 +42092,69 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueDeletes", - "group": "queue", + "method": "listBackupPolicies", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-deletes.md", + "demo": "mongo\/list-backup-policies.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-queue-deletes.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": "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": "integer", - "format": "int32", - "default": 5000 + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" } ] - } - }, - "\/health\/queue\/failed\/{name}": { - "get": { - "summary": "Get number of failed queue jobs", - "operationId": "healthGetFailedJobs", + }, + "post": { + "summary": "Create a database backup policy.", + "operationId": "mongoCreateBackupPolicy", "tags": [ - "health" + "mongo" ], - "description": "Returns the amount of failed jobs in a given queue.\n", + "description": "Create a scheduled backup policy for a dedicated database.", "responses": { - "200": { - "description": "Health Queue", + "201": { + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -35767,103 +42162,111 @@ }, "deprecated": false, "x-appwrite": { - "method": "getFailedJobs", - "group": "queue", + "method": "createBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-failed-jobs.md", + "demo": "mongo\/create-backup-policy.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-failed-queue-jobs.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "name", - "description": "The name of the queue", + "name": "databaseId", + "description": "Database ID.", "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" - ] + "x-example": "<DATABASE_ID>" }, "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": { + "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": "<POLICY_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "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": [ + "policyId", + "name", + "schedule", + "retention" + ] + } + } + } + } } }, - "\/health\/queue\/functions": { + "\/mongo\/{databaseId}\/backups\/policies\/{policyId}": { "get": { - "summary": "Get functions queue", - "operationId": "healthGetQueueFunctions", + "summary": "Get a database backup policy.", + "operationId": "mongoGetBackupPolicy", "tags": [ - "health" + "mongo" ], - "description": "Get the number of function executions that are waiting to be processed in the Appwrite internal queue server.", + "description": "Get a scheduled backup policy for a dedicated database.", "responses": { "200": { - "description": "Health Queue", + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -35871,62 +42274,66 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueFunctions", - "group": "queue", + "method": "getBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-functions.md", + "demo": "mongo\/get-backup-policy.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-queue-functions.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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" + }, + { + "name": "policyId", + "description": "Policy ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<POLICY_ID>" + }, + "in": "path" } ] - } - }, - "\/health\/queue\/logs": { - "get": { - "summary": "Get logs queue", - "operationId": "healthGetQueueLogs", + }, + "patch": { + "summary": "Update a database backup policy.", + "operationId": "mongoUpdateBackupPolicy", "tags": [ - "health" + "mongo" ], - "description": "Get the number of logs that are waiting to be processed in the Appwrite internal queue server.", + "description": "Update a scheduled backup policy for a dedicated database.", "responses": { "200": { - "description": "Health Queue", + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -35934,125 +42341,166 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueLogs", - "group": "queue", + "method": "updateBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-logs.md", + "demo": "mongo\/update-backup-policy.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-queue-logs.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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" + }, + { + "name": "policyId", + "description": "Policy ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<POLICY_ID>" + }, + "in": "path" } - ] - } - }, - "\/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" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy name. Max length: 128 chars.", + "x-example": "<NAME>", + "x-nullable": true + }, + "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", + "x-nullable": true + }, + "enabled": { + "type": "boolean", + "description": "Is policy enabled? When disabled, no backups will be taken.", + "x-example": false, + "x-nullable": true + } } } } } + } + }, + "delete": { + "summary": "Delete a database backup policy.", + "operationId": "mongoDeleteBackupPolicy", + "tags": [ + "mongo" + ], + "description": "Delete a scheduled backup policy for a dedicated database. Backups already taken by the policy are kept until their retention expires.", + "responses": { + "204": { + "description": "No content" + } }, "deprecated": false, "x-appwrite": { - "method": "getQueueMails", - "group": "queue", + "method": "deleteBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-mails.md", + "demo": "mongo\/delete-backup-policy.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-queue-mails.md", + "produces": [ + "application\/json" + ], "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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" + }, + { + "name": "policyId", + "description": "Policy ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<POLICY_ID>" + }, + "in": "path" } ] } }, - "\/health\/queue\/messaging": { - "get": { - "summary": "Get messaging queue", - "operationId": "healthGetQueueMessaging", + "\/mongo\/{databaseId}\/backups\/storage": { + "put": { + "summary": "Update database backup storage.", + "operationId": "mongoUpdateBackupStorage", "tags": [ - "health" + "mongo" ], - "description": "Get the number of messages that are waiting to be processed in the Appwrite internal queue server.", + "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": "Health Queue", + "description": "BackupStorageConfig", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupStorage" } } } @@ -36060,62 +42508,113 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueMessaging", - "group": "queue", + "method": "updateBackupStorage", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-messaging.md", + "demo": "mongo\/update-backup-storage.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-queue-messaging.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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "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" + ] + } + } + } + } } }, - "\/health\/queue\/migrations": { + "\/mongo\/{databaseId}\/backups\/{backupId}": { "get": { - "summary": "Get migrations queue", - "operationId": "healthGetQueueMigrations", + "summary": "Get a database backup.", + "operationId": "mongoGetBackup", "tags": [ - "health" + "mongo" ], - "description": "Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.", + "description": "Get details of a specific database backup including its status, size, and timestamps.", "responses": { "200": { - "description": "Health Queue", + "description": "Backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -36123,125 +42622,131 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueMigrations", - "group": "queue", + "method": "getBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-migrations.md", + "demo": "mongo\/get-backup.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-queue-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.", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" + }, + { + "name": "backupId", + "description": "Backup ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BACKUP_ID>" + }, + "in": "path" } ] - } - }, - "\/health\/queue\/region-manager": { - "get": { - "summary": "Get region manager queue", - "operationId": "healthGetQueueRegionManager", + }, + "delete": { + "summary": "Delete a database backup.", + "operationId": "mongoDeleteBackup", "tags": [ - "health" + "mongo" ], - "description": "Get region manager queue.", + "description": "Delete a database backup. This will permanently remove the backup from storage and cannot be undone.", "responses": { - "200": { - "description": "Health Queue", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthQueue" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "getQueueRegionManager", - "group": null, + "method": "deleteBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-region-manager.md", + "demo": "mongo\/delete-backup.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\/health\/get-queue-region-manager.md", + "produces": [ + "application\/json" + ], "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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 100 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" + }, + { + "name": "backupId", + "description": "Backup ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BACKUP_ID>" + }, + "in": "path" } ] } }, - "\/health\/queue\/stats-resources": { + "\/mongo\/{databaseId}\/branches": { "get": { - "summary": "Get stats resources queue", - "operationId": "healthGetQueueStatsResources", + "summary": "List database branches.", + "operationId": "mongoListBranches", "tags": [ - "health" + "mongo" ], - "description": "Get the number of metrics that are waiting to be processed in the Appwrite stats resources queue.", + "description": "List all ephemeral branches for a dedicated database. Returns branch metadata including ID, name, namespace, and expiration time.", "responses": { "200": { - "description": "Health Queue", + "description": "BranchList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBranchList" } } } @@ -36249,62 +42754,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueStatsResources", - "group": "queue", + "method": "listBranches", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-stats-resources.md", + "demo": "mongo\/list-branches.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-queue-stats-resources.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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" } ] - } - }, - "\/health\/queue\/stats-usage": { - "get": { - "summary": "Get stats usage queue", - "operationId": "healthGetQueueUsage", + }, + "post": { + "summary": "Create a database branch.", + "operationId": "mongoCreateBranch", "tags": [ - "health" + "mongo" ], - "description": "Get the number of metrics that are waiting to be processed in the Appwrite internal queue server.", + "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": "Health Queue", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36312,62 +42811,85 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueUsage", - "group": "queue", + "method": "createBranch", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-usage.md", + "demo": "mongo\/create-branch.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-queue-stats-usage.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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "branchId": { + "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": "<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" + } + } + } + } + } + } } }, - "\/health\/queue\/threats": { - "get": { - "summary": "Get threats queue", - "operationId": "healthGetQueueThreats", + "\/mongo\/{databaseId}\/branches\/{branchId}": { + "delete": { + "summary": "Delete a database branch.", + "operationId": "mongoDeleteBranch", "tags": [ - "health" + "mongo" ], - "description": "Get threats queue.", + "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": "Health Queue", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36375,62 +42897,68 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueThreats", - "group": null, + "method": "deleteBranch", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-threats.md", + "demo": "mongo\/delete-branch.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\/health\/get-queue-threats.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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 100 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" + }, + { + "name": "branchId", + "description": "Branch ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BRANCH_ID>" + }, + "in": "path" } ] } }, - "\/health\/queue\/webhooks": { - "get": { - "summary": "Get webhooks queue", - "operationId": "healthGetQueueWebhooks", + "\/mongo\/{databaseId}\/credentials": { + "patch": { + "summary": "Rotate database credentials.", + "operationId": "mongoUpdateCredentials", "tags": [ - "health" + "mongo" ], - "description": "Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.", + "description": "Rotate the primary connection credentials for a dedicated database. Generates a new password and updates the database atomically. Previous credentials stop working immediately. Returns the database with a refreshed connection string carrying the new password.", "responses": { "200": { - "description": "Health Queue", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthQueue" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36438,62 +42966,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueWebhooks", - "group": "queue", + "method": "updateCredentials", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-queue-webhooks.md", + "demo": "mongo\/update-credentials.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-queue-webhooks.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": "databaseId", + "description": "Database ID.", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 5000 + "type": "string", + "x-example": "<DATABASE_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/health\/storage": { - "get": { - "summary": "Get storage", - "operationId": "healthGetStorage", + "\/mongo\/{databaseId}\/failovers": { + "post": { + "summary": "Trigger manual failover.", + "operationId": "mongoCreateFailover", "tags": [ - "health" + "mongo" ], - "description": "Check the Appwrite storage device is up and connection is successful.", + "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": "Health Status", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatus" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36501,49 +43025,75 @@ }, "deprecated": false, "x-appwrite": { - "method": "getStorage", - "group": "storage", + "method": "createFailover", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-storage.md", + "demo": "mongo\/create-failover.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-storage.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": { + "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 + } + } + } + } + } + } } }, - "\/health\/storage\/local": { - "get": { - "summary": "Get local storage", - "operationId": "healthGetStorageLocal", + "\/mongo\/{databaseId}\/maintenance": { + "patch": { + "summary": "Update database maintenance window.", + "operationId": "mongoUpdateMaintenance", "tags": [ - "health" + "mongo" ], - "description": "Check the Appwrite local storage device is up and connection is successful.", + "description": "Update the maintenance window for a dedicated database. Maintenance operations like minor version upgrades will be performed during this window.", "responses": { "200": { - "description": "Health Status", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthStatus" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36551,49 +43101,84 @@ }, "deprecated": false, "x-appwrite": { - "method": "getStorageLocal", - "group": "storage", + "method": "updateMaintenance", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-storage-local.md", + "demo": "mongo\/update-maintenance.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-storage-local.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": { + "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" + ] + } + } + } + } } }, - "\/health\/time": { - "get": { - "summary": "Get time", - "operationId": "healthGetTime", + "\/mongo\/{databaseId}\/migrations": { + "post": { + "summary": "Migrate database between shared and dedicated.", + "operationId": "mongoCreateMigration", "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": "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": "Health Time", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/healthTime" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36601,49 +43186,83 @@ }, "deprecated": false, "x-appwrite": { - "method": "getTime", - "group": "health", + "method": "createMigration", + "group": "databases", "cookies": false, "type": "", - "demo": "health\/get-time.md", + "demo": "mongo\/create-migration.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": [] } - ] + ], + "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": { + "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 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" + ] + } + } + } + } } }, - "\/locale": { + "\/mongo\/{databaseId}\/pitr": { "get": { - "summary": "Get user locale", - "operationId": "localeGet", + "summary": "Get PITR recovery windows.", + "operationId": "mongoGetPitr", "tags": [ - "locale" + "mongo" ], - "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))", + "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", "responses": { "200": { - "description": "Locale", + "description": "PITRWindows", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/locale" + "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" } } } @@ -36651,52 +43270,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "get", - "group": null, + "method": "getPitr", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/get.md", + "demo": "mongo\/get-pitr.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\/get-locale.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\/codes": { + "\/mongo\/{databaseId}\/replicas": { "get": { - "summary": "List locale codes", - "operationId": "localeListCodes", + "summary": "Get replica status.", + "operationId": "mongoGetReplicas", "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": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", "responses": { "200": { - "description": "Locale codes list", + "description": "Replicas", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/localeCodeList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseReplicas" } } } @@ -36704,105 +43329,159 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCodes", - "group": null, + "method": "getReplicas", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-codes.md", + "demo": "mongo\/get-replicas.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": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ] } }, - "\/locale\/continents": { + "\/mongo\/{databaseId}\/restorations": { "get": { - "summary": "List continents", - "operationId": "localeListContinents", + "summary": "List database restorations.", + "operationId": "mongoListRestorations", "tags": [ - "locale" + "mongo" ], - "description": "List of all continents. You can use the locale header to get the data in a supported language.", + "description": "List all restorations for a dedicated database. Results can be filtered by status and type.", "responses": { "200": { - "description": "Continents List", + "description": "Dedicated database restorations list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/continentList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestorationList" } } } } }, "deprecated": false, - "x-appwrite": { - "method": "listContinents", - "group": null, + "x-appwrite": { + "method": "listRestorations", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-continents.md", + "demo": "mongo\/list-restorations.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" + }, + { + "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" } ] - } - }, - "\/locale\/countries": { - "get": { - "summary": "List countries", - "operationId": "localeListCountries", + }, + "post": { + "summary": "Create a database restoration.", + "operationId": "mongoCreateRestoration", "tags": [ - "locale" + "mongo" ], - "description": "List of all countries. You can use the locale header to get the data in a supported language.", + "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 as an ISO 8601 datetime. PITR requires the database to have PITR enabled and is only available for enterprise databases.", "responses": { - "200": { - "description": "Countries List", + "202": { + "description": "Restoration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/countryList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" } } } @@ -36810,52 +43489,88 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCountries", - "group": null, + "method": "createRestoration", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-countries.md", + "demo": "mongo\/create-restoration.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": [] } - ] + ], + "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": "string", + "description": "Target time for PITR (required for pitr type) as an [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) datetime.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true + } + } + } + } + } + } } }, - "\/locale\/countries\/eu": { + "\/mongo\/{databaseId}\/restorations\/{restorationId}": { "get": { - "summary": "List EU countries", - "operationId": "localeListCountriesEU", + "summary": "Get a database restoration.", + "operationId": "mongoGetRestoration", "tags": [ - "locale" + "mongo" ], - "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.", + "description": "Get details of a specific database restoration including its status, type, and timestamps.", "responses": { "200": { - "description": "Countries List", + "description": "Restoration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/countryList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" } } } @@ -36863,52 +43578,68 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCountriesEU", - "group": null, + "method": "getRestoration", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-countries-eu.md", + "demo": "mongo\/get-restoration.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-eu.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": "restorationId", + "description": "Restoration ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<RESTORATION_ID>" + }, + "in": "path" } ] } }, - "\/locale\/countries\/phones": { + "\/mongo\/{databaseId}\/status": { "get": { - "summary": "List countries phone codes", - "operationId": "localeListCountriesPhones", + "summary": "Get database status.", + "operationId": "mongoGetStatus", "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": "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": "Phones List", + "description": "Status", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/phoneList" + "$ref": "#\/components\/schemas\/databaseStatus" } } } @@ -36916,52 +43647,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCountriesPhones", - "group": null, + "method": "getStatus", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-countries-phones.md", + "demo": "mongo\/get-status.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" } ] } }, - "\/locale\/currencies": { - "get": { - "summary": "List currencies", - "operationId": "localeListCurrencies", + "\/mongo\/{databaseId}\/upgrades": { + "post": { + "summary": "Upgrade database version.", + "operationId": "mongoCreateUpgrade", "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": "Upgrade a dedicated database to a new engine version. Uses blue-green deployment for zero-downtime cutover.", "responses": { "200": { - "description": "Currencies List", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/currencyList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -36969,52 +43706,77 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCurrencies", - "group": null, + "method": "createUpgrade", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-currencies.md", + "demo": "mongo\/create-upgrade.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": { + "targetVersion": { + "type": "string", + "description": "Target engine version to upgrade to.", + "x-example": "<TARGET_VERSION>" + } + }, + "required": [ + "targetVersion" + ] + } + } + } + } } }, - "\/locale\/languages": { + "\/mysql": { "get": { - "summary": "List languages", - "operationId": "localeListLanguages", + "summary": "List dedicated databases.", + "operationId": "mysqlList", "tags": [ - "locale" + "mysql" ], - "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 all dedicated databases. Results support pagination.", "responses": { "200": { - "description": "Languages List", + "description": "Dedicated databases list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/languageList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseList" } } } @@ -37022,52 +43784,59 @@ }, "deprecated": false, "x-appwrite": { - "method": "listLanguages", - "group": null, + "method": "list", + "group": "databases", "cookies": false, "type": "", - "demo": "locale\/list-languages.md", + "demo": "mysql\/list.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": "queries", + "description": "Array of query strings.", + "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 dedicated database.", + "operationId": "mysqlCreate", "tags": [ - "manager" + "mysql" ], - "description": "Creates a new resource block.", + "description": "Create a new dedicated database with the chosen engine and configuration. Status will be 'provisioning' until the database is ready.", "responses": { "201": { - "description": "Block", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/block" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -37075,103 +43844,161 @@ }, "deprecated": false, "x-appwrite": { - "method": "createBlock", - "group": null, + "method": "create", + "group": "databases", "cookies": false, "type": "", - "demo": "manager\/create-block.md", + "demo": "mysql\/create.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": [] + } + ], "requestBody": { "content": { "application\/json": { "schema": { "type": "object", "properties": { - "projectId": { + "databaseId": { "type": "string", - "description": "Project ID", - "x-example": "<PROJECT_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" + } }, - "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": "Database display name. Max length: 128 chars.", + "x-example": "<NAME>" }, - "resourceId": { + "version": { "type": "string", - "description": "Optional resource ID (if omitted, all resources of this type will be blocked)", - "default": "", - "x-example": "<RESOURCE_ID>" + "description": "Database engine version. Defaults to latest for selected engine.", + "x-example": "17", + "x-nullable": true }, - "reason": { + "specification": { "type": "string", - "description": "Optional reason why the resource is blocked", - "default": "", - "x-example": "<REASON>" + "description": "Specification identifier. Drives the allocated CPU, memory, storage, storage class, and connection ceiling.", + "default": "s-1vcpu-1gb", + "x-example": "<SPECIFICATION>" }, - "expiredAt": { + "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" + }, + "syncMode": { "type": "string", - "description": "Optional expiration date for the block", - "default": "", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime" + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true + }, + "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" + }, + "pitr": { + "type": "boolean", + "description": "Enable point-in-time recovery (PITR). Continuously archives changes so the database can be restored to any moment within the retention window.", + "default": true, + "x-example": false + }, + "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" + }, + "api": { + "type": "string", + "description": "Product API that owns this database: nativedb (raw, direct-access), tablesdb, documentsdb, or vectorsdb. tablesdb\/documentsdb\/vectorsdb databases are reached only through their product APIs.", + "default": "nativedb", + "x-example": "nativedb" } }, "required": [ - "projectId", - "resourceType" + "databaseId", + "name" ] } } } } - }, - "delete": { - "summary": "Delete resource blocks for a project", - "operationId": "managerDeleteBlock", + } + }, + "\/mysql\/specifications": { + "get": { + "summary": "List dedicated database specifications.", + "operationId": "mysqlListSpecifications", "tags": [ - "manager" + "mysql" ], - "description": "Deletes resource blocks for a project.", + "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": "BlockDelete", + "description": "SpecificationList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/blockDelete" + "$ref": "#\/components\/schemas\/dedicatedDatabaseSpecificationList" } } } @@ -37179,94 +44006,46 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteBlock", - "group": null, + "method": "listSpecifications", + "group": "databases", "cookies": false, "type": "", - "demo": "manager\/delete-block.md", + "demo": "mysql\/list-specifications.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": "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}": { + "\/mysql\/{databaseId}": { "get": { - "summary": "List all resource blocks for a project", - "operationId": "managerListBlocks", + "summary": "Get dedicated database.", + "operationId": "mysqlGet", "tags": [ - "manager" + "mysql" ], - "description": "Lists all resource blocks for a project.", + "description": "Get a dedicated database by its unique ID. Returns the database configuration and current status.", "responses": { "200": { - "description": "Blocks list", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/blockList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -37274,51 +44053,56 @@ }, "deprecated": false, "x-appwrite": { - "method": "listBlocks", - "group": null, + "method": "get", + "group": "databases", "cookies": false, "type": "", - "demo": "manager\/list-blocks.md", + "demo": "mysql\/get.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": [] + } }, + "security": [ + { + "Project": [] + } + ], "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" } ] - } - }, - "\/manager\/cache": { - "delete": { - "summary": "Clear internal cache", - "operationId": "managerDeleteCache", + }, + "patch": { + "summary": "Update dedicated database.", + "operationId": "mysqlUpdate", "tags": [ - "manager" + "mysql" ], - "description": "Clears internal cache.", + "description": "Update a dedicated database configuration. All changes are applied with zero downtime. Specification changes (cpu, memory, storage) are handled via rolling cutover. Storage expansion is done online. All other settings are applied in-place.", "responses": { "200": { - "description": "File", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -37326,161 +44110,329 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteCache", - "group": "cache", + "method": "update", + "group": "databases", "cookies": false, "type": "", - "demo": "manager\/delete-cache.md", + "demo": "mysql\/update.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": [ + "security": [ { - "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" - }, + "Project": [] + } + ], + "parameters": [ { - "name": "cache", - "description": "Cache target.", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "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" + "x-example": "<DATABASE_ID>" }, - "in": "query" - }, + "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, storage, connection ceiling, and node pool based on specification config. Resource changes are applied via rolling cutover with zero downtime.", + "x-example": "<SPECIFICATION>", + "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 + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "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 + }, + "pitr": { + "type": "boolean", + "description": "Enable or disable point-in-time recovery (PITR).", + "x-example": false, + "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 + }, + "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": "mysqlDelete", + "tags": [ + "mysql" + ], + "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": "delete", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/delete.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": [ { - "name": "all", - "description": "Clear the entire selected cache target.", - "required": false, - "schema": { - "type": "boolean", - "x-example": false, - "default": false - }, - "in": "query" - }, + "Project": [] + } + ], + "parameters": [ { - "name": "database", - "description": "Database cache scope.", - "required": false, + "name": "databaseId", + "description": "Database ID.", + "required": true, "schema": { "type": "string", - "x-example": "console", - "enum": [ - "console", - "project", - "logs" - ], - "x-enum-name": "CacheDatabase", - "x-enum-keys": [ - "console", - "project", - "logs" - ], - "default": "console" + "x-example": "<DATABASE_ID>" }, - "in": "query" - }, + "in": "path" + } + ] + } + }, + "\/mysql\/{databaseId}\/backups": { + "get": { + "summary": "List database backups.", + "operationId": "mysqlListBackups", + "tags": [ + "mysql" + ], + "description": "List all backups for a dedicated database. Results can be filtered by status and type.", + "responses": { + "200": { + "description": "BackupList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listBackups", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/list-backups.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": [ { - "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.", + "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": "string", - "x-example": "<DOCUMENT_ID>", - "default": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" } ] - } - }, - "\/manager\/users\/status": { - "patch": { - "summary": "Update a user status by ID or email", - "operationId": "managerUpdateUserStatus", + }, + "post": { + "summary": "Create a database backup.", + "operationId": "mysqlCreateBackup", "tags": [ - "manager" + "mysql" ], - "description": "Updates a console user status using a user ID or email address.", + "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": "User", + "202": { + "description": "Backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/user" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -37488,75 +44440,75 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateUserStatus", - "group": "users", + "method": "createBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "manager\/update-user-status.md", + "demo": "mysql\/create-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, + "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": { - "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": { "type": "string", - "description": "Optional reason when blocking a user. Accepted for parity with the CLI task but not persisted.", - "default": "", - "x-example": "<REASON>" + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" } - }, - "required": [ - "status" - ] + } } } } } } }, - "\/messaging\/messages": { + "\/mysql\/{databaseId}\/backups\/policies": { "get": { - "summary": "List messages", - "operationId": "messagingListMessages", + "summary": "List database backup policies.", + "operationId": "mysqlListBackupPolicies", "tags": [ - "messaging" + "mysql" ], - "description": "Get a list of all messages from the current Appwrite project.", + "description": "List scheduled backup policies for a dedicated database.", "responses": { "200": { - "description": "Message list", + "description": "Backup policy list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/messageList" + "$ref": "#\/components\/schemas\/backupPolicyList" } } } @@ -37564,36 +44516,43 @@ }, "deprecated": false, "x-appwrite": { - "method": "listMessages", - "group": "messages", + "method": "listBackupPolicies", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/list-messages.md", + "demo": "mysql\/list-backup-policies.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": "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: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType", + "description": "Array of query strings generated using the Query class provided by the SDK.", "required": false, "schema": { "type": "array", @@ -37603,47 +44562,23 @@ "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" } ] - } - }, - "\/messaging\/messages\/email": { + }, "post": { - "summary": "Create email", - "operationId": "messagingCreateEmail", + "summary": "Create a database backup policy.", + "operationId": "mysqlCreateBackupPolicy", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new email message.", + "description": "Create a scheduled backup policy for a dedicated database.", "responses": { "201": { - "description": "Message", + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -37651,30 +44586,39 @@ }, "deprecated": false, "x-appwrite": { - "method": "createEmail", - "group": "messages", + "method": "createBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-email.md", + "demo": "mysql\/create-backup-policy.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,102 +44627,48 @@ "schema": { "type": "object", "properties": { - "messageId": { + "policyId": { "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": "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" } }, - "subject": { + "name": { "type": "string", - "description": "Email Subject.", - "x-example": "<SUBJECT>" + "description": "Policy name. Max length: 128 chars.", + "x-example": "<NAME>" }, - "content": { + "schedule": { "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" - } + "description": "Schedule CRON syntax.", + "x-example": null }, - "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" - } + "retention": { + "type": "integer", + "description": "Days to keep backups before deletion.", + "x-example": 1, + "format": "int32" }, - "draft": { - "type": "boolean", - "description": "Is message a draft", - "default": false, - "x-example": false + "type": { + "type": "string", + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" }, - "html": { + "enabled": { "type": "boolean", - "description": "Is content of type HTML", - "default": false, + "description": "Is policy enabled? When disabled, no backups will be taken.", + "default": true, "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": [ - "messageId", - "subject", - "content" + "policyId", + "name", + "schedule", + "retention" ] } } @@ -37786,21 +44676,88 @@ } } }, - "\/messaging\/messages\/email\/{messageId}": { + "\/mysql\/{databaseId}\/backups\/policies\/{policyId}": { + "get": { + "summary": "Get a database backup policy.", + "operationId": "mysqlGetBackupPolicy", + "tags": [ + "mysql" + ], + "description": "Get a scheduled backup policy for a dedicated database.", + "responses": { + "200": { + "description": "backup", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/backupPolicy" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getBackupPolicy", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/get-backup-policy.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" + }, + { + "name": "policyId", + "description": "Policy ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<POLICY_ID>" + }, + "in": "path" + } + ] + }, "patch": { - "summary": "Update email", - "operationId": "messagingUpdateEmail", + "summary": "Update a database backup policy.", + "operationId": "mysqlUpdateBackupPolicy", "tags": [ - "messaging" + "mysql" ], - "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": "Update a scheduled backup policy for a dedicated database.", "responses": { "200": { - "description": "Message", + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -37808,40 +44765,47 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateEmail", - "group": "messages", + "method": "updateBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-email.md", + "demo": "mysql\/update-backup-policy.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": "policyId", + "description": "Policy ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<POLICY_ID>" }, "in": "path" } @@ -37852,113 +44816,115 @@ "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": { + "name": { "type": "string", - "description": "Email Subject.", - "x-example": "<SUBJECT>", + "description": "Policy name. Max length: 128 chars.", + "x-example": "<NAME>", "x-nullable": true }, - "content": { + "schedule": { "type": "string", - "description": "Email Content.", - "x-example": "<CONTENT>", - "x-nullable": true + "description": "Schedule CRON syntax.", + "x-example": null }, - "draft": { - "type": "boolean", - "description": "Is message a draft", - "x-example": false, + "retention": { + "type": "integer", + "description": "Days to keep backups before deletion.", + "x-example": 1, + "format": "int32", "x-nullable": true }, - "html": { + "enabled": { "type": "boolean", - "description": "Is content of type HTML", + "description": "Is policy enabled? When disabled, no backups will be taken.", "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 } } } } } } + }, + "delete": { + "summary": "Delete a database backup policy.", + "operationId": "mysqlDeleteBackupPolicy", + "tags": [ + "mysql" + ], + "description": "Delete a scheduled backup policy for a dedicated database. Backups already taken by the policy are kept until their retention expires.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteBackupPolicy", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/delete-backup-policy.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": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "policyId", + "description": "Policy ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<POLICY_ID>" + }, + "in": "path" + } + ] } }, - "\/messaging\/messages\/push": { - "post": { - "summary": "Create push notification", - "operationId": "messagingCreatePush", + "\/mysql\/{databaseId}\/backups\/storage": { + "put": { + "summary": "Update database backup storage.", + "operationId": "mysqlUpdateBackupStorage", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new push notification.", - "responses": { - "201": { - "description": "Message", + "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": "BackupStorageConfig", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupStorage" } } } @@ -37966,30 +44932,39 @@ }, "deprecated": false, "x-appwrite": { - "method": "createPush", - "group": "messages", + "method": "updateBackupStorage", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-push.md", + "demo": "mysql\/update-backup-storage.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": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -37998,146 +44973,50 @@ "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": { + "provider": { "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>" + "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" }, - "icon": { + "bucket": { "type": "string", - "description": "Icon for push notification. Available only for Android and Web Platform.", - "default": "", - "x-example": "<ICON>" + "description": "Storage bucket or container name.", + "x-example": "<BUCKET>" }, - "sound": { + "region": { "type": "string", - "description": "Sound for push notification. Available only for Android and iOS Platform.", + "description": "Storage region.", "default": "", - "x-example": "<SOUND>" + "x-example": "<REGION>" }, - "color": { + "prefix": { "type": "string", - "description": "Color for push notification. Available only for Android Platform.", - "default": "", - "x-example": "<COLOR>" + "description": "Object key prefix for backups.", + "default": "backups\/", + "x-example": "<PREFIX>" }, - "tag": { + "endpoint": { "type": "string", - "description": "Tag for push notification. Available only for Android Platform.", + "description": "Custom endpoint for S3-compatible storage (e.g. MinIO).", "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 + "x-example": "<ENDPOINT>" }, - "scheduledAt": { + "accessKey": { "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 + "description": "Access key or client ID for authentication.", + "x-example": "<ACCESS_KEY>" }, - "priority": { + "secretKey": { "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" - ] + "description": "Secret key or service account JSON for authentication.", + "x-example": "<SECRET_KEY>" } }, "required": [ - "messageId" + "provider", + "bucket", + "accessKey", + "secretKey" ] } } @@ -38145,21 +45024,21 @@ } } }, - "\/messaging\/messages\/push\/{messageId}": { - "patch": { - "summary": "Update push notification", - "operationId": "messagingUpdatePush", + "\/mysql\/{databaseId}\/backups\/{backupId}": { + "get": { + "summary": "Get a database backup.", + "operationId": "mysqlGetBackup", "tags": [ - "messaging" + "mysql" ], - "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": "Get details of a specific database backup including its status, size, and timestamps.", "responses": { "200": { - "description": "Message", + "description": "Backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/message" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -38167,498 +45046,226 @@ }, "deprecated": false, "x-appwrite": { - "method": "updatePush", - "group": "messages", + "method": "getBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-push.md", + "demo": "mysql\/get-backup.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\/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" + }, + { + "name": "backupId", + "description": "Backup ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BACKUP_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 - }, - "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": { - "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" - ], - "x-nullable": true - } - } - } - } - } - } - } - }, - "\/messaging\/messages\/sms": { - "post": { - "summary": "Create SMS", - "operationId": "messagingCreateSms", + ] + }, + "delete": { + "summary": "Delete a database backup.", + "operationId": "mysqlDeleteBackup", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new SMS message.", + "description": "Delete a database backup. This will permanently remove the backup from storage and cannot be undone.", "responses": { - "201": { - "description": "Message", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/message" - } - } - } + "204": { + "description": "No content" } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createSms", - "group": "messages", + "method": "deleteBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-sms.md", + "demo": "mysql\/delete-backup.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" + "public": true, + "produces": [ + "application\/json" + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" }, - "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": "backupId", + "description": "Backup ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BACKUP_ID>" }, - { - "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" + "in": "path" + } + ] + } + }, + "\/mysql\/{databaseId}\/branches": { + "get": { + "summary": "List database branches.", + "operationId": "mysqlListBranches", + "tags": [ + "mysql" + ], + "description": "List all ephemeral branches for a dedicated database. Returns branch metadata including ID, name, namespace, and expiration time.", + "responses": { + "200": { + "description": "BranchList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseBranchList" } - ], - "description": "Create a new SMS message.", - "demo": "messaging\/create-sms.md", - "public": true + } } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listBranches", + "group": "databases", + "cookies": false, + "type": "", + "demo": "mysql\/list-branches.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": [] } ], - "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" - } - }, - "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 - }, - "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": [ - "messageId", - "content" - ] - } - } + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } - } - } - }, - "\/messaging\/messages\/sms\/{messageId}": { - "patch": { - "summary": "Update SMS", - "operationId": "messagingUpdateSms", + ] + }, + "post": { + "summary": "Create a database branch.", + "operationId": "mysqlCreateBranch", "tags": [ - "messaging" + "mysql" ], - "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": "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": "Message", + "202": { + "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": "createBranch", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-sms.md", + "demo": "mysql\/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": 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,51 +45276,21 @@ "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": { + "branchId": { "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": "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" + } }, - "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" } } } @@ -38722,21 +45299,21 @@ } } }, - "\/messaging\/messages\/{messageId}": { - "get": { - "summary": "Get message", - "operationId": "messagingGetMessage", + "\/mysql\/{databaseId}\/branches\/{branchId}": { + "delete": { + "summary": "Delete a database branch.", + "operationId": "mysqlDeleteBranch", "tags": [ - "messaging" + "mysql" ], - "description": "Get a message by its unique ID.\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" } } } @@ -38744,114 +45321,127 @@ }, "deprecated": false, "x-appwrite": { - "method": "getMessage", - "group": "messages", + "method": "deleteBranch", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/get-message.md", + "demo": "mysql\/delete-branch.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.read", + "scope": "databases.write", "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" + }, + { + "name": "branchId", + "description": "Branch ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<BRANCH_ID>" }, "in": "path" } ] - }, - "delete": { - "summary": "Delete message", - "operationId": "messagingDelete", + } + }, + "\/mysql\/{databaseId}\/credentials": { + "patch": { + "summary": "Rotate database credentials.", + "operationId": "mysqlUpdateCredentials", "tags": [ - "messaging" + "mysql" ], - "description": "Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message.", + "description": "Rotate the primary connection credentials for a dedicated database. Generates a new password and updates the database atomically. Previous credentials stop working immediately. Returns the database with a refreshed connection string carrying the new password.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "DedicatedDatabase", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabase" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", - "group": "messages", + "method": "updateCredentials", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/delete.md", + "demo": "mysql\/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\/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": { - "get": { - "summary": "List message logs", - "operationId": "messagingListMessageLogs", + "\/mysql\/{databaseId}\/executions": { + "post": { + "summary": "Execute a SQL statement against a dedicated database.", + "operationId": "mysqlCreateExecution", "tags": [ - "messaging" + "mysql" ], - "description": "Get the message activity logs listed by its unique ID.", + "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": "Logs List", + "description": "Execution", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseExecution" } } } @@ -38859,85 +45449,91 @@ }, "deprecated": false, "x-appwrite": { - "method": "listMessageLogs", - "group": "logs", + "method": "createExecution", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/list-message-logs.md", + "demo": "mysql\/create-execution.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.read", + "scope": "databases.write", "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", - "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": { + "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": [ + "sql" + ] + } + } + } + } } }, - "\/messaging\/messages\/{messageId}\/targets": { - "get": { - "summary": "List message targets", - "operationId": "messagingListTargets", + "\/mysql\/{databaseId}\/failovers": { + "post": { + "summary": "Trigger manual failover.", + "operationId": "mysqlCreateFailover", "tags": [ - "messaging" + "mysql" ], - "description": "Get a list of the targets associated with a message.", + "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": "Target list", + "202": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/targetList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -38945,85 +45541,75 @@ }, "deprecated": false, "x-appwrite": { - "method": "listTargets", - "group": "messages", + "method": "createFailover", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/list-targets.md", + "demo": "mysql\/create-failover.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "messages.read", + "scope": "databases.write", "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, - "schema": { - "type": "boolean", - "x-example": false, - "default": true - }, - "in": "query" } - ] + ], + "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 + } + } + } + } + } + } } }, - "\/messaging\/providers": { - "get": { - "summary": "List providers", - "operationId": "messagingListProviders", + "\/mysql\/{databaseId}\/maintenance": { + "patch": { + "summary": "Update database maintenance window.", + "operationId": "mysqlUpdateMaintenance", "tags": [ - "messaging" + "mysql" ], - "description": "Get a list of all providers from the current Appwrite project.", + "description": "Update the maintenance window for a dedicated database. Maintenance operations like minor version upgrades will be performed during this window.", "responses": { "200": { - "description": "Provider list", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/providerList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -39031,189 +45617,124 @@ }, "deprecated": false, "x-appwrite": { - "method": "listProviders", - "group": "providers", + "method": "updateMaintenance", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/list-providers.md", + "demo": "mysql\/update-maintenance.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-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" } - ] + ], + "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" + ] + } + } + } + } } }, - "\/messaging\/providers\/apns": { + "\/mysql\/{databaseId}\/migrations": { "post": { - "summary": "Create APNS provider", - "operationId": "messagingCreateApnsProvider", + "summary": "Migrate database between shared and dedicated.", + "operationId": "mysqlCreateMigration", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Apple Push Notification service provider.", + "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": { - "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": "createMigration", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-apns-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": 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 +45743,20 @@ "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": { + "targetType": { "type": "string", - "description": "APNS team ID.", - "default": "", - "x-example": "<TEAM_ID>" + "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" }, - "bundleId": { + "specification": { "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, + "description": "Target specification to provision when migrating to dedicated. Ignored for shared. Defaults to the database's current specification.", + "x-example": "<SPECIFICATION>", "x-nullable": true } }, "required": [ - "providerId", - "name" + "targetType" ] } } @@ -39282,301 +45764,177 @@ } } }, - "\/messaging\/providers\/apns\/{providerId}": { - "patch": { - "summary": "Update APNS provider", - "operationId": "messagingUpdateApnsProvider", + "\/mysql\/{databaseId}\/pitr": { + "get": { + "summary": "Get PITR recovery windows.", + "operationId": "mysqlGetPitr", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Apple Push Notification service provider by its unique ID.", + "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", "responses": { "200": { - "description": "Provider", + "description": "PITRWindows", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateApnsProvider", - "group": "providers", + "method": "getPitr", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-apns-provider.md", + "demo": "mysql\/get-pitr.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.", + "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 - }, - "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 - } - } - } - } - } - } + ] } }, - "\/messaging\/providers\/fcm": { - "post": { - "summary": "Create FCM provider", - "operationId": "messagingCreateFcmProvider", + "\/mysql\/{databaseId}\/pooler": { + "get": { + "summary": "Get connection pooler configuration.", + "operationId": "mysqlGetPooler", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Firebase Cloud Messaging provider.", + "description": "Get the connection pooler configuration for a dedicated database. Returns pooler mode, max connections, and pool size settings.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "PoolerConfig", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createFcmProvider", - "group": "providers", + "method": "getPooler", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-fcm-provider.md", + "demo": "mysql\/get-pooler.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-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" + "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" } - ], - "description": "Create a new Firebase Cloud Messaging provider.", - "demo": "messaging\/create-fcm-provider.md", - "public": true + } } + } + }, + "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": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" } ], "requestBody": { @@ -39585,212 +45943,137 @@ "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 }, - "serviceAccountJSON": { - "type": "object", - "description": "FCM service account JSON.", - "default": {}, - "x-example": "{}", + "defaultPoolSize": { + "type": "integer", + "description": "Default pool size per user.", + "x-example": 1, + "format": "int32", "x-nullable": true }, - "enabled": { + "readWriteSplitting": { "type": "boolean", - "description": "Set as enabled.", + "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": "<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": [ - "providerId", - "name" - ] + } } } } } } }, - "\/messaging\/providers\/fcm\/{providerId}": { - "patch": { - "summary": "Update FCM provider", - "operationId": "messagingUpdateFcmProvider", + "\/mysql\/{databaseId}\/replicas": { + "get": { + "summary": "Get replica status.", + "operationId": "mysqlGetReplicas", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Firebase Cloud Messaging 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": "Replicas", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseReplicas" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateFcmProvider", - "group": "providers", + "method": "getReplicas", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-fcm-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": 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": [] + "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 - }, - "serviceAccountJSON": { - "type": "object", - "description": "FCM service account JSON.", - "default": {}, - "x-example": "{}", - "x-nullable": true - } - } - } - } - } - } + ] } }, - "\/messaging\/providers\/mailgun": { - "post": { - "summary": "Create Mailgun provider", - "operationId": "messagingCreateMailgunProvider", + "\/mysql\/{databaseId}\/restorations": { + "get": { + "summary": "List database restorations.", + "operationId": "mysqlListRestorations", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Mailgun 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" } } } @@ -39798,127 +46081,100 @@ }, "deprecated": false, "x-appwrite": { - "method": "createMailgunProvider", - "group": "providers", + "method": "listRestorations", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-mailgun-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-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" + }, + { + "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\/mailgun\/{providerId}": { - "patch": { - "summary": "Update Mailgun provider", - "operationId": "messagingUpdateMailgunProvider", + ] + }, + "post": { + "summary": "Create a database restoration.", + "operationId": "mysqlCreateRestoration", "tags": [ - "messaging" + "mysql" ], - "description": "Update a Mailgun 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 as an ISO 8601 datetime. 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" } } } @@ -39926,40 +46182,37 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateMailgunProvider", - "group": "providers", + "method": "createRestoration", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-mailgun-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-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" } @@ -39970,60 +46223,24 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "apiKey": { + "type": { "type": "string", - "description": "Mailgun 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" }, - "domain": { + "backupId": { "type": "string", - "description": "Mailgun Domain.", - "default": "", - "x-example": "<DOMAIN>" - }, - "isEuRegion": { - "type": "boolean", - "description": "Set as EU region.", - "x-example": false, - "x-nullable": true - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, + "description": "Backup ID to restore from (required for backup type).", + "x-example": "<BACKUP_ID>", "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.", - "default": "", - "x-example": "<REPLY_TO_NAME>" - }, - "replyToEmail": { + "targetTime": { "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": "Target time for PITR (required for pitr type) as an [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) datetime.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", + "x-nullable": true } } } @@ -40032,21 +46249,21 @@ } } }, - "\/messaging\/providers\/msg91": { - "post": { - "summary": "Create Msg91 provider", - "operationId": "messagingCreateMsg91Provider", + "\/mysql\/{databaseId}\/restorations\/{restorationId}": { + "get": { + "summary": "Get a database restoration.", + "operationId": "mysqlGetRestoration", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new MSG91 provider.", + "description": "Get details of a specific database restoration including its status, type, and timestamps.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "Restoration", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/dedicatedDatabaseRestoration" } } } @@ -40054,101 +46271,68 @@ }, "deprecated": false, "x-appwrite": { - "method": "createMsg91Provider", - "group": "providers", + "method": "getRestoration", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-msg-91-provider.md", + "demo": "mysql\/get-restoration.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-msg91-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>" - }, - "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" + }, + { + "name": "restorationId", + "description": "Restoration ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<RESTORATION_ID>" + }, + "in": "path" } - } + ] } }, - "\/messaging\/providers\/msg91\/{providerId}": { - "patch": { - "summary": "Update Msg91 provider", - "operationId": "messagingUpdateMsg91Provider", + "\/mysql\/{databaseId}\/status": { + "get": { + "summary": "Get database status.", + "operationId": "mysqlGetStatus", "tags": [ - "messaging" + "mysql" ], - "description": "Update a MSG91 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": { "200": { - "description": "Provider", + "description": "Status", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/databaseStatus" } } } @@ -40156,102 +46340,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateMsg91Provider", - "group": "providers", + "method": "getStatus", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/update-msg-91-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\/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" } - ], - "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": { + "\/mysql\/{databaseId}\/upgrades": { "post": { - "summary": "Create Resend provider", - "operationId": "messagingCreateResendProvider", + "summary": "Upgrade database version.", + "operationId": "mysqlCreateUpgrade", "tags": [ - "messaging" + "mysql" ], - "description": "Create a new Resend 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" } } } @@ -40259,30 +46399,39 @@ }, "deprecated": false, "x-appwrite": { - "method": "createResendProvider", - "group": "providers", + "method": "createUpgrade", + "group": "databases", "cookies": false, "type": "", - "demo": "messaging\/create-resend-provider.md", + "demo": "mysql\/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": 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,61 +46440,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>" - }, - "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": { + "targetVersion": { "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": "Target engine version to upgrade to.", + "x-example": "<TARGET_VERSION>" } }, "required": [ - "providerId", - "name" + "targetVersion" ] } } @@ -40353,21 +46455,21 @@ } } }, - "\/messaging\/providers\/resend\/{providerId}": { - "patch": { - "summary": "Update Resend provider", - "operationId": "messagingUpdateResendProvider", + "\/notifications": { + "get": { + "summary": "List notifications", + "operationId": "notificationsList", "tags": [ - "messaging" + "notifications" ], - "description": "Update a Resend provider by its unique ID.", + "description": "Get the list of notifications for the currently logged in console user. Use queries to filter the results by attributes such as read status, view timestamps, or creation date.\n", "responses": { "200": { - "description": "Provider", + "description": "Notifications List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/notificationList" } } } @@ -40375,115 +46477,62 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateResendProvider", - "group": "providers", + "method": "list", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/update-resend-provider.md", + "demo": "notifications\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "account", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-resend-provider.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/notifications\/list-notifications.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider 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: read, type, channel, messageId, projectId, resourceType, resourceId, parentResourceType, parentResourceId, firstSeen, lastSeen", + "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 - }, - "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>" - } - } - } - } + "in": "query" } - } + ] } }, - "\/messaging\/providers\/sendgrid": { - "post": { - "summary": "Create Sendgrid provider", - "operationId": "messagingCreateSendgridProvider", + "\/notifications\/{notificationId}": { + "patch": { + "summary": "Update notification", + "operationId": "notificationsUpdate", "tags": [ - "messaging" + "notifications" ], - "description": "Create a new Sendgrid provider.", + "description": "Update a notification by its unique ID. Use the `read` parameter to mark the notification as read or unread.\n", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "Notification", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/notification" } } } @@ -40491,30 +46540,40 @@ }, "deprecated": false, "x-appwrite": { - "method": "createSendgridProvider", - "group": "providers", + "method": "update", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/create-sendgrid-provider.md", + "demo": "notifications\/update.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "account", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sendgrid-provider.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/notifications\/update-notification.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] + } + ], + "parameters": [ + { + "name": "notificationId", + "description": "Notification ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<NOTIFICATION_ID>" + }, + "in": "path" } ], "requestBody": { @@ -40523,61 +46582,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>" - }, - "apiKey": { - "type": "string", - "description": "Sendgrid 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": { + "read": { "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "description": "Notification read status.", + "x-example": false } }, "required": [ - "providerId", - "name" + "read" ] } } @@ -40585,21 +46597,21 @@ } } }, - "\/messaging\/providers\/sendgrid\/{providerId}": { - "patch": { - "summary": "Update Sendgrid provider", - "operationId": "messagingUpdateSendgridProvider", + "\/oauth2\/{project_id}\/approve": { + "post": { + "summary": "Approve OAuth2", + "operationId": "oauth2Approve", "tags": [ - "messaging" + "oauth2" ], - "description": "Update a Sendgrid provider by its unique ID.", + "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": "Provider", + "description": "OAuth2 Approve", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/oauth2Approve" } } } @@ -40607,115 +46619,93 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateSendgridProvider", - "group": "providers", + "method": "approve", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/update-sendgrid-provider.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "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, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "Key": [] + "ProjectPath": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<PROJECT_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 - }, - "apiKey": { - "type": "string", - "description": "Sendgrid API key.", - "default": "", - "x-example": "<API_KEY>" - }, - "fromName": { - "type": "string", - "description": "Sender Name.", - "default": "", - "x-example": "<FROM_NAME>" - }, - "fromEmail": { + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "grant_id": { "type": "string", - "description": "Sender email address.", - "default": "", - "x-example": "email@example.com", - "format": "email" + "description": "Grant ID made during authorization, provided to consent screen in URL search params.", + "x-example": "<GRANT_ID>" }, - "replyToName": { + "authorization_details": { "type": "string", - "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", + "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": "<REPLY_TO_NAME>" + "x-example": "<AUTHORIZATION_DETAILS>" }, - "replyToEmail": { + "scope": { "type": "string", - "description": "Email set in the Reply To field for the mail. Default value is Sender Email.", + "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": "<REPLY_TO_EMAIL>" + "x-example": "<SCOPE>" } - } + }, + "required": [ + "grant_id" + ] } } } } } }, - "\/messaging\/providers\/ses": { - "post": { - "summary": "Create Amazon SES provider", - "operationId": "messagingCreateSesProvider", + "\/oauth2\/{project_id}\/authorize": { + "get": { + "summary": "OAuth2 Authorize", + "operationId": "oauth2Authorize", "tags": [ - "messaging" + "oauth2" ], - "description": "Create a new Amazon SES provider.", + "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": { - "201": { - "description": "Provider", + "200": { + "description": "OAuth2 Authorize", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/oauth2Authorize" } } } @@ -40723,127 +46713,205 @@ }, "deprecated": false, "x-appwrite": { - "method": "createSesProvider", - "group": "providers", + "method": "authorize", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/create-ses-provider.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/authorize.md", + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "public", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-ses-provider.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "Key": [] + "ProjectPath": [], + "Session": [], + "JWT": [] } ], - "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": "project_id", + "description": "Project ID in which OAuth2 client exists.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "client_id", + "description": "OAuth2 client ID.", + "required": false, + "schema": { + "type": "string", + "x-example": "<CLIENT_ID>", + "default": "" + }, + "in": "query" + }, + { + "name": "redirect_uri", + "description": "Redirect URI where visitor will be redirected after authorization, whether successful or not.", + "required": false, + "schema": { + "type": "string", + "format": "url", + "x-example": "https:\/\/example.com", + "default": "" + }, + "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": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "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": "string", + "x-example": "<SCOPE>", + "default": "" + }, + "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": "" + }, + "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" + }, + { + "name": "request_uri", + "description": "OAuth2 authorization request handle returned by the pushed authorization request endpoint.", + "required": false, + "schema": { + "type": "string", + "x-example": "<REQUEST_URI>", + "default": "" + }, + "in": "query" } - } + ] } }, - "\/messaging\/providers\/ses\/{providerId}": { - "patch": { - "summary": "Update Amazon SES provider", - "operationId": "messagingUpdateSesProvider", + "\/oauth2\/{project_id}\/device_authorization": { + "post": { + "summary": "OAuth2 Device Authorization", + "operationId": "oauth2CreateDeviceAuthorization", "tags": [ - "messaging" + "oauth2" ], - "description": "Update an Amazon SES provider by its unique ID.", + "description": "Start the OAuth2 Device Authorization Grant. Returns the device code, user code, verification URL, expiration, and polling interval.", "responses": { "200": { - "description": "Provider", + "description": "OAuth2 Device Authorization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/oauth2DeviceAuthorization" } } } @@ -40851,40 +46919,42 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateSesProvider", - "group": "providers", + "method": "createDeviceAuthorization", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/update-ses-provider.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": "providers.write", + "scope": "public", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-ses-provider.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], + "ProjectPath": [], + "Session": [], + "JWT": [], "Key": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" } @@ -40895,60 +46965,29 @@ "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": { + "client_id": { "type": "string", - "description": "Sender Name.", + "description": "OAuth2 client ID.", "default": "", - "x-example": "<FROM_NAME>" + "x-example": "<CLIENT_ID>" }, - "fromEmail": { + "scope": { "type": "string", - "description": "Sender email address.", + "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`.", "default": "", - "x-example": "email@example.com", - "format": "email" + "x-example": "<SCOPE>" }, - "replyToName": { + "authorization_details": { "type": "string", - "description": "Name set in the Reply To field for the mail. Default value is Sender Name.", + "description": "Rich authorization request. JSON array of objects, each with a `type` and project-defined fields", "default": "", - "x-example": "<REPLY_TO_NAME>" + "x-example": "<AUTHORIZATION_DETAILS>" }, - "replyToEmail": { + "resource": { "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": "RFC 8707 resource indicator URI or URI list. Each value must be an absolute URI without a fragment.", + "default": [], + "x-example": null } } } @@ -40957,138 +46996,65 @@ } } }, - "\/messaging\/providers\/smtp": { + "\/oauth2\/{project_id}\/grants": { "post": { - "summary": "Create SMTP provider", - "operationId": "messagingCreateSmtpProvider", + "summary": "Create OAuth2 Grant", + "operationId": "oauth2CreateGrant", "tags": [ - "messaging" + "oauth2" ], - "description": "Create a new SMTP provider.", + "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": { "201": { - "description": "Provider", + "description": "OAuth2 Grant", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/oauth2Grant" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "createSmtpProvider", - "group": "providers", + "method": "createGrant", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/create-smtp-provider.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "demo": "oauth2\/create-grant.md", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "oauth2.write", "platforms": [ "console", - "server" - ], - "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" - } - }, - { - "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 - } + "client", + "server" ], + "packaging": false, + "public": true, "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "Key": [] + "ProjectPath": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" } ], "requestBody": { @@ -41097,109 +47063,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>" - }, - "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": { + "user_code": { "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": "User code displayed on the device.", + "x-example": "<USER_CODE>" } }, "required": [ - "providerId", - "name", - "host" + "user_code" ] } } @@ -41207,267 +47078,318 @@ } } }, - "\/messaging\/providers\/smtp\/{providerId}": { - "patch": { - "summary": "Update SMTP provider", - "operationId": "messagingUpdateSmtpProvider", + "\/oauth2\/{project_id}\/grants\/{grant_id}": { + "get": { + "summary": "Get OAuth2 Grant", + "operationId": "oauth2GetGrant", "tags": [ - "messaging" + "oauth2" ], - "description": "Update a SMTP provider by its unique ID.", + "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": "Provider", + "description": "OAuth2 Grant", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/oauth2Grant" } } } } }, - "deprecated": true, + "deprecated": false, "x-appwrite": { - "method": "updateSmtpProvider", - "group": "providers", + "method": "getGrant", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/update-smtp-provider.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "providers.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": 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": { + "ProjectPath": [] + } + }, + "security": [ + { + "ProjectPath": [], + "Session": [], + "JWT": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "project_id", + "description": "Project ID in which OAuth2 client that created grant during authorization exists.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_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": "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>" }, - { - "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 - } + "in": "path" + } + ] + } + }, + "\/oauth2\/{project_id}\/logout": { + "get": { + "summary": "OAuth2 Logout", + "operationId": "oauth2Logout", + "tags": [ + "oauth2" + ], + "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" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "logout", + "group": null, + "cookies": false, + "type": "", + "demo": "oauth2\/logout.md", + "rate-limit": 10, + "rate-time": 60, + "rate-key": "url:{url},ip:{ip}", + "scope": "public", + "platforms": [ + "console", + "client" + ], + "packaging": false, + "public": true, + "produces": [ + "application\/json" ], "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "Key": [] + "ProjectPath": [], + "Session": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_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" } + ] + } + }, + "\/oauth2\/{project_id}\/organizations": { + "get": { + "summary": "OAuth2 List Accessible Organizations", + "operationId": "oauth2ListOrganizations", + "tags": [ + "oauth2" ], - "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": "List the organizations the OAuth2 access token can access. Resolves the token's `organization` authorization details, expanding the `*` wildcard into the concrete set of organizations the user can see.", + "responses": { + "200": { + "description": "OAuth2 accessible organizations list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/oauth2OrganizationList" } } } } - } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOrganizations", + "group": null, + "cookies": false, + "type": "", + "demo": "oauth2\/list-organizations.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "url:{url},ip:{ip}", + "scope": "oauth2.organizations.read", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "ProjectPath": [] + } + }, + "security": [ + { + "ProjectPath": [], + "Session": [], + "JWT": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "project_id", + "description": "Project ID of the console project the OAuth2 access token was issued for.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "limit", + "description": "Maximum number of organizations to return. Between 1 and 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of organizations to skip before returning results. Used for pagination.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "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" + } + ] } }, - "\/messaging\/providers\/telesign": { + "\/oauth2\/{project_id}\/par": { "post": { - "summary": "Create Telesign provider", - "operationId": "messagingCreateTelesignProvider", + "summary": "OAuth2 PAR", + "operationId": "oauth2CreatePAR", "tags": [ - "messaging" + "oauth2" ], - "description": "Create a new Telesign provider.", + "description": "Store an OAuth2 authorization request server-side and receive a short-lived request_uri handle for the authorize endpoint.", "responses": { "201": { - "description": "Provider", + "description": "OAuth2 PAR", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/oauth2PAR" } } } @@ -41475,80 +47397,128 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTelesignProvider", - "group": "providers", + "method": "createPAR", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/create-telesign-provider.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/create-par.md", + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "public", "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": [] + "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": { - "providerId": { + "client_id": { "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": "OAuth2 client ID.", + "x-example": "<CLIENT_ID>" }, - "name": { + "redirect_uri": { "type": "string", - "description": "Provider name.", - "x-example": "<NAME>" + "description": "Redirect URI where visitor will be redirected after authorization, whether successful or not.", + "x-example": "https:\/\/example.com", + "format": "url" }, - "from": { + "response_type": { "type": "string", - "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", + "description": "OAuth2 \/ OIDC response type.", + "x-example": "code" + }, + "scope": { + "type": "string", + "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`, `phone`.", + "x-example": "<SCOPE>" + }, + "state": { + "type": "string", + "description": "OAuth2 state. You receive this back in the redirect URI.", "default": "", - "x-example": "+12065550100", - "format": "phone" + "x-example": "<STATE>" }, - "customerId": { + "nonce": { "type": "string", - "description": "Telesign customer ID.", + "description": "OIDC nonce parameter to prevent replay attacks. Required when response_type includes `id_token`.", "default": "", - "x-example": "<CUSTOMER_ID>" + "x-example": "<NONCE>" }, - "apiKey": { + "code_challenge": { "type": "string", - "description": "Telesign API key.", + "description": "PKCE code challenge. Required when OAuth2 app is public.", "default": "", - "x-example": "<API_KEY>" + "x-example": "<CODE_CHALLENGE>" }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, + "code_challenge_method": { + "type": "string", + "description": "PKCE code challenge method. Required when OAuth2 app is public.", + "default": "", + "x-example": "s256" + }, + "prompt": { + "type": "string", + "description": "OIDC prompt parameter for customization of consent screen. Space-separated list of: none, login, consent, select_account.", + "default": "", + "x-example": "<PROMPT>" + }, + "max_age": { + "type": "integer", + "description": "OIDC max_age parameter for customization of consent screen.", + "x-example": 0, + "format": "int32", "x-nullable": true + }, + "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": [ - "providerId", - "name" + "client_id", + "redirect_uri", + "response_type", + "scope" ] } } @@ -41556,21 +47526,21 @@ } } }, - "\/messaging\/providers\/telesign\/{providerId}": { - "patch": { - "summary": "Update Telesign provider", - "operationId": "messagingUpdateTelesignProvider", + "\/oauth2\/{project_id}\/projects": { + "get": { + "summary": "OAuth2 List Accessible Projects", + "operationId": "oauth2ListProjects", "tags": [ - "messaging" + "oauth2" ], - "description": "Update a Telesign provider by its unique ID.", + "description": "List the projects the OAuth2 access token can access. Resolves the token's `project` authorization details, expanding the `*` wildcard into the concrete set of projects the user can see.", "responses": { "200": { - "description": "Provider", + "description": "OAuth2 accessible projects list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/oauth2ProjectList" } } } @@ -41578,102 +47548,98 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTelesignProvider", - "group": "providers", + "method": "listProjects", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/update-telesign-provider.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/list-projects.md", + "rate-limit": 120, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "oauth2.projects.read", "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": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], + "ProjectPath": [], + "Session": [], + "JWT": [], "Key": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "project_id", + "description": "Project ID of the console project the OAuth2 access token was issued for.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" + }, + { + "name": "limit", + "description": "Maximum number of projects to return. Between 1 and 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of projects to skip before returning results. Used for pagination.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "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" } - ], - "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 - }, - "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>" - } - } - } - } - } - } + ] } }, - "\/messaging\/providers\/textmagic": { + "\/oauth2\/{project_id}\/reject": { "post": { - "summary": "Create Textmagic provider", - "operationId": "messagingCreateTextmagicProvider", + "summary": "Reject OAuth2", + "operationId": "oauth2Reject", "tags": [ - "messaging" + "oauth2" ], - "description": "Create a new Textmagic provider.", + "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": { - "201": { - "description": "Provider", + "200": { + "description": "OAuth2 Reject", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/oauth2Reject" } } } @@ -41681,30 +47647,43 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTextmagicProvider", - "group": "providers", + "method": "reject", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/create-textmagic-provider.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "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\/create-textmagic-provider.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], - "Key": [] + "ProjectPath": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" } ], "requestBody": { @@ -41713,48 +47692,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>" - }, - "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": { + "grant_id": { "type": "string", - "description": "Textmagic apiKey.", - "default": "", - "x-example": "<API_KEY>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "description": "Grant ID made during authorization, provided to consent screen in URL search params.", + "x-example": "<GRANT_ID>" } }, "required": [ - "providerId", - "name" + "grant_id" ] } } @@ -41762,21 +47707,22 @@ } } }, - "\/messaging\/providers\/textmagic\/{providerId}": { - "patch": { - "summary": "Update Textmagic provider", - "operationId": "messagingUpdateTextmagicProvider", + "\/oauth2\/{project_id}\/revoke": { + "post": { + "summary": "OAuth2 Revoke", + "operationId": "oauth2Revoke", "tags": [ - "messaging" + "oauth2" ], - "description": "Update a Textmagic provider by its unique ID.", + "description": "Revoke an OAuth2 access token or refresh token.", "responses": { "200": { - "description": "Provider", + "description": "File", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "type": "string", + "format": "binary" } } } @@ -41784,40 +47730,42 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTextmagicProvider", - "group": "providers", + "method": "revoke", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/update-textmagic-provider.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/revoke.md", + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "public", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md", "auth": { - "Project": [] + "ProjectPath": [] } }, "security": [ { - "Project": [], + "ProjectPath": [], + "Session": [], + "JWT": [], "Key": [] } ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "project_id", + "description": "Project ID in which OAuth2 client exists.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" } @@ -41828,58 +47776,54 @@ "schema": { "type": "object", "properties": { - "name": { + "token": { "type": "string", - "description": "Provider name.", - "default": "", - "x-example": "<NAME>" - }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "description": "The access or refresh token to revoke.", + "x-example": "<TOKEN>" }, - "username": { + "token_type_hint": { "type": "string", - "description": "Textmagic username.", + "description": "Type of token to revoke (access_token or refresh_token).", "default": "", - "x-example": "<USERNAME>" + "x-example": "access_token" }, - "apiKey": { + "client_id": { "type": "string", - "description": "Textmagic apiKey.", + "description": "OAuth2 client ID.", "default": "", - "x-example": "<API_KEY>" + "x-example": "<CLIENT_ID>" }, - "from": { + "client_secret": { "type": "string", - "description": "Sender number.", + "description": "OAuth2 client secret. Required for confidential apps; omitted for public apps.", "default": "", - "x-example": "<FROM>" + "x-example": "<CLIENT_SECRET>" } - } + }, + "required": [ + "token" + ] } } } } } }, - "\/messaging\/providers\/twilio": { + "\/oauth2\/{project_id}\/token": { "post": { - "summary": "Create Twilio provider", - "operationId": "messagingCreateTwilioProvider", + "summary": "OAuth2 Token", + "operationId": "oauth2CreateToken", "tags": [ - "messaging" + "oauth2" ], - "description": "Create a new Twilio provider.", + "description": "Exchange an OAuth2 authorization code, refresh token, or device code for access and refresh tokens.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "OAuth2 Token", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/oauth2Token" } } } @@ -41887,80 +47831,109 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTwilioProvider", - "group": "providers", + "method": "createToken", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/create-twilio-provider.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": "providers.write", + "scope": "public", "platforms": [ "console", + "client", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.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": { - "providerId": { + "grant_type": { "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": "OAuth2 grant type. Can be one of: `authorization_code`, `refresh_token`, `urn:ietf:params:oauth:grant-type:device_code`.", + "x-example": "<GRANT_TYPE>" }, - "name": { + "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": "Provider name.", - "x-example": "<NAME>" + "description": "OAuth2 client ID.", + "default": "", + "x-example": "<CLIENT_ID>" }, - "from": { + "client_secret": { "type": "string", - "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", + "description": "OAuth2 client secret. Required for confidential apps.", "default": "", - "x-example": "+12065550100", - "format": "phone" + "x-example": "<CLIENT_SECRET>" }, - "accountSid": { + "code_verifier": { "type": "string", - "description": "Twilio account secret ID.", + "description": "PKCE code verifier. Required for public apps.", "default": "", - "x-example": "<ACCOUNT_SID>" + "x-example": "<CODE_VERIFIER>" }, - "authToken": { + "redirect_uri": { "type": "string", - "description": "Twilio authentication token.", + "description": "Redirect URI. Required for `authorization_code` grant type.", "default": "", - "x-example": "<AUTH_TOKEN>" + "x-example": "https:\/\/example.com", + "format": "url" }, - "enabled": { - "type": "boolean", - "description": "Set as enabled.", - "x-example": false, - "x-nullable": true + "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": [ - "providerId", - "name" + "grant_type" ] } } @@ -41968,21 +47941,21 @@ } } }, - "\/messaging\/providers\/twilio\/{providerId}": { - "patch": { - "summary": "Update Twilio provider", - "operationId": "messagingUpdateTwilioProvider", + "\/organization": { + "get": { + "summary": "Get organization", + "operationId": "organizationGet", "tags": [ - "messaging" + "organization" ], - "description": "Update a Twilio provider by its unique ID.", + "description": "Get the current organization.", "responses": { "200": { - "description": "Provider", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/organization" } } } @@ -41990,22 +47963,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTwilioProvider", - "group": "providers", + "method": "get", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/update-twilio-provider.md", + "demo": "organization\/get.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "organization.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md", "auth": { "Project": [] } @@ -42015,77 +47987,22 @@ "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 - }, - "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", + ] + }, + "put": { + "summary": "Update organization", + "operationId": "organizationUpdate", "tags": [ - "messaging" + "organization" ], - "description": "Create a new Vonage provider.", + "description": "Update the current organization's name.", "responses": { - "201": { - "description": "Provider", + "200": { + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/organization" } } } @@ -42093,22 +48010,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createVonageProvider", - "group": "providers", + "method": "update", + "group": null, "cookies": false, "type": "", - "demo": "messaging\/create-vonage-provider.md", + "demo": "organization\/update.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "organization.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": [] } @@ -42125,70 +48041,76 @@ "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.", + "description": "New organization name. Max length: 128 chars.", "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" ] } } } } + }, + "delete": { + "summary": "Delete organization", + "operationId": "organizationDelete", + "tags": [ + "organization" + ], + "description": "Delete the current organization. All projects that belong to the organization are deleted as well.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "delete", + "group": null, + "cookies": false, + "type": "", + "demo": "organization\/delete.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "organization.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] } }, - "\/messaging\/providers\/vonage\/{providerId}": { - "patch": { - "summary": "Update Vonage provider", - "operationId": "messagingUpdateVonageProvider", + "\/organization\/keys": { + "get": { + "summary": "List organization keys", + "operationId": "organizationListKeys", "tags": [ - "messaging" + "organization" ], - "description": "Update a Vonage provider by its unique ID.", + "description": "Get a list of all API keys from the current organization.", "responses": { "200": { - "description": "Provider", + "description": "API Keys List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/keyList" } } } @@ -42196,22 +48118,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateVonageProvider", - "group": "providers", + "method": "listKeys", + "group": "keys", "cookies": false, "type": "", - "demo": "messaging\/update-vonage-provider.md", + "demo": "organization\/list-keys.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "organization.keys.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md", "auth": { "Project": [] } @@ -42224,74 +48145,45 @@ ], "parameters": [ { - "name": "providerId", - "description": "Provider 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: expire, accessedAt, name, scopes", + "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 - }, - "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>" - } - } - } - } + "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\/providers\/{providerId}": { - "get": { - "summary": "Get provider", - "operationId": "messagingGetProvider", + ] + }, + "post": { + "summary": "Create organization key", + "operationId": "organizationCreateKey", "tags": [ - "messaging" + "organization" ], - "description": "Get a provider by its unique ID.\n", + "description": "Create a new organization API key.", "responses": { - "200": { - "description": "Provider", + "201": { + "description": "Key", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/provider" + "$ref": "#\/components\/schemas\/key" } } } @@ -42299,22 +48191,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getProvider", - "group": "providers", + "method": "createKey", + "group": "keys", "cookies": false, "type": "", - "demo": "messaging\/get-provider.md", + "demo": "organization\/create-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.read", + "scope": "organization.keys.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md", "auth": { "Project": [] } @@ -42325,49 +48216,122 @@ "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": { + "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 200 scopes are allowed.", + "x-example": null, + "items": { + "type": "string", + "enum": [ + "projects.read", + "projects.write", + "devKeys.read", + "devKeys.write", + "organization.keys.read", + "organization.keys.write", + "organization.memberships.read", + "organization.memberships.write", + "organization.read", + "organization.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", + "organization.memberships.read", + "organization.memberships.write", + "organization.read", + "organization.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" + ] + } + } } - ] - }, - "delete": { - "summary": "Delete provider", - "operationId": "messagingDeleteProvider", + } + } + }, + "\/organization\/keys\/{keyId}": { + "get": { + "summary": "Get organization key", + "operationId": "organizationGetKey", "tags": [ - "messaging" + "organization" ], - "description": "Delete a provider by its unique ID.", + "description": "Get a key by its unique ID. This endpoint returns details about a specific API key in your organization including its scopes.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Key", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/key" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteProvider", - "group": "providers", + "method": "getKey", + "group": "keys", "cookies": false, "type": "", - "demo": "messaging\/delete-provider.md", + "demo": "organization\/get-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.write", + "scope": "organization.keys.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md", "auth": { "Project": [] } @@ -42380,33 +48344,31 @@ ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "keyId", + "description": "Key unique ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<KEY_ID>" }, "in": "path" } ] - } - }, - "\/messaging\/providers\/{providerId}\/logs": { - "get": { - "summary": "List provider logs", - "operationId": "messagingListProviderLogs", + }, + "put": { + "summary": "Update organization key", + "operationId": "organizationUpdateKey", "tags": [ - "messaging" + "organization" ], - "description": "Get the provider activity logs listed by its unique ID.", + "description": "Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.", "responses": { "200": { - "description": "Logs List", + "description": "Key", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/key" } } } @@ -42414,22 +48376,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listProviderLogs", - "group": "providers", + "method": "updateKey", + "group": "keys", "cookies": false, "type": "", - "demo": "messaging\/list-provider-logs.md", + "demo": "organization\/update-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "providers.read", + "scope": "organization.keys.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-provider-logs.md", "auth": { "Project": [] } @@ -42442,80 +48403,114 @@ ], "parameters": [ { - "name": "providerId", - "description": "Provider ID.", + "name": "keyId", + "description": "Key unique ID.", "required": true, "schema": { "type": "string", - "x-example": "<PROVIDER_ID>" + "x-example": "<KEY_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", + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Key name. Max length: 128 chars.", + "x-example": "<NAME>" + }, + "scopes": { + "type": "array", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", + "x-example": null, + "items": { + "type": "string", + "enum": [ + "projects.read", + "projects.write", + "devKeys.read", + "devKeys.write", + "organization.keys.read", + "organization.keys.write", + "organization.memberships.read", + "organization.memberships.write", + "organization.read", + "organization.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", + "organization.memberships.read", + "organization.memberships.write", + "organization.read", + "organization.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": [ + "name", + "scopes" + ] + } + } + } + } + }, + "delete": { + "summary": "Delete organization key", + "operationId": "organizationDeleteKey", "tags": [ - "messaging" + "organization" ], - "description": "Get the subscriber activity logs listed by its unique ID.", + "description": "Delete a key by its unique ID. Once deleted, the key can no longer be used to authenticate API calls.", "responses": { - "200": { - "description": "Logs List", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/logList" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "listSubscriberLogs", - "group": "subscribers", + "method": "deleteKey", + "group": "keys", "cookies": false, "type": "", - "demo": "messaging\/list-subscriber-logs.md", + "demo": "organization\/delete-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.read", + "scope": "organization.keys.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscriber-logs.md", "auth": { "Project": [] } @@ -42528,57 +48523,33 @@ ], "parameters": [ { - "name": "subscriberId", - "description": "Subscriber ID.", + "name": "keyId", + "description": "Key unique ID.", "required": true, "schema": { "type": "string", - "x-example": "<SUBSCRIBER_ID>" + "x-example": "<KEY_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": { + "\/organization\/memberships": { "get": { - "summary": "List topics", - "operationId": "messagingListTopics", + "summary": "List organization memberships", + "operationId": "organizationListMemberships", "tags": [ - "messaging" + "organization" ], - "description": "Get a list of all topics from the current Appwrite project.", + "description": "Get a list of all memberships from the current organization.", "responses": { "200": { - "description": "Topic list", + "description": "Memberships List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/topicList" + "$ref": "#\/components\/schemas\/membershipList" } } } @@ -42586,22 +48557,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listTopics", - "group": "topics", + "method": "listMemberships", + "group": "memberships", "cookies": false, "type": "", - "demo": "messaging\/list-topics.md", + "demo": "organization\/list-memberships.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "topics.read", + "scope": "organization.memberships.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md", "auth": { "Project": [] } @@ -42615,7 +48585,7 @@ "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", + "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, teamId, invited, joined, confirm, roles", "required": false, "schema": { "type": "array", @@ -42651,19 +48621,19 @@ ] }, "post": { - "summary": "Create topic", - "operationId": "messagingCreateTopic", + "summary": "Create organization membership", + "operationId": "organizationCreateMembership", "tags": [ - "messaging" + "organization" ], - "description": "Create a new topic.", + "description": "Invite a new member to join the current organization. An email with a link to join the organization will be sent to the new member's email address. If member doesn't exist in the project it will be automatically created.", "responses": { "201": { - "description": "Topic", + "description": "Membership", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/topic" + "$ref": "#\/components\/schemas\/membership" } } } @@ -42671,22 +48641,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createTopic", - "group": "topics", + "method": "createMembership", + "group": "memberships", "cookies": false, "type": "", - "demo": "messaging\/create-topic.md", - "rate-limit": 0, + "demo": "organization\/create-membership.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "topics.write", + "scope": "organization.memberships.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md", "auth": { "Project": [] } @@ -42703,34 +48672,50 @@ "schema": { "type": "object", "properties": { - "topicId": { + "email": { "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": "Email of the new organization member.", + "default": "", + "x-example": "email@example.com", + "format": "email" }, - "name": { + "userId": { "type": "string", - "description": "Topic Name.", - "x-example": "<NAME>" + "description": "ID of the user to be added to the organization.", + "default": "", + "x-example": "<USER_ID>" }, - "subscribe": { + "phone": { + "type": "string", + "description": "Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", + "default": "", + "x-example": "+12065550100", + "format": "phone" + }, + "roles": { "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\"]", + "description": "Array of strings. Use this param to set the user roles in the organization. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 81 characters long.", + "x-example": null, "items": { "type": "string" } + }, + "url": { + "type": "string", + "description": "URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied.", + "default": "", + "x-example": "https:\/\/example.com", + "format": "url" + }, + "name": { + "type": "string", + "description": "Name of the new organization member. Max length: 128 chars.", + "default": "", + "x-example": "<NAME>" } }, "required": [ - "topicId", - "name" + "roles" ] } } @@ -42738,21 +48723,21 @@ } } }, - "\/messaging\/topics\/{topicId}": { + "\/organization\/memberships\/{membershipId}": { "get": { - "summary": "Get topic", - "operationId": "messagingGetTopic", + "summary": "Get organization membership", + "operationId": "organizationGetMembership", "tags": [ - "messaging" + "organization" ], - "description": "Get a topic by its unique ID.\n", + "description": "Get a membership from the current organization by its unique ID.", "responses": { "200": { - "description": "Topic", + "description": "Membership", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/topic" + "$ref": "#\/components\/schemas\/membership" } } } @@ -42760,22 +48745,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getTopic", - "group": "topics", + "method": "getMembership", + "group": "memberships", "cookies": false, "type": "", - "demo": "messaging\/get-topic.md", + "demo": "organization\/get-membership.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "topics.read", + "scope": "organization.memberships.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md", "auth": { "Project": [] } @@ -42788,31 +48772,31 @@ ], "parameters": [ { - "name": "topicId", - "description": "Topic ID.", + "name": "membershipId", + "description": "Membership ID.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<MEMBERSHIP_ID>" }, "in": "path" } ] }, "patch": { - "summary": "Update topic", - "operationId": "messagingUpdateTopic", + "summary": "Update organization membership", + "operationId": "organizationUpdateMembership", "tags": [ - "messaging" + "organization" ], - "description": "Update a topic by its unique ID.\n", + "description": "Modify the roles of a member in the current organization.", "responses": { "200": { - "description": "Topic", + "description": "Membership", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/topic" + "$ref": "#\/components\/schemas\/membership" } } } @@ -42820,22 +48804,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateTopic", - "group": "topics", + "method": "updateMembership", + "group": "memberships", "cookies": false, "type": "", - "demo": "messaging\/update-topic.md", + "demo": "organization\/update-membership.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "topics.write", + "scope": "organization.memberships.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md", "auth": { "Project": [] } @@ -42848,12 +48831,12 @@ ], "parameters": [ { - "name": "topicId", - "description": "Topic ID.", + "name": "membershipId", + "description": "Membership ID.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<MEMBERSHIP_ID>" }, "in": "path" } @@ -42864,34 +48847,30 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Topic Name.", - "x-example": "<NAME>", - "x-nullable": true - }, - "subscribe": { + "roles": { "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\"]", + "description": "An array of strings. Use this param to set the user's roles in the organization. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 81 characters long.", + "x-example": null, "items": { "type": "string" - }, - "x-nullable": true + } } - } + }, + "required": [ + "roles" + ] } } } } }, "delete": { - "summary": "Delete topic", - "operationId": "messagingDeleteTopic", + "summary": "Delete organization membership", + "operationId": "organizationDeleteMembership", "tags": [ - "messaging" + "organization" ], - "description": "Delete a topic by its unique ID.", + "description": "Remove a member from the current organization. The member is removed whether they accepted the invitation or not; a pending invitation is revoked.", "responses": { "204": { "description": "No content" @@ -42899,22 +48878,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteTopic", - "group": "topics", + "method": "deleteMembership", + "group": "memberships", "cookies": false, "type": "", - "demo": "messaging\/delete-topic.md", + "demo": "organization\/delete-membership.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "topics.write", + "scope": "organization.memberships.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md", "auth": { "Project": [] } @@ -42927,33 +48905,33 @@ ], "parameters": [ { - "name": "topicId", - "description": "Topic ID.", + "name": "membershipId", + "description": "Membership ID.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<MEMBERSHIP_ID>" }, "in": "path" } ] } }, - "\/messaging\/topics\/{topicId}\/logs": { + "\/organization\/projects": { "get": { - "summary": "List topic logs", - "operationId": "messagingListTopicLogs", + "summary": "List organization projects", + "operationId": "organizationListProjects", "tags": [ - "messaging" + "organization" ], - "description": "Get the topic activity logs listed by its unique ID.", + "description": "Get a list of all projects. You can use the query params to filter your results.", "responses": { "200": { - "description": "Logs List", + "description": "Projects List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/logList" + "$ref": "#\/components\/schemas\/projectList" } } } @@ -42961,22 +48939,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listTopicLogs", - "group": "topics", + "method": "listProjects", + "group": "projects", "cookies": false, "type": "", - "demo": "messaging\/list-topic-logs.md", + "demo": "organization\/list-projects.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "topics.read", + "scope": "projects.read", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topic-logs.md", "auth": { "Project": [] } @@ -42988,19 +48965,9 @@ } ], "parameters": [ - { - "name": "topicId", - "description": "Topic ID.", - "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). 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. You may filter on the following attributes: name, teamId, labels, search, accessedAt", "required": false, "schema": { "type": "array", @@ -43011,6 +48978,17 @@ }, "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.", @@ -43023,23 +49001,21 @@ "in": "query" } ] - } - }, - "\/messaging\/topics\/{topicId}\/subscribers": { - "get": { - "summary": "List subscribers", - "operationId": "messagingListSubscribers", + }, + "post": { + "summary": "Create organization project", + "operationId": "organizationCreateProject", "tags": [ - "messaging" + "organization" ], - "description": "Get a list of all subscribers from the current Appwrite project.", + "description": "Create a new project.", "responses": { - "200": { - "description": "Subscriber list", + "201": { + "description": "Project", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/subscriberList" + "$ref": "#\/components\/schemas\/project" } } } @@ -43047,22 +49023,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listSubscribers", - "group": "subscribers", + "method": "createProject", + "group": "projects", "cookies": false, "type": "", - "demo": "messaging\/list-subscribers.md", + "demo": "organization\/create-project.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.read", + "scope": "projects.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md", "auth": { "Project": [] } @@ -43073,68 +49048,70 @@ "Key": [] } ], - "parameters": [ - { - "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": "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": { + "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": { + "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" + ] + } + }, + "required": [ + "projectId", + "name" + ] + } + } } - ] - }, - "post": { - "summary": "Create subscriber", - "operationId": "messagingCreateSubscriber", + } + } + }, + "\/organization\/projects\/{projectId}": { + "get": { + "summary": "Get organization project", + "operationId": "organizationGetProject", "tags": [ - "messaging" + "organization" ], - "description": "Create a new subscriber.", + "description": "Get a project.", "responses": { - "201": { - "description": "Subscriber", + "200": { + "description": "Project", "content": { - "application\/json": { + "": { "schema": { - "$ref": "#\/components\/schemas\/subscriber" + "$ref": "#\/components\/schemas\/project" } } } @@ -43142,23 +49119,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createSubscriber", - "group": "subscribers", + "method": "getProject", + "group": "projects", "cookies": false, "type": "", - "demo": "messaging\/create-subscriber.md", + "demo": "organization\/get-project.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.write", + "scope": "projects.read", "platforms": [ - "server", - "client", - "console" + "console", + "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md", "auth": { "Project": [] } @@ -43166,68 +49141,36 @@ "security": [ { "Project": [], - "JWT": [], - "Session": [], "Key": [] } ], "parameters": [ { - "name": "topicId", - "description": "Topic ID. The topic ID to subscribe to.", + "name": "projectId", + "description": "Project unique ID.", "required": true, "schema": { "type": "string", - "x-example": "<TOPIC_ID>" + "x-example": "<PROJECT_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" - ] - } - } - } - } - } - }, - "\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}": { - "get": { - "summary": "Get subscriber", - "operationId": "messagingGetSubscriber", + ] + }, + "patch": { + "summary": "Update organization project", + "operationId": "organizationUpdateProject", "tags": [ - "messaging" + "organization" ], - "description": "Get a subscriber by its unique ID.\n", + "description": "Update a project by its unique ID.", "responses": { "200": { - "description": "Subscriber", + "description": "Project", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/subscriber" + "$ref": "#\/components\/schemas\/project" } } } @@ -43235,22 +49178,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getSubscriber", - "group": "subscribers", + "method": "updateProject", + "group": "projects", "cookies": false, "type": "", - "demo": "messaging\/get-subscriber.md", + "demo": "organization\/update-project.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.read", + "scope": "projects.write", "platforms": [ "console", "server" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md", "auth": { "Project": [] } @@ -43263,34 +49205,43 @@ ], "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.", + "name": "projectId", + "description": "Project unique ID.", "required": true, "schema": { "type": "string", - "x-example": "<SUBSCRIBER_ID>" + "x-example": "<PROJECT_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 subscriber", - "operationId": "messagingDeleteSubscriber", + "summary": "Delete organization project", + "operationId": "organizationDeleteProject", "tags": [ - "messaging" + "organization" ], - "description": "Delete a subscriber by its unique ID.", + "description": "Delete a project by its unique ID.", "responses": { "204": { "description": "No content" @@ -43298,23 +49249,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteSubscriber", - "group": "subscribers", + "method": "deleteProject", + "group": "projects", "cookies": false, "type": "", - "demo": "messaging\/delete-subscriber.md", + "demo": "organization\/delete-project.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "subscribers.write", + "scope": "projects.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 +49271,38 @@ "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.", + "name": "projectId", + "description": "Project unique ID.", "required": true, "schema": { "type": "string", - "x-example": "<SUBSCRIBER_ID>" + "x-example": "<PROJECT_ID>" }, "in": "path" } ] } }, - "\/migrations": { + "\/organizations": { "get": { - "summary": "List migrations", - "operationId": "migrationsList", + "summary": "List Orgnizations", + "operationId": "organizationsList", "tags": [ - "migrations" + "organizations" ], - "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 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": "Migrations List", + "description": "Organizations list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migrationList" + "$ref": "#\/components\/schemas\/organizationList" } } } @@ -43377,17 +49314,17 @@ "group": null, "cookies": false, "type": "", - "demo": "migrations\/list.md", + "demo": "organizations\/list.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.read", + "scope": "teams.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md", "auth": { "Project": [] } @@ -43400,7 +49337,7 @@ "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", + "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", @@ -43421,36 +49358,30 @@ "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" } ] - } - }, - "\/migrations\/appwrite": { + }, "post": { - "summary": "Create Appwrite migration", - "operationId": "migrationsCreateAppwriteMigration", + "summary": "Create Organization", + "operationId": "organizationsCreate", "tags": [ - "migrations" + "organizations" ], - "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": "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" + } + ] } } } @@ -43458,21 +49389,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createAppwriteMigration", + "method": "create", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-appwrite-migration.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-appwrite.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md", "auth": { "Project": [] } @@ -43488,334 +49419,107 @@ "schema": { "type": "object", "properties": { - "resources": { + "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": "List of resources to migrate", + "description": "Additional member invites", + "default": [], "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" - ] + "type": "string" } }, - "endpoint": { + "couponId": { "type": "string", - "description": "Source Appwrite endpoint", - "x-example": "https:\/\/example.com", - "format": "url" + "description": "Coupon id", + "x-example": "<COUPON_ID>", + "x-nullable": true }, - "projectId": { + "taxId": { "type": "string", - "description": "Source Project ID", - "x-example": "<PROJECT_ID>" + "description": "Tax Id associated to billing.", + "x-example": "<TAX_ID>", + "x-nullable": true }, - "apiKey": { - "type": "string", - "description": "Source API Key", - "x-example": "<API_KEY>" + "budget": { + "type": "integer", + "description": "Budget limit for additional usage set for the organization", + "x-example": 0, + "format": "int32", + "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": [ - "resources", - "endpoint", - "projectId", - "apiKey" - ] - } - } - } - } - } - }, - "\/migrations\/appwrite\/report": { - "get": { - "summary": "Get Appwrite migration report", - "operationId": "migrationsGetAppwriteReport", - "tags": [ - "migrations" - ], - "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": "Migration Report", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/migrationReport" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "getAppwriteReport", - "group": null, - "cookies": false, - "type": "", - "demo": "migrations\/get-appwrite-report.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "migrations.write", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "resources", - "description": "List of resources to migrate", - "required": true, - "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" + "organizationId", + "name", + "billingPlan" ] - } - }, - "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" + } + } } - ] + } } }, - "\/migrations\/csv\/exports": { - "post": { - "summary": "Export documents to CSV", - "operationId": "migrationsCreateCSVExport", + "\/organizations\/estimations\/create-organization": { + "patch": { + "summary": "Estimate create Organization", + "operationId": "organizationsEstimationCreateOrganization", "tags": [ - "migrations" + "organizations" ], - "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": "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" } } } @@ -43823,21 +49527,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createCSVExport", + "method": "estimationCreateOrganization", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-csv-export.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-csv-export.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/estimation-create-organization.md", "auth": { "Project": [] } @@ -43853,68 +49557,50 @@ "schema": { "type": "object", "properties": { - "resourceId": { + "billingPlan": { "type": "string", - "description": "Composite ID in the format {databaseId:collectionId}, identifying a collection within a database to export.", - "x-example": "<ID1:ID2>" + "description": "Organization billing plan chosen", + "x-example": "tier-0" }, - "filename": { + "paymentMethodId": { "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" - } + "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 }, - "queries": { + "invites": { "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.", + "description": "Additional member invites", "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": { + "couponId": { "type": "string", - "description": "The character that encloses each column value. Default is double quotes.", - "default": "\"", - "x-example": "<ENCLOSURE>" + "description": "Coupon id", + "x-example": "<COUPON_ID>", + "x-nullable": true }, - "escape": { + "platform": { "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": "Platform type", + "default": "appwrite", + "x-example": "appwrite", + "enum": [ + "appwrite", + "imagine" + ], + "x-enum-name": "Platform", + "x-enum-keys": [ + "appwrite", + "imagine" + ] } }, "required": [ - "resourceId", - "filename" + "billingPlan" ] } } @@ -43922,21 +49608,77 @@ } } }, - "\/migrations\/csv\/imports": { - "post": { - "summary": "Import documents from a CSV", - "operationId": "migrationsCreateCSVImport", + "\/organizations\/{organizationId}": { + "delete": { + "summary": "Delete team", + "operationId": "organizationsDelete", "tags": [ - "migrations" + "organizations" ], - "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": "Delete an organization.", "responses": { - "202": { - "description": "Migration", + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "delete", + "group": null, + "cookies": false, + "type": "", + "demo": "organizations\/delete.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "organizations.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md", + "produces": [ + "application\/json" + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "organizationId", + "description": "Team ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + } + ] + } + }, + "\/organizations\/{organizationId}\/addons": { + "get": { + "summary": "List addons", + "operationId": "organizationsListAddons", + "tags": [ + "organizations" + ], + "description": "List all billing addons for an organization.\n", + "responses": { + "200": { + "description": "Addons list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/addonList" } } } @@ -43944,21 +49686,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createCSVImport", + "method": "listAddons", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-csv-import.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-csv-import.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-addons.md", "auth": { "Project": [] } @@ -43968,77 +49710,35 @@ "Project": [] } ], - "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": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" } - } + ] } }, - "\/migrations\/firebase": { + "\/organizations\/{organizationId}\/addons\/baa": { "post": { - "summary": "Create Firebase migration", - "operationId": "migrationsCreateFirebaseMigration", + "summary": "Create BAA addon", + "operationId": "organizationsCreateBaaAddon", "tags": [ - "migrations" + "organizations" ], - "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": "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" } } } @@ -44046,21 +49746,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createFirebaseMigration", + "method": "createBaaAddon", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-firebase-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-firebase.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-baa-addon.md", "auth": { "Project": [] } @@ -44070,76 +49770,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", - "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" - ] - } - } + "parameters": [ + { + "name": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" } - } + ] } }, - "\/migrations\/firebase\/report": { - "get": { - "summary": "Get Firebase migration report", - "operationId": "migrationsGetFirebaseReport", + "\/organizations\/{organizationId}\/addons\/premium-geo-db": { + "post": { + "summary": "Create Premium Geo DB addon", + "operationId": "organizationsCreatePremiumGeoDBAddon", "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": "Create a Premium Geo DB addon for an organization.\n", "responses": { - "200": { - "description": "Migration Report", + "201": { + "description": "Addon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migrationReport" + "$ref": "#\/components\/schemas\/addon" } } } @@ -44147,21 +49806,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getFirebaseReport", + "method": "createPremiumGeoDBAddon", "group": null, "cookies": false, "type": "", - "demo": "migrations\/get-firebase-report.md", - "rate-limit": 0, + "demo": "organizations\/create-premium-geo-db-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-firebase-report.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/create-premium-geo-db-addon.md", "auth": { "Project": [] } @@ -44173,70 +49832,33 @@ ], "parameters": [ { - "name": "resources", - "description": "List of resources to migrate", - "required": true, - "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" - ] - } - }, - "in": "query" - }, - { - "name": "serviceAccount", - "description": "JSON of the Firebase service account credentials", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<SERVICE_ACCOUNT>" + "x-example": "<ORGANIZATION_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/migrations\/json\/exports": { - "post": { - "summary": "Export documents to JSON", - "operationId": "migrationsCreateJSONExport", + "\/organizations\/{organizationId}\/addons\/{addonId}": { + "get": { + "summary": "Get addon", + "operationId": "organizationsGetAddon", "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": "Get the details of 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" } } } @@ -44244,21 +49866,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createJSONExport", + "method": "getAddon", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-json-export.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-json-export.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-addon.md", "auth": { "Project": [] } @@ -44268,94 +49890,61 @@ "Project": [] } ], - "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" - ] - } - } + "parameters": [ + { + "name": "organizationId", + "description": "Organization 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" } - } - } - }, - "\/migrations\/json\/imports": { - "post": { - "summary": "Import documents from a JSON", - "operationId": "migrationsCreateJSONImport", + ] + }, + "delete": { + "summary": "Delete addon", + "operationId": "organizationsDeleteAddon", "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": "Delete a billing addon for an organization.\n", "responses": { - "202": { - "description": "Migration", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/migration" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "createJSONImport", + "method": "deleteAddon", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-json-import.md", - "rate-limit": 0, + "demo": "organizations\/delete-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-json-import.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/delete-addon.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } @@ -44365,77 +49954,45 @@ "Project": [] } ], - "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": "organizationId", + "description": "Organization 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" } - } + ] } }, - "\/migrations\/nhost": { + "\/organizations\/{organizationId}\/addons\/{addonId}\/confirmations": { "post": { - "summary": "Create NHost migration", - "operationId": "migrationsCreateNHostMigration", + "summary": "Confirm addon payment after 3DS authentication", + "operationId": "organizationsConfirmAddonPayment", "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": "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" } } } @@ -44443,21 +50000,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createNHostMigration", + "method": "confirmAddonPayment", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-n-host-migration.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\/migration-nhost.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/confirm-addon-payment.md", "auth": { "Project": [] } @@ -44467,116 +50024,45 @@ "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": "Organization 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" } - } + ] } }, - "\/migrations\/nhost\/report": { + "\/organizations\/{organizationId}\/addons\/{addon}\/price": { "get": { - "summary": "Get NHost migration report", - "operationId": "migrationsGetNHostReport", + "summary": "Get addon price", + "operationId": "organizationsGetAddonPrice", "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": "Get the price details for a billing addon for an organization.\n", "responses": { "200": { - "description": "Migration Report", + "description": "AddonPrice", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migrationReport" + "$ref": "#\/components\/schemas\/addonPrice" } } } @@ -44584,21 +50070,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getNHostReport", + "method": "getAddonPrice", "group": null, "cookies": false, "type": "", - "demo": "migrations\/get-n-host-report.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\/migration-nhost-report.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-addon-price.md", "auth": { "Project": [] } @@ -44610,134 +50096,56 @@ ], "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.", + "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": "addon", + "description": "Addon key identifier (e.g. baa).", "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": "baa", + "enum": [ + "baa", + "premiumgeodb", + "premiumgeodborg", + "backup_recovery" + ], + "x-enum-name": "Addon", + "x-enum-keys": [ + "baa", + "premiumgeodb", + "premiumgeodborg", + "backup_recovery" + ] }, - "in": "query" + "in": "path" } ] } }, - "\/migrations\/supabase": { - "post": { - "summary": "Create Supabase migration", - "operationId": "migrationsCreateSupabaseMigration", + "\/organizations\/{organizationId}\/aggregations": { + "get": { + "summary": "List aggregations", + "operationId": "organizationsListAggregations", "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": "Get a list of all aggregations for an organization.", "responses": { - "202": { - "description": "Migration", + "200": { + "description": "Aggregation team list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/aggregationTeamList" } } } @@ -44745,21 +50153,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createSupabaseMigration", + "method": "listAggregations", "group": null, "cookies": false, "type": "", - "demo": "migrations\/create-supabase-migration.md", + "demo": "organizations\/list-aggregations.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-supabase.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/list-aggregations.md", "auth": { "Project": [] } @@ -44769,111 +50177,48 @@ "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" + }, + { + "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" } - } + ] } }, - "\/migrations\/supabase\/report": { + "\/organizations\/{organizationId}\/aggregations\/{aggregationId}": { "get": { - "summary": "Get Supabase migration report", - "operationId": "migrationsGetSupabaseReport", + "summary": "Get aggregation", + "operationId": "organizationsGetAggregation", "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 a specific aggregation using it's aggregation ID.", "responses": { "200": { - "description": "Migration Report", + "description": "Team", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migrationReport" + "$ref": "#\/components\/schemas\/aggregationTeam" } } } @@ -44881,21 +50226,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getSupabaseReport", + "method": "getAggregation", "group": null, "cookies": false, "type": "", - "demo": "migrations\/get-supabase-report.md", + "demo": "organizations\/get-aggregation.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-supabase-report.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-aggregation.md", "auth": { "Project": [] } @@ -44907,125 +50252,66 @@ ], "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.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<DATABASE_HOST>" + "x-example": "<ORGANIZATION_ID>" }, - "in": "query" + "in": "path" }, { - "name": "username", - "description": "Source's Database Username.", + "name": "aggregationId", + "description": "Invoice unique ID", "required": true, "schema": { "type": "string", - "x-example": "<USERNAME>" + "x-example": "<AGGREGATION_ID>" }, - "in": "query" + "in": "path" }, { - "name": "password", - "description": "Source's Database Password.", - "required": true, + "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": "string", - "format": "password", - "x-example": "password" + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 5 }, "in": "query" }, { - "name": "port", - "description": "Source's Database Port.", + "name": "offset", + "description": "Offset value. The default value is 0. Use this param to manage pagination.", "required": false, "schema": { "type": "integer", "format": "int32", - "default": 5432 + "default": 0 }, "in": "query" } ] } }, - "\/migrations\/{migrationId}": { - "get": { - "summary": "Get migration", - "operationId": "migrationsGet", + "\/organizations\/{organizationId}\/billing-address": { + "patch": { + "summary": "Set team's billing address", + "operationId": "organizationsSetBillingAddress", "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": "Set a billing address for an organization.", "responses": { "200": { - "description": "Migration", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/migration" + "$ref": "#\/components\/schemas\/organization" } } } @@ -45033,21 +50319,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "get", + "method": "setBillingAddress", "group": null, "cookies": false, "type": "", - "demo": "migrations\/get.md", + "demo": "organizations\/set-billing-address.md", "rate-limit": 0, "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\/set-billing-address.md", "auth": { "Project": [] } @@ -45059,53 +50345,68 @@ ], "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" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "billingAddressId": { + "type": "string", + "description": "Unique ID of billing address", + "x-example": "<BILLING_ADDRESS_ID>" + } + }, + "required": [ + "billingAddressId" + ] + } + } + } + } }, - "patch": { - "summary": "Update retry migration", - "operationId": "migrationsRetry", + "delete": { + "summary": "Delete team's billing address", + "operationId": "organizationsDeleteBillingAddress", "tags": [ - "migrations" + "organizations" ], - "description": "Retry a failed migration. This endpoint allows you to retry a migration that has previously failed.", + "description": "Delete a team's billing address.", "responses": { - "202": { - "description": "Migration", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/migration" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "retry", + "method": "deleteBillingAddress", "group": null, "cookies": false, "type": "", - "demo": "migrations\/retry.md", + "demo": "organizations\/delete-billing-address.md", "rate-limit": 0, "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\/delete-billing-address.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } @@ -45117,46 +50418,55 @@ ], "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" } ] - }, - "delete": { - "summary": "Delete migration", - "operationId": "migrationsDelete", + } + }, + "\/organizations\/{organizationId}\/billing-addresses\/{billingAddressId}": { + "get": { + "summary": "Get billing address", + "operationId": "organizationsGetBillingAddress", "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 a billing address using it's ID.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Address", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/billingAddress" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", + "method": "getBillingAddress", "group": null, "cookies": false, "type": "", - "demo": "migrations\/delete.md", + "demo": "organizations\/get-billing-address.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-billing-address.md", "auth": { "Project": [] } @@ -45168,33 +50478,43 @@ ], "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": "billingAddressId", + "description": "Unique ID of billing address", + "required": true, + "schema": { + "type": "string", + "x-example": "<BILLING_ADDRESS_ID>" }, "in": "path" } ] } }, - "\/oauth2\/{project_id}\/approve": { - "post": { - "summary": "Approve OAuth2", - "operationId": "oauth2Approve", + "\/organizations\/{organizationId}\/billing-email": { + "patch": { + "summary": "Set team's billing email", + "operationId": "organizationsSetBillingEmail", "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": "Set the current billing email for the organization.", "responses": { "200": { - "description": "OAuth2 Approve", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Approve" + "$ref": "#\/components\/schemas\/organization" } } } @@ -45202,41 +50522,38 @@ }, "deprecated": false, "x-appwrite": { - "method": "approve", + "method": "setBillingEmail", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/approve.md", + "demo": "organizations\/set-billing-email.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\/set-billing-email.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" } @@ -45247,20 +50564,15 @@ "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": { + "billingEmail": { "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>" + "description": "Billing email for the organization.", + "x-example": "email@example.com", + "format": "email" } }, "required": [ - "grant_id" + "billingEmail" ] } } @@ -45268,21 +50580,21 @@ } } }, - "\/oauth2\/{project_id}\/authorize": { - "get": { - "summary": "OAuth2 Authorize", - "operationId": "oauth2Authorize", + "\/organizations\/{organizationId}\/budget": { + "patch": { + "summary": "Update organization budget", + "operationId": "organizationsUpdateBudget", "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": "Update the budget limit for an organization.", "responses": { "200": { - "description": "OAuth2 Authorize", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Authorize" + "$ref": "#\/components\/schemas\/organization" } } } @@ -45290,190 +50602,91 @@ }, "deprecated": false, "x-appwrite": { - "method": "authorize", + "method": "updateBudget", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/authorize.md", + "demo": "organizations\/update-budget.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\/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" - }, - { - "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`.", - "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": "" - }, - "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" } - ] + ], + "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" + ] + } + } + } + } } }, - "\/oauth2\/{project_id}\/device_authorization": { - "post": { - "summary": "OAuth2 Device Authorization", - "operationId": "oauth2CreateDeviceAuthorization", + "\/organizations\/{organizationId}\/credits": { + "get": { + "summary": "List credits", + "operationId": "organizationsListCredits", "tags": [ - "oauth2" + "organizations" ], - "description": "Start the OAuth2 Device Authorization Grant. Returns the device code, user code, verification URL, expiration, and polling interval.", + "description": "List all credits for an organization.\n", "responses": { "200": { - "description": "OAuth2 Device Authorization", + "description": "CreditList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2DeviceAuthorization" + "$ref": "#\/components\/schemas\/creditList" } } } @@ -45481,98 +50694,70 @@ }, "deprecated": false, "x-appwrite": { - "method": "createDeviceAuthorization", + "method": "listCredits", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/create-device-authorization.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": "<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, couponId, credits, expiration, status", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" } - ], - "requestBody": { - "content": { - "application\/json": { - "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": { - "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 - } - } - } - } - } - } - } - }, - "\/oauth2\/{project_id}\/grants": { + ] + }, "post": { - "summary": "Create OAuth2 Grant", - "operationId": "oauth2CreateGrant", + "summary": "Add credits from coupon", + "operationId": "organizationsAddCredit", "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": "Add credit to an organization using a coupon.", "responses": { "201": { - "description": "OAuth2 Grant", + "description": "Credit", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Grant" + "$ref": "#\/components\/schemas\/credit" } } } @@ -45580,41 +50765,38 @@ }, "deprecated": false, "x-appwrite": { - "method": "createGrant", + "method": "addCredit", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/create-grant.md", + "demo": "organizations\/add-credit.md", "rate-limit": 10, - "rate-time": 60, - "rate-key": "ip:{ip},userId:{userId}", - "scope": "oauth2.write", + "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\/add-credit.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" } @@ -45625,14 +50807,14 @@ "schema": { "type": "object", "properties": { - "user_code": { + "couponId": { "type": "string", - "description": "User code displayed on the device.", - "x-example": "<USER_CODE>" + "description": "ID of the coupon", + "x-example": "<COUPON_ID>" } }, "required": [ - "user_code" + "couponId" ] } } @@ -45640,21 +50822,21 @@ } } }, - "\/oauth2\/{project_id}\/grants\/{grant_id}": { + "\/organizations\/{organizationId}\/credits\/available": { "get": { - "summary": "Get OAuth2 Grant", - "operationId": "oauth2GetGrant", + "summary": "Get available credits", + "operationId": "organizationsGetAvailableCredits", "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 total available valid credits for an organization.", "responses": { "200": { - "description": "OAuth2 Grant", + "description": "CreditAvailable", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Grant" + "$ref": "#\/components\/schemas\/creditAvailable" } } } @@ -45662,197 +50844,129 @@ }, "deprecated": false, "x-appwrite": { - "method": "getGrant", + "method": "getAvailableCredits", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/get-grant.md", + "demo": "organizations\/get-available-credits.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-available-credits.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.", - "required": true, - "schema": { - "type": "string", - "x-example": "<PROJECT_ID>" - }, - "in": "path" - }, - { - "name": "grant_id", - "description": "Grant ID made during authorization, provided to consent screen in URL search params.", + "name": "organizationId", + "description": "Organization ID", "required": true, "schema": { "type": "string", - "x-example": "<GRANT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } ] } }, - "\/oauth2\/{project_id}\/logout": { + "\/organizations\/{organizationId}\/credits\/{creditId}": { "get": { - "summary": "OAuth2 Logout", - "operationId": "oauth2Logout", + "summary": "Get credit details", + "operationId": "organizationsGetCredit", "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": "Get credit details.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Credit", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/credit" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "logout", + "method": "getCredit", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/logout.md", + "demo": "organizations\/get-credit.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "billing.read", "platforms": [ - "console", - "client" + "console" ], "packaging": false, "public": true, - "produces": [ - "application\/json" - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-credit.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, + "name": "creditId", + "description": "Credit Unique ID", + "required": true, "schema": { "type": "string", - "x-example": "<UI_LOCALES>", - "default": "" + "x-example": "<CREDIT_ID>" }, - "in": "query" + "in": "path" } ] } }, - "\/oauth2\/{project_id}\/reject": { - "post": { - "summary": "Reject OAuth2", - "operationId": "oauth2Reject", + "\/organizations\/{organizationId}\/estimations\/delete-organization": { + "patch": { + "summary": "Estimate delete team", + "operationId": "organizationsEstimationDeleteOrganization", "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": "Get estimation for deleting an organization.", "responses": { "200": { - "description": "OAuth2 Reject", + "description": "DeleteOrganization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Reject" + "$ref": "#\/components\/schemas\/estimationDeleteOrganization" } } } @@ -45860,82 +50974,59 @@ }, "deprecated": false, "x-appwrite": { - "method": "reject", + "method": "estimationDeleteOrganization", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/reject.md", - "rate-limit": 0, + "demo": "organizations\/estimation-delete-organization.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": "organizations.write", "platforms": [ - "console", - "client", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/estimation-delete-organization.md", "auth": { - "ProjectPath": [] + "Project": [] } }, "security": [ { - "ProjectPath": [], - "Session": [], - "JWT": [] + "Project": [] } ], "parameters": [ { - "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "name": "organizationId", + "description": "Team 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_id": { - "type": "string", - "description": "Grant ID made during authorization, provided to consent screen in URL search params.", - "x-example": "<GRANT_ID>" - } - }, - "required": [ - "grant_id" - ] - } - } - } - } + ] } }, - "\/oauth2\/{project_id}\/revoke": { - "post": { - "summary": "OAuth2 Revoke", - "operationId": "oauth2Revoke", + "\/organizations\/{organizationId}\/estimations\/update-plan": { + "patch": { + "summary": "Estimate for update plan", + "operationId": "organizationsEstimationUpdatePlan", "tags": [ - "oauth2" + "organizations" ], - "description": "Revoke an OAuth2 access token or refresh token.", + "description": "Get estimation for updating the organization plan.", "responses": { "200": { - "description": "File", + "description": "UpdatePlan", "content": { "application\/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#\/components\/schemas\/estimationUpdatePlan" } } } @@ -45943,42 +51034,38 @@ }, "deprecated": false, "x-appwrite": { - "method": "revoke", + "method": "estimationUpdatePlan", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/revoke.md", - "rate-limit": 0, + "demo": "organizations\/estimation-update-plan.md", + "rate-limit": 10, "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\/estimation-update-plan.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" } @@ -45989,32 +51076,29 @@ "schema": { "type": "object", "properties": { - "token": { - "type": "string", - "description": "The access or refresh token to revoke.", - "x-example": "<TOKEN>" - }, - "token_type_hint": { + "billingPlan": { "type": "string", - "description": "Type of token to revoke (access_token or refresh_token).", - "default": "", - "x-example": "access_token" + "description": "Organization billing plan chosen", + "x-example": "tier-0" }, - "client_id": { - "type": "string", - "description": "OAuth2 client ID.", - "default": "", - "x-example": "<CLIENT_ID>" + "invites": { + "type": "array", + "description": "Additional member invites", + "default": [], + "x-example": null, + "items": { + "type": "string" + } }, - "client_secret": { + "couponId": { "type": "string", - "description": "OAuth2 client secret. Required for confidential apps; omitted for public apps.", - "default": "", - "x-example": "<CLIENT_SECRET>" + "description": "Coupon id", + "x-example": "<COUPON_ID>", + "x-nullable": true } }, "required": [ - "token" + "billingPlan" ] } } @@ -46022,21 +51106,21 @@ } } }, - "\/oauth2\/{project_id}\/token": { + "\/organizations\/{organizationId}\/feedbacks\/downgrade": { "post": { - "summary": "OAuth2 Token", - "operationId": "oauth2CreateToken", + "summary": "Create downgrade feedback", + "operationId": "organizationsCreateDowngradeFeedback", "tags": [ - "oauth2" + "organizations" ], - "description": "Exchange an OAuth2 authorization code, refresh token, or device code for access and refresh tokens.", + "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": "OAuth2 Token", + "201": { + "description": "Downgrade Feedback", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Token" + "$ref": "#\/components\/schemas\/downgradeFeedback" } } } @@ -46044,42 +51128,38 @@ }, "deprecated": false, "x-appwrite": { - "method": "createToken", + "method": "createDowngradeFeedback", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/create-token.md", + "demo": "organizations\/create-downgrade-feedback.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\/create-downgrade-feedback.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 Unique ID", "required": true, "schema": { "type": "string", - "x-example": "<PROJECT_ID>" + "x-example": "<ORGANIZATION_ID>" }, "in": "path" } @@ -46090,63 +51170,32 @@ "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>" + "reason": { + "type": "string", + "description": "Feedback reason", + "x-example": "<REASON>" }, - "code_verifier": { + "message": { "type": "string", - "description": "PKCE code verifier. Required for public apps.", - "default": "", - "x-example": "<CODE_VERIFIER>" + "description": "Feedback message", + "x-example": "<MESSAGE>" }, - "redirect_uri": { + "fromPlanId": { "type": "string", - "description": "Redirect URI. Required for `authorization_code` grant type.", - "default": "", - "x-example": "https:\/\/example.com", - "format": "url" + "description": "Plan downgrading from", + "x-example": "<FROM_PLAN_ID>" }, - "resource": { + "toPlanId": { "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": "Plan downgrading to", + "x-example": "<TO_PLAN_ID>" } }, "required": [ - "grant_type" + "reason", + "message", + "fromPlanId", + "toPlanId" ] } } @@ -46154,21 +51203,21 @@ } } }, - "\/organization\/keys": { + "\/organizations\/{organizationId}\/invoices": { "get": { - "summary": "List organization keys", - "operationId": "organizationListKeys", + "summary": "List invoices", + "operationId": "organizationsListInvoices", "tags": [ - "organization" + "organizations" ], - "description": "Get a list of all API keys from the current organization.", + "description": "List all invoices for an organization.", "responses": { "200": { - "description": "API Keys List", + "description": "Billing invoices list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/keyList" + "$ref": "#\/components\/schemas\/invoiceList" } } } @@ -46176,35 +51225,44 @@ }, "deprecated": false, "x-appwrite": { - "method": "listKeys", - "group": "keys", + "method": "listInvoices", + "group": null, "cookies": false, "type": "", - "demo": "organization\/list-keys.md", + "demo": "organizations\/list-invoices.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\/list-invoices.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": "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", + "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", @@ -46214,34 +51272,25 @@ "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 organization key", - "operationId": "organizationCreateKey", + } + }, + "\/organizations\/{organizationId}\/invoices\/{invoiceId}": { + "get": { + "summary": "Get invoice", + "operationId": "organizationsGetInvoice", "tags": [ - "organization" + "organizations" ], - "description": "Create a new organization API key.", + "description": "Get an invoice by its unique ID.", "responses": { - "201": { - "description": "Key", + "200": { + "description": "Invoice", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/key" + "$ref": "#\/components\/schemas\/invoice" } } } @@ -46249,117 +51298,69 @@ }, "deprecated": false, "x-appwrite": { - "method": "createKey", - "group": "keys", + "method": "getInvoice", + "group": null, "cookies": false, "type": "", - "demo": "organization\/create-key.md", + "demo": "organizations\/get-invoice.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\/get-invoice.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": "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" } - } + ] } }, - "\/organization\/keys\/{keyId}": { + "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/download": { "get": { - "summary": "Get organization key", - "operationId": "organizationGetKey", + "summary": "Download invoice in PDF", + "operationId": "organizationsGetInvoiceDownload", "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": "Download invoice in PDF", "responses": { "200": { - "description": "Key", + "description": "paymentMethod", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/key" + "$ref": "#\/components\/schemas\/paymentMethod" } } } @@ -46367,58 +51368,71 @@ }, "deprecated": false, "x-appwrite": { - "method": "getKey", - "group": "keys", + "method": "getInvoiceDownload", + "group": null, "cookies": false, - "type": "", - "demo": "organization\/get-key.md", + "type": "location", + "demo": "organizations\/get-invoice-download.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-invoice-download.md", "auth": { - "Project": [] + "Project": [], + "ImpersonateUserId": [] } }, "security": [ { "Project": [], - "Key": [] + "ImpersonateUserId": [] } ], "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": "invoiceId", + "description": "Invoice unique ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<INVOICE_ID>" }, "in": "path" } ] - }, - "put": { - "summary": "Update organization key", - "operationId": "organizationUpdateKey", + } + }, + "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/payments": { + "post": { + "summary": "Initiate payment for failed invoice to pay live from console", + "operationId": "organizationsCreateInvoicePayment", "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": "Initiate payment for failed invoice to pay live from console", "responses": { "200": { - "description": "Key", + "description": "Invoice", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/key" + "$ref": "#\/components\/schemas\/invoice" } } } @@ -46426,39 +51440,48 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateKey", - "group": "keys", + "method": "createInvoicePayment", + "group": null, "cookies": false, "type": "", - "demo": "organization\/update-key.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": "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-invoice-payment.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": "invoiceId", + "description": "Invoice unique ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<INVOICE_ID>" }, "in": "path" } @@ -46469,129 +51492,106 @@ "schema": { "type": "object", "properties": { - "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": { + "paymentMethodId": { "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": "Payment method ID", + "x-example": "<PAYMENT_METHOD_ID>" } }, "required": [ - "name", - "scopes" + "paymentMethodId" ] } } } } - }, - "delete": { - "summary": "Delete organization key", - "operationId": "organizationDeleteKey", + } + }, + "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/status": { + "patch": { + "summary": "Validate the payment for an invoice and update status", + "operationId": "organizationsValidateInvoice", "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": "Validates the payment linked with the invoice and updates the invoice status if the payment status is changed.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Invoice", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/invoice" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteKey", - "group": "keys", + "method": "validateInvoice", + "group": null, "cookies": false, "type": "", - "demo": "organization\/delete-key.md", + "demo": "organizations\/validate-invoice.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\/update-invoice-status.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": "invoiceId", + "description": "Invoice unique ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<INVOICE_ID>" }, "in": "path" } ] } }, - "\/organization\/projects": { + "\/organizations\/{organizationId}\/invoices\/{invoiceId}\/view": { "get": { - "summary": "List organization projects", - "operationId": "organizationListProjects", + "summary": "View invoice in PDF", + "operationId": "organizationsGetInvoiceView", "tags": [ - "organization" + "organizations" ], - "description": "Get a list of all projects. You can use the query params to filter your results.", + "description": "View invoice in PDF", "responses": { "200": { - "description": "Projects List", + "description": "paymentMethod", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/projectList" + "$ref": "#\/components\/schemas\/paymentMethod" } } } @@ -46599,83 +51599,71 @@ }, "deprecated": false, "x-appwrite": { - "method": "listProjects", - "group": "projects", + "method": "getInvoiceView", + "group": null, "cookies": false, - "type": "", - "demo": "organization\/list-projects.md", + "type": "location", + "demo": "organizations\/get-invoice-view.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-view.md", "auth": { - "Project": [] + "Project": [], + "ImpersonateUserId": [] } }, "security": [ { "Project": [], - "Key": [] + "ImpersonateUserId": [] } ], "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, - "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" }, { - "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" } ] - }, - "post": { - "summary": "Create organization project", - "operationId": "organizationCreateProject", + } + }, + "\/organizations\/{organizationId}\/payment-method": { + "patch": { + "summary": "Set team's payment method", + "operationId": "organizationsSetDefaultPaymentMethod", "tags": [ - "organization" + "organizations" ], - "description": "Create a new project.", + "description": "Set a organization's default payment method.", "responses": { - "201": { - "description": "Project", + "200": { + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/project" + "$ref": "#\/components\/schemas\/organization" } } } @@ -46683,29 +51671,40 @@ }, "deprecated": false, "x-appwrite": { - "method": "createProject", - "group": "projects", + "method": "setDefaultPaymentMethod", + "group": null, "cookies": false, "type": "", - "demo": "organization\/create-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": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" } ], "requestBody": { @@ -46714,64 +51713,34 @@ "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": "Unique ID of payment method", + "x-example": "<PAYMENT_METHOD_ID>" } }, "required": [ - "projectId", - "name" + "paymentMethodId" ] } } } } - } - }, - "\/organization\/projects\/{projectId}": { - "get": { - "summary": "Get organization project", - "operationId": "organizationGetProject", + }, + "delete": { + "summary": "Delete team's default payment method", + "operationId": "organizationsDeleteDefaultPaymentMethod", "tags": [ - "organization" + "organizations" ], - "description": "Get a project.", + "description": "Delete the default payment method for an organization.", "responses": { "200": { - "description": "Project", + "description": "Organization", "content": { - "": { + "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/project" + "$ref": "#\/components\/schemas\/organization" } } } @@ -46779,58 +51748,59 @@ }, "deprecated": false, "x-appwrite": { - "method": "getProject", - "group": "projects", + "method": "deleteDefaultPaymentMethod", + "group": null, "cookies": false, "type": "", - "demo": "organization\/get-project.md", + "demo": "organizations\/delete-default-payment-method.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\/delete-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\/{organizationId}\/payment-method\/backup": { "patch": { - "summary": "Update organization project", - "operationId": "organizationUpdateProject", + "summary": "Set team's backup payment method", + "operationId": "organizationsSetBackupPaymentMethod", "tags": [ - "organization" + "organizations" ], - "description": "Update a project by its unique ID.", + "description": "Set an organization's backup payment method.\n", "responses": { "200": { - "description": "Project", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/project" + "$ref": "#\/components\/schemas\/organization" } } } @@ -46838,39 +51808,38 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateProject", - "group": "projects", + "method": "setBackupPaymentMethod", + "group": null, "cookies": false, "type": "", - "demo": "organization\/update-project.md", + "demo": "organizations\/set-backup-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-backup-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" } @@ -46881,14 +51850,14 @@ "schema": { "type": "object", "properties": { - "name": { + "paymentMethodId": { "type": "string", - "description": "Project name. Max length: 128 chars.", - "x-example": "<NAME>" + "description": "Unique ID of payment method", + "x-example": "<PAYMENT_METHOD_ID>" } }, "required": [ - "name" + "paymentMethodId" ] } } @@ -46896,73 +51865,79 @@ } }, "delete": { - "summary": "Delete organization project", - "operationId": "organizationDeleteProject", + "summary": "Delete team's backup payment method", + "operationId": "organizationsDeleteBackupPaymentMethod", "tags": [ - "organization" + "organizations" ], - "description": "Delete a project by its unique ID.", + "description": "Delete a backup payment method for an organization.", "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": "deleteBackupPaymentMethod", + "group": null, "cookies": false, "type": "", - "demo": "organization\/delete-project.md", + "demo": "organizations\/delete-backup-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\/delete-backup-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": { + "\/organizations\/{organizationId}\/payment-methods\/{paymentMethodId}": { "get": { - "summary": "List Orgnizations", - "operationId": "organizationsList", + "summary": "Get payment method", + "operationId": "organizationsGetPaymentMethod", "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": "Get an organization's payment method using it's payment method ID.", "responses": { "200": { - "description": "Organizations list", + "description": "paymentMethod", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organizationList" + "$ref": "#\/components\/schemas\/paymentMethod" } } } @@ -46970,21 +51945,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "list", + "method": "getPaymentMethod", "group": null, "cookies": false, "type": "", - "demo": "organizations\/list.md", + "demo": "organizations\/get-payment-method.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "teams.read", + "scope": "billing.read", "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\/get-payment-method.md", "auth": { "Project": [] } @@ -46996,52 +51971,101 @@ ], "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, + "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": "paymentMethodId", + "description": "Unique ID of payment method", + "required": true, "schema": { "type": "string", - "x-example": "<SEARCH>", - "default": "" + "x-example": "<PAYMENT_METHOD_ID>" }, - "in": "query" + "in": "path" + } + ] + } + }, + "\/organizations\/{organizationId}\/plan": { + "get": { + "summary": "Get organization billing plan details", + "operationId": "organizationsGetPlan", + "tags": [ + "organizations" + ], + "description": "Get the details of the current billing plan for an organization.", + "responses": { + "200": { + "description": "billingPlan", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/billingPlan" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getPlan", + "group": null, + "cookies": false, + "type": "", + "demo": "organizations\/get-plan.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\/organizations\/get-plan.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "organizationId", + "description": "Organization Unique ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" } ] }, - "post": { - "summary": "Create Organization", - "operationId": "organizationsCreate", + "patch": { + "summary": "Update organization billing plan", + "operationId": "organizationsUpdatePlan", "tags": [ "organizations" ], - "description": "Create a new organization.\n", + "description": "Update the billing plan for an organization.", "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 +52073,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "create", + "method": "updatePlan", "group": null, "cookies": false, "type": "", - "demo": "organizations\/create.md", + "demo": "organizations\/update-plan.md", "rate-limit": 10, "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\/update-plan.md", "auth": { "Project": [] } @@ -47073,25 +52097,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": { - "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", @@ -47107,8 +52130,7 @@ "type": "string", "description": "Unique ID of billing address", "default": "", - "x-example": "<BILLING_ADDRESS_ID>", - "x-nullable": true + "x-example": "<BILLING_ADDRESS_ID>" }, "invites": { "type": "array", @@ -47137,26 +52159,9 @@ "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" - ] } }, "required": [ - "organizationId", - "name", "billingPlan" ] } @@ -47165,21 +52170,21 @@ } } }, - "\/organizations\/estimations\/create-organization": { + "\/organizations\/{organizationId}\/plan\/cancel": { "patch": { - "summary": "Estimate create Organization", - "operationId": "organizationsEstimationCreateOrganization", + "summary": "Cancel organization plan change", + "operationId": "organizationsCancelDowngrade", "tags": [ "organizations" ], - "description": "Get estimation for creating an organization.", + "description": "Cancel the downgrade initiated for an organization.", "responses": { "200": { - "description": "Estimation", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/estimation" + "$ref": "#\/components\/schemas\/organization" } } } @@ -47187,21 +52192,81 @@ }, "deprecated": false, "x-appwrite": { - "method": "estimationCreateOrganization", + "method": "cancelDowngrade", "group": null, "cookies": false, "type": "", - "demo": "organizations\/estimation-create-organization.md", + "demo": "organizations\/cancel-downgrade.md", + "rate-limit": 0, + "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\/cancel-downgrade.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "organizationId", + "description": "Organization Unique ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + } + ] + } + }, + "\/organizations\/{organizationId}\/plan\/estimations": { + "post": { + "summary": "Create billing plan estimation (upgrade or downgrade)", + "operationId": "organizationsCreatePlanEstimation", + "tags": [ + "organizations" + ], + "description": "Create a billing plan estimation for upgrading or downgrading an organization plan.\n", + "responses": { + "200": { + "description": "EstimationPlanChange", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/estimationPlanChange" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createPlanEstimation", + "group": null, + "cookies": false, + "type": "", + "demo": "organizations\/create-plan-estimation.md", "rate-limit": 10, "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\/create-plan-estimation.md", "auth": { "Project": [] } @@ -47211,6 +52276,18 @@ "Project": [] } ], + "parameters": [ + { + "name": "organizationId", + "description": "Organization ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ORGANIZATION_ID>" + }, + "in": "path" + } + ], "requestBody": { "content": { "application\/json": { @@ -47219,15 +52296,9 @@ "properties": { "billingPlan": { "type": "string", - "description": "Organization billing plan chosen", + "description": "Target billing plan", "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", @@ -47242,21 +52313,6 @@ "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": [ @@ -47268,39 +52324,43 @@ } } }, - "\/organizations\/{organizationId}": { - "delete": { - "summary": "Delete team", - "operationId": "organizationsDelete", + "\/organizations\/{organizationId}\/regions": { + "get": { + "summary": "List Regions", + "operationId": "organizationsListRegions", "tags": [ "organizations" ], - "description": "Delete an organization.", + "description": "Get all available regions for an organization.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Regions list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/consoleRegionList" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "delete", + "method": "listRegions", "group": null, "cookies": false, "type": "", - "demo": "organizations\/delete.md", + "demo": "organizations\/list-regions.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "organizations.write", + "scope": "projects.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\/list-regions.md", "auth": { "Project": [] } @@ -47324,21 +52384,21 @@ ] } }, - "\/organizations\/{organizationId}\/addons": { + "\/organizations\/{organizationId}\/roles": { "get": { - "summary": "List addons", - "operationId": "organizationsListAddons", + "summary": "Get Scopes", + "operationId": "organizationsGetScopes", "tags": [ "organizations" ], - "description": "List all billing addons for an organization.\n", + "description": "Get Scopes", "responses": { "200": { - "description": "Addons list", + "description": "Roles", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addonList" + "$ref": "#\/components\/schemas\/roles" } } } @@ -47346,21 +52406,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "listAddons", + "method": "getScopes", "group": null, "cookies": false, "type": "", - "demo": "organizations\/list-addons.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\/list-addons.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-scopes.md", "auth": { "Project": [] } @@ -47373,32 +52433,43 @@ "parameters": [ { "name": "organizationId", - "description": "Organization ID", + "description": "Organization id", "required": true, "schema": { "type": "string", "x-example": "<ORGANIZATION_ID>" }, "in": "path" + }, + { + "name": "projectId", + "description": "Project id", + "required": false, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>", + "default": "" + }, + "in": "query" } ] } }, - "\/organizations\/{organizationId}\/addons\/baa": { - "post": { - "summary": "Create BAA addon", - "operationId": "organizationsCreateBaaAddon", + "\/organizations\/{organizationId}\/taxId": { + "patch": { + "summary": "Set team's tax Id", + "operationId": "organizationsSetBillingTaxId", "tags": [ "organizations" ], - "description": "Create the BAA billing addon for an organization.\n", + "description": "Set an organization's billing tax ID.", "responses": { - "201": { - "description": "Addon", + "200": { + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addon" + "$ref": "#\/components\/schemas\/organization" } } } @@ -47406,12 +52477,12 @@ }, "deprecated": false, "x-appwrite": { - "method": "createBaaAddon", + "method": "setBillingTaxId", "group": null, "cookies": false, "type": "", - "demo": "organizations\/create-baa-addon.md", - "rate-limit": 10, + "demo": "organizations\/set-billing-tax-id.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", "scope": "billing.write", @@ -47420,7 +52491,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\/set-billing-tax-id.md", "auth": { "Project": [] } @@ -47441,24 +52512,44 @@ }, "in": "path" } - ] + ], + "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}\/addons\/{addonId}": { + "\/organizations\/{organizationId}\/usage": { "get": { - "summary": "Get addon", - "operationId": "organizationsGetAddon", + "summary": "Get team's usage data", + "operationId": "organizationsGetUsage", "tags": [ "organizations" ], - "description": "Get the details of a billing addon for an organization.\n", + "description": "Get the usage data for an organization.", "responses": { "200": { - "description": "Addon", + "description": "Organization", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addon" + "$ref": "#\/components\/schemas\/usageOrganization" } } } @@ -47466,21 +52557,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAddon", + "method": "getUsage", "group": null, "cookies": false, "type": "", - "demo": "organizations\/get-addon.md", + "demo": "organizations\/get-usage.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.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/get-usage.md", "auth": { "Project": [] } @@ -47502,49 +52593,67 @@ "in": "path" }, { - "name": "addonId", - "description": "Addon ID", - "required": true, + "name": "startDate", + "description": "Starting date for the usage", + "required": false, "schema": { "type": "string", - "x-example": "<ADDON_ID>" + "format": "datetime", + "x-example": "2020-10-15T06:38:00.000+00:00" }, - "in": "path" + "in": "query" + }, + { + "name": "endDate", + "description": "End date for the usage", + "required": false, + "schema": { + "type": "string", + "format": "datetime", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "in": "query" } ] - }, - "delete": { - "summary": "Delete addon", - "operationId": "organizationsDeleteAddon", + } + }, + "\/organizations\/{organizationId}\/validate": { + "patch": { + "summary": "Validate payment for the organization after creation or upgrade", + "operationId": "organizationsValidatePayment", "tags": [ "organizations" ], - "description": "Delete a billing addon for an organization.\n", + "description": "Validate payment for team after creation or upgrade.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Organization", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/organization" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteAddon", + "method": "validatePayment", "group": null, "cookies": false, "type": "", - "demo": "organizations\/delete-addon.md", - "rate-limit": 10, + "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\/delete-addon.md", - "produces": [ - "application\/json" - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/validate-payment.md", "auth": { "Project": [] } @@ -47564,35 +52673,45 @@ "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": { + "invites": { + "type": "array", + "description": "Additional member invites", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + } + } + } + } + } + } } }, - "\/organizations\/{organizationId}\/addons\/{addonId}\/confirmations": { - "post": { - "summary": "Confirm addon payment after 3DS authentication", - "operationId": "organizationsConfirmAddonPayment", + "\/ping": { + "get": { + "summary": "Test the connection between the Appwrite and the SDK.", + "operationId": "pingGet", "tags": [ - "organizations" + "ping" ], - "description": "Confirm payment for a billing addon for an organization.\n", + "description": "Send a ping to project as part of onboarding.", "responses": { "200": { - "description": "Addon", + "description": "Any", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addon" + "$ref": "#\/components\/schemas\/any" } } } @@ -47600,69 +52719,51 @@ }, "deprecated": false, "x-appwrite": { - "method": "confirmAddonPayment", + "method": "get", "group": null, "cookies": false, "type": "", - "demo": "organizations\/confirm-addon-payment.md", - "rate-limit": 10, + "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\/confirm-addon-payment.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "organizationId", - "description": "Organization 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" + "Project": [], + "Key": [], + "JWT": [], + "Session": [] } ] } }, - "\/organizations\/{organizationId}\/addons\/{addon}\/price": { + "\/postgresql": { "get": { - "summary": "Get addon price", - "operationId": "organizationsGetAddonPrice", + "summary": "List dedicated databases.", + "operationId": "postgresqlList", "tags": [ - "organizations" + "postgresql" ], - "description": "Get the price details for a billing addon for an organization.\n", + "description": "List all dedicated databases. Results support pagination.", "responses": { "200": { - "description": "AddonPrice", + "description": "Dedicated databases list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/addonPrice" + "$ref": "#\/components\/schemas\/dedicatedDatabaseList" } } } @@ -47670,21 +52771,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAddonPrice", - "group": null, + "method": "list", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-addon-price.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-addon-price.md", "auth": { "Project": [] } @@ -47696,52 +52796,34 @@ ], "parameters": [ { - "name": "organizationId", - "description": "Organization ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "in": "path" - }, - { - "name": "addon", - "description": "Addon key identifier (e.g. baa).", - "required": true, + "name": "queries", + "description": "Array of query strings.", + "required": false, "schema": { - "type": "string", - "x-example": "baa", - "enum": [ - "baa", - "backup_recovery" - ], - "x-enum-name": "Addon", - "x-enum-keys": [ - "baa", - "backup_recovery" - ] + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, - "in": "path" + "in": "query" } ] - } - }, - "\/organizations\/{organizationId}\/aggregations": { - "get": { - "summary": "List aggregations", - "operationId": "organizationsListAggregations", + }, + "post": { + "summary": "Create a dedicated database.", + "operationId": "postgresqlCreate", "tags": [ - "organizations" + "postgresql" ], - "description": "Get a list of all aggregations for an 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": "Aggregation team list", + "201": { + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/aggregationTeamList" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -47749,21 +52831,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "listAggregations", - "group": null, + "method": "create", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/list-aggregations.md", + "demo": "postgresql\/create.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\/list-aggregations.md", "auth": { "Project": [] } @@ -47773,48 +52854,138 @@ "Project": [] } ], - "parameters": [ - { - "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, aggregationId, from, to", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "in": "query" + "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>" + }, + "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. Drives the allocated CPU, memory, storage, storage class, and connection ceiling.", + "default": "s-1vcpu-1gb", + "x-example": "<SPECIFICATION>" + }, + "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" + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true + }, + "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" + }, + "pitr": { + "type": "boolean", + "description": "Enable point-in-time recovery (PITR). Continuously archives changes so the database can be restored to any moment within the retention window.", + "default": true, + "x-example": false + }, + "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" + }, + "api": { + "type": "string", + "description": "Product API that owns this database: nativedb (raw, direct-access), tablesdb, documentsdb, or vectorsdb. tablesdb\/documentsdb\/vectorsdb databases are reached only through their product APIs.", + "default": "nativedb", + "x-example": "nativedb" + } + }, + "required": [ + "databaseId", + "name" + ] + } + } } - ] + } } }, - "\/organizations\/{organizationId}\/aggregations\/{aggregationId}": { + "\/postgresql\/specifications": { "get": { - "summary": "Get aggregation", - "operationId": "organizationsGetAggregation", + "summary": "List dedicated database specifications.", + "operationId": "postgresqlListSpecifications", "tags": [ - "organizations" + "postgresql" ], - "description": "Get a specific aggregation using it's aggregation 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": "Team", + "description": "SpecificationList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/aggregationTeam" + "$ref": "#\/components\/schemas\/dedicatedDatabaseSpecificationList" } } } @@ -47822,92 +52993,46 @@ }, "deprecated": false, "x-appwrite": { - "method": "getAggregation", - "group": null, + "method": "listSpecifications", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-aggregation.md", + "demo": "postgresql\/list-specifications.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-aggregation.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] - } - ], - "parameters": [ - { - "name": "organizationId", - "description": "Organization ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "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.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "x-example": 0, - "default": 5 - }, - "in": "query" - }, - { - "name": "offset", - "description": "Offset value. The default value is 0. Use this param to manage pagination.", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - }, - "in": "query" + "Project": [] } ] } }, - "\/organizations\/{organizationId}\/billing-address": { - "patch": { - "summary": "Set team's billing address", - "operationId": "organizationsSetBillingAddress", + "\/postgresql\/{databaseId}": { + "get": { + "summary": "Get dedicated database.", + "operationId": "postgresqlGet", "tags": [ - "organizations" + "postgresql" ], - "description": "Set a billing address for an organization.", + "description": "Get a dedicated database by its unique ID. Returns the database configuration and current status.", "responses": { "200": { - "description": "Organization", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -47915,21 +53040,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "setBillingAddress", - "group": null, + "method": "get", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/set-billing-address.md", + "demo": "postgresql\/get.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\/set-billing-address.md", "auth": { "Project": [] } @@ -47941,68 +53065,52 @@ ], "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": { - "billingAddressId": { - "type": "string", - "description": "Unique ID of billing address", - "x-example": "<BILLING_ADDRESS_ID>" - } - }, - "required": [ - "billingAddressId" - ] - } - } - } - } + ] }, - "delete": { - "summary": "Delete team's billing address", - "operationId": "organizationsDeleteBillingAddress", + "patch": { + "summary": "Update dedicated database.", + "operationId": "postgresqlUpdate", "tags": [ - "organizations" + "postgresql" ], - "description": "Delete a team's billing address.", + "description": "Update a dedicated database configuration. All changes are applied with zero downtime. Specification changes (cpu, memory, storage) are handled via rolling cutover. Storage expansion is done online. All other settings are applied in-place.", "responses": { - "204": { - "description": "No content" + "200": { + "description": "DedicatedDatabase", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabase" + } + } + } } }, "deprecated": false, "x-appwrite": { - "method": "deleteBillingAddress", - "group": null, + "method": "update", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/delete-billing-address.md", + "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\/delete-billing-address.md", - "produces": [ - "application\/json" - ], "auth": { "Project": [] } @@ -48014,55 +53122,196 @@ ], "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}\/billing-addresses\/{billingAddressId}": { - "get": { - "summary": "Get billing address", - "operationId": "organizationsGetBillingAddress", - "tags": [ - "organizations" ], - "description": "Get a billing address using it's ID.", - "responses": { - "200": { - "description": "Address", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/billingAddress" + "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, storage, connection ceiling, and node pool based on specification config. Resource changes are applied via rolling cutover with zero downtime.", + "x-example": "<SPECIFICATION>", + "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 + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode preference. Allowed values: async, sync, quorum.", + "x-example": "async", + "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 + }, + "pitr": { + "type": "boolean", + "description": "Enable or disable point-in-time recovery (PITR).", + "x-example": false, + "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 + }, + "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": "postgresqlDelete", + "tags": [ + "postgresql" + ], + "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": "getBillingAddress", - "group": null, + "method": "delete", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-billing-address.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-billing-address.md", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } @@ -48074,43 +53323,33 @@ ], "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", + "name": "databaseId", + "description": "Database ID.", "required": true, "schema": { "type": "string", - "x-example": "<BILLING_ADDRESS_ID>" + "x-example": "<DATABASE_ID>" }, "in": "path" } ] } }, - "\/organizations\/{organizationId}\/billing-email": { - "patch": { - "summary": "Set team's billing email", - "operationId": "organizationsSetBillingEmail", + "\/postgresql\/{databaseId}\/backups": { + "get": { + "summary": "List database backups.", + "operationId": "postgresqlListBackups", "tags": [ - "organizations" + "postgresql" ], - "description": "Set the current billing email for the organization.", + "description": "List all backups for a dedicated database. Results can be filtered by status and type.", "responses": { "200": { - "description": "Organization", + "description": "BackupList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackupList" } } } @@ -48118,21 +53357,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "setBillingEmail", - "group": null, + "method": "listBackups", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/set-billing-email.md", + "demo": "postgresql\/list-backups.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\/set-billing-email.md", "auth": { "Project": [] } @@ -48144,53 +53382,44 @@ ], "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\/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": { - "billingEmail": { - "type": "string", - "description": "Billing email for the organization.", - "x-example": "email@example.com", - "format": "email" - } - }, - "required": [ - "billingEmail" - ] - } - } - } - } - } - }, - "\/organizations\/{organizationId}\/budget": { - "patch": { - "summary": "Update organization budget", - "operationId": "organizationsUpdateBudget", + ] + }, + "post": { + "summary": "Create a database backup.", + "operationId": "postgresqlCreateBackup", "tags": [ - "organizations" + "postgresql" ], - "description": "Update the budget limit for an organization.", + "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": "Organization", + "202": { + "description": "Backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/organization" + "$ref": "#\/components\/schemas\/dedicatedDatabaseBackup" } } } @@ -48198,21 +53427,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateBudget", - "group": null, + "method": "createBackup", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/update-budget.md", + "demo": "postgresql\/create-backup.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-budget.md", "auth": { "Project": [] } @@ -48224,12 +53452,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" } @@ -48240,49 +53468,34 @@ "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" - } + "type": { + "type": "string", + "description": "Backup type: full or incremental.", + "default": "full", + "x-example": "full" } - }, - "required": [ - "budget" - ] + } } } } } } }, - "\/organizations\/{organizationId}\/credits": { + "\/postgresql\/{databaseId}\/backups\/policies": { "get": { - "summary": "List credits", - "operationId": "organizationsListCredits", + "summary": "List database backup policies.", + "operationId": "postgresqlListBackupPolicies", "tags": [ - "organizations" + "postgresql" ], - "description": "List all credits for an organization.\n", + "description": "List scheduled backup policies for a dedicated database.", "responses": { "200": { - "description": "CreditList", + "description": "Backup policy list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/creditList" + "$ref": "#\/components\/schemas\/backupPolicyList" } } } @@ -48290,21 +53503,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "listCredits", - "group": null, + "method": "listBackupPolicies", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/list-credits.md", + "demo": "postgresql\/list-backup-policies.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,18 +53528,18 @@ ], "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", + "description": "Array of query strings generated using the Query class provided by the SDK.", "required": false, "schema": { "type": "array", @@ -48341,19 +53553,19 @@ ] }, "post": { - "summary": "Add credits from coupon", - "operationId": "organizationsAddCredit", + "summary": "Create a database backup policy.", + "operationId": "postgresqlCreateBackupPolicy", "tags": [ - "organizations" + "postgresql" ], - "description": "Add credit to an organization using a coupon.", + "description": "Create a scheduled backup policy for a dedicated database.", "responses": { "201": { - "description": "Credit", + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/credit" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -48361,21 +53573,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "addCredit", - "group": null, + "method": "createBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/add-credit.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\/add-credit.md", "auth": { "Project": [] } @@ -48387,12 +53598,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,96 +53614,70 @@ "schema": { "type": "object", "properties": { - "couponId": { + "policyId": { "type": "string", - "description": "ID of the coupon", - "x-example": "<COUPON_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": "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": [ - "couponId" + "policyId", + "name", + "schedule", + "retention" ] } } } - } - } - }, - "\/organizations\/{organizationId}\/credits\/available": { - "get": { - "summary": "Get available credits", - "operationId": "organizationsGetAvailableCredits", - "tags": [ - "organizations" - ], - "description": "Get total available valid credits for an organization.", - "responses": { - "200": { - "description": "CreditAvailable", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/creditAvailable" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "getAvailableCredits", - "group": null, - "cookies": false, - "type": "", - "demo": "organizations\/get-available-credits.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-available-credits.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "organizationId", - "description": "Organization ID", - "required": true, - "schema": { - "type": "string", - "x-example": "<ORGANIZATION_ID>" - }, - "in": "path" - } - ] + } } }, - "\/organizations\/{organizationId}\/credits\/{creditId}": { + "\/postgresql\/{databaseId}\/backups\/policies\/{policyId}": { "get": { - "summary": "Get credit details", - "operationId": "organizationsGetCredit", + "summary": "Get a database backup policy.", + "operationId": "postgresqlGetBackupPolicy", "tags": [ - "organizations" + "postgresql" ], - "description": "Get credit details.", + "description": "Get a scheduled backup policy for a dedicated database.", "responses": { "200": { - "description": "Credit", + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/credit" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -48500,21 +53685,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getCredit", - "group": null, + "method": "getBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-credit.md", + "demo": "postgresql\/get-backup-policy.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 +53710,41 @@ ], "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": "policyId", + "description": "Policy ID.", "required": true, "schema": { "type": "string", - "x-example": "<CREDIT_ID>" + "x-example": "<POLICY_ID>" }, "in": "path" } ] - } - }, - "\/organizations\/{organizationId}\/estimations\/delete-organization": { + }, "patch": { - "summary": "Estimate delete team", - "operationId": "organizationsEstimationDeleteOrganization", + "summary": "Update a database backup policy.", + "operationId": "postgresqlUpdateBackupPolicy", "tags": [ - "organizations" + "postgresql" ], - "description": "Get estimation for deleting an organization.", + "description": "Update a scheduled backup policy for a dedicated database.", "responses": { "200": { - "description": "DeleteOrganization", + "description": "backup", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/estimationDeleteOrganization" + "$ref": "#\/components\/schemas\/backupPolicy" } } } @@ -48570,21 +53752,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "estimationDeleteOrganization", - "group": null, + "method": "updateBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/estimation-delete-organization.md", - "rate-limit": 10, + "demo": "postgresql\/update-backup-policy.md", + "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "organizations.write", + "scope": "databases.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/organizations\/estimation-delete-organization.md", "auth": { "Project": [] } @@ -48596,55 +53777,93 @@ ], "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" + }, + { + "name": "policyId", + "description": "Policy ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<POLICY_ID>" }, "in": "path" } - ] - } - }, - "\/organizations\/{organizationId}\/estimations\/update-plan": { - "patch": { - "summary": "Estimate for update plan", - "operationId": "organizationsEstimationUpdatePlan", - "tags": [ - "organizations" ], - "description": "Get estimation for updating the organization plan.", - "responses": { - "200": { - "description": "UpdatePlan", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/estimationUpdatePlan" + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy name. Max length: 128 chars.", + "x-example": "<NAME>", + "x-nullable": true + }, + "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", + "x-nullable": true + }, + "enabled": { + "type": "boolean", + "description": "Is policy enabled? When disabled, no backups will be taken.", + "x-example": false, + "x-nullable": true + } } } } } + } + }, + "delete": { + "summary": "Delete a database backup policy.", + "operationId": "postgresqlDeleteBackupPolicy", + "tags": [ + "postgresql" + ], + "description": "Delete a scheduled backup policy for a dedicated database. Backups already taken by the policy are kept until their retention expires.", + "responses": { + "204": { + "description": "No content" + } }, "deprecated": false, "x-appwrite": { - "method": "estimationUpdatePlan", - "group": null, + "method": "deleteBackupPolicy", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/estimation-update-plan.md", - "rate-limit": 10, + "demo": "postgresql\/delete-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", + "produces": [ + "application\/json" + ], "auth": { "Project": [] } @@ -48656,67 +53875,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": "policyId", + "description": "Policy ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<POLICY_ID>" }, "in": "path" } - ], - "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", + "\/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 +53919,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 +53944,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 +53960,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 +54011,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 +54033,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 +54058,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 +54121,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 +54165,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 +54222,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 +54247,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,58 +54263,65 @@ "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" } } } } }, "deprecated": false, - "x-appwrite": { - "method": "validateInvoice", - "group": null, + "x-appwrite": { + "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 +54333,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": { - "get": { - "summary": "View invoice in PDF", - "operationId": "organizationsGetInvoiceView", + "\/postgresql\/{databaseId}\/credentials": { + "patch": { + "summary": "Rotate database credentials.", + "operationId": "postgresqlUpdateCredentials", "tags": [ - "organizations" + "postgresql" ], - "description": "View invoice in PDF", + "description": "Rotate the primary connection credentials for a dedicated database. Generates a new password and updates the database atomically. Previous credentials stop working immediately. Returns the database with a refreshed connection string carrying the new password.", "responses": { "200": { - "description": "paymentMethod", + "description": "DedicatedDatabase", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/paymentMethod" + "$ref": "#\/components\/schemas\/dedicatedDatabase" } } } @@ -49195,71 +54377,58 @@ }, "deprecated": false, "x-appwrite": { - "method": "getInvoiceView", - "group": null, + "method": "updateCredentials", + "group": "databases", "cookies": false, - "type": "location", - "demo": "organizations\/get-invoice-view.md", + "type": "", + "demo": "postgresql\/update-credentials.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-view.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}\/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 +54436,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 +54461,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 +54477,50 @@ "schema": { "type": "object", "properties": { - "paymentMethodId": { + "sql": { "type": "string", - "description": "Unique ID of payment method", - "x-example": "<PAYMENT_METHOD_ID>" + "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 +54528,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 +54553,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 +54585,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 +54610,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 +54626,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 +54663,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 +54688,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 +54732,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 +54757,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": "postgresqlUpdateMaintenance", "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 +54808,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPlan", - "group": null, + "method": "updateMaintenance", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/get-plan.md", + "demo": "postgresql\/update-maintenance.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 +54833,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 +54893,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 +54918,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 +54934,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 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 +54955,21 @@ } } }, - "\/organizations\/{organizationId}\/plan\/cancel": { - "patch": { - "summary": "Cancel organization plan change", - "operationId": "organizationsCancelDowngrade", + "\/postgresql\/{databaseId}\/pitr": { + "get": { + "summary": "Get PITR recovery windows.", + "operationId": "postgresqlGetPitr", "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 +54977,20 @@ }, "deprecated": false, "x-appwrite": { - "method": "cancelDowngrade", - "group": null, + "method": "getPitr", + "group": "databases", "cookies": false, "type": "", - "demo": "organizations\/cancel-downgrade.md", + "demo": "postgresql\/get-pitr.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 +55002,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 +55036,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 +55061,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 +55134,78 @@ "schema": { "type": "object", "properties": { - "billingPlan": { + "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": { + "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": "Target billing plan", - "x-example": "tier-0" + "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 }, - "invites": { - "type": "array", - "description": "Additional member invites", - "default": [], - "x-example": null, - "items": { - "type": "string" - } + "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 }, - "couponId": { + "poolerMemoryRequest": { "type": "string", - "description": "Coupon id", - "x-example": "<COUPON_ID>", + "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": "Replicas", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/consoleRegionList" + "$ref": "#\/components\/schemas\/dedicatedDatabaseReplicas" } } } @@ -49942,21 +55213,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 +55238,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 +55272,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 +55297,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 as an ISO 8601 datetime. 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 +55373,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 +55398,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 +55414,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": "string", + "description": "Target time for PITR (required for pitr type) as an [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) datetime.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime", "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 +55462,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 +55487,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 +55531,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 +55556,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 +55590,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 +55610,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": { @@ -51229,7 +56530,7 @@ }, "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -51246,8 +56547,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 +56651,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", @@ -51508,7 +56817,7 @@ "properties": { "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -51525,8 +56834,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 +56938,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", @@ -51861,7 +57178,7 @@ }, "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -51878,8 +57195,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 +57299,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 +57904,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 +58136,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 +58217,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 +58310,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 +58397,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 +58484,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 +58565,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 +58646,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 +58727,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 +58808,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 +58889,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 +58970,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 +59051,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 +59132,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 +59213,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 +59294,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 +59375,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 +59462,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 +59543,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 +59631,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 +59732,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 +59825,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 +59906,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 +59987,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 +60074,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 +60155,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" @@ -54818,6 +60221,35 @@ "format": "url", "x-nullable": true }, + "prompt": { + "type": "array", + "description": "Array of OpenID Connect prompt values controlling the authentication and consent screens. If \"none\" is included, it must be the only element. \"none\" means: don't display any authentication or consent screens. \"login\" means: prompt the user to re-authenticate. \"consent\" means: prompt the user for consent. \"select_account\" means: prompt the user to select an account.", + "x-example": null, + "items": { + "type": "string", + "enum": [ + "none", + "login", + "consent", + "select_account" + ], + "x-enum-name": "ProjectOAuth2OidcPrompt", + "x-enum-keys": [ + "none", + "login", + "consent", + "select_account" + ] + }, + "x-nullable": true + }, + "maxAge": { + "type": "integer", + "description": "Maximum authentication age in seconds. When set, the user must have authenticated within this many seconds, otherwise they are prompted to re-authenticate.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, "enabled": { "type": "boolean", "description": "OAuth2 sign-in method status. Set to true to enable new session creation. Setting to true will trigger end-to-end credentials validation, and will throw if the credentials are invalid.", @@ -54861,7 +60293,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 +60386,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 +60467,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 +60548,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 +60629,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 +60710,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 +60791,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 +60872,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 +60953,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 +61034,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 +61115,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 +61196,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 +61277,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 +61358,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 +61439,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 +61520,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 +61601,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 +61850,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" @@ -60234,16 +65720,366 @@ "summary": "Create project variable", "operationId": "projectCreateVariable", "tags": [ - "project" + "project" + ], + "description": "Create a new project environment variable. These variables can be accessed by all functions and sites in the project.", + "responses": { + "201": { + "description": "Variable", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/variable" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createVariable", + "group": "variables", + "cookies": false, + "type": "", + "demo": "project\/create-variable.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "project.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "variableId": { + "type": "string", + "description": "Variable 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": "<VARIABLE_ID>", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "key": { + "type": "string", + "description": "Variable key. Max length: 255 chars.", + "x-example": "<KEY>" + }, + "value": { + "type": "string", + "description": "Variable value. Max length: 8192 chars.", + "x-example": "<VALUE>" + }, + "secret": { + "type": "boolean", + "description": "Secret variables can be updated or deleted, but only projects can read them during build and runtime.", + "default": true, + "x-example": false + } + }, + "required": [ + "variableId", + "key", + "value" + ] + } + } + } + } + } + }, + "\/project\/variables\/{variableId}": { + "get": { + "summary": "Get project variable", + "operationId": "projectGetVariable", + "tags": [ + "project" + ], + "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": "project\/get-variable.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "project.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "variableId", + "description": "Variable unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<VARIABLE_ID>" + }, + "in": "path" + } + ] + }, + "put": { + "summary": "Update project variable", + "operationId": "projectUpdateVariable", + "tags": [ + "project" + ], + "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": "project\/update-variable.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "project.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "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": { + "key": { + "type": "string", + "description": "Variable key. Max length: 255 chars.", + "x-example": "<KEY>", + "x-nullable": true + }, + "value": { + "type": "string", + "description": "Variable value. Max length: 8192 chars.", + "x-example": "<VALUE>", + "x-nullable": true + }, + "secret": { + "type": "boolean", + "description": "Secret variables can be updated or deleted, but only projects can read them during build and runtime.", + "x-example": false, + "x-nullable": true + } + } + } + } + } + } + }, + "delete": { + "summary": "Delete project variable", + "operationId": "projectDeleteVariable", + "tags": [ + "project" + ], + "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": "project\/delete-variable.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "project.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "variableId", + "description": "Variable unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<VARIABLE_ID>" + }, + "in": "path" + } + ] + } + }, + "\/projects\/{projectId}\/addons": { + "get": { + "summary": "List project addons", + "operationId": "projectsListAddons", + "tags": [ + "projects" + ], + "description": "List all billing addons for a project.\n", + "responses": { + "200": { + "description": "Addons list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/addonList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listAddons", + "group": null, + "cookies": false, + "type": "", + "demo": "projects\/list-addons.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\/projects\/list-addons.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "projectId", + "description": "Project ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + } + ] + } + }, + "\/projects\/{projectId}\/addons\/premium-geo-db": { + "post": { + "summary": "Create Premium Geo DB addon for project", + "operationId": "projectsCreatePremiumGeoDBAddon", + "tags": [ + "projects" ], - "description": "Create a new project environment variable. These variables can be accessed by all functions and sites in the project.", + "description": "Create a Premium Geo DB addon for a project.\n", "responses": { "201": { - "description": "Variable", + "description": "Addon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variable" + "$ref": "#\/components\/schemas\/addon" } } } @@ -60251,88 +66087,59 @@ }, "deprecated": false, "x-appwrite": { - "method": "createVariable", - "group": "variables", + "method": "createPremiumGeoDBAddon", + "group": null, "cookies": false, "type": "", - "demo": "project\/create-variable.md", - "rate-limit": 0, + "demo": "projects\/create-premium-geo-db-addon.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "project.write", + "scope": "projects.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/projects\/create-premium-geo-db-addon.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "variableId": { - "type": "string", - "description": "Variable 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": "<VARIABLE_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } - }, - "key": { - "type": "string", - "description": "Variable key. Max length: 255 chars.", - "x-example": "<KEY>" - }, - "value": { - "type": "string", - "description": "Variable value. Max length: 8192 chars.", - "x-example": "<VALUE>" - }, - "secret": { - "type": "boolean", - "description": "Secret variables can be updated or deleted, but only projects can read them during build and runtime.", - "default": true, - "x-example": false - } - }, - "required": [ - "variableId", - "key", - "value" - ] - } - } + "parameters": [ + { + "name": "projectId", + "description": "Project ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" } - } + ] } }, - "\/project\/variables\/{variableId}": { + "\/projects\/{projectId}\/addons\/{addonId}": { "get": { - "summary": "Get project variable", - "operationId": "projectGetVariable", + "summary": "Get project addon", + "operationId": "projectsGetAddon", "tags": [ - "project" + "projects" ], - "description": "Get a variable by its unique ID. ", + "description": "Get the details of a billing addon for a project.\n", "responses": { "200": { - "description": "Variable", + "description": "Addon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variable" + "$ref": "#\/components\/schemas\/addon" } } } @@ -60340,58 +66147,133 @@ }, "deprecated": false, "x-appwrite": { - "method": "getVariable", - "group": "variables", + "method": "getAddon", + "group": null, "cookies": false, "type": "", - "demo": "project\/get-variable.md", + "demo": "projects\/get-addon.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "project.read", + "scope": "projects.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/projects\/get-addon.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "variableId", - "description": "Variable unique ID.", + "name": "projectId", + "description": "Project ID", "required": true, "schema": { "type": "string", - "x-example": "<VARIABLE_ID>" + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "addonId", + "description": "Addon ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ADDON_ID>" }, "in": "path" } ] }, - "put": { - "summary": "Update project variable", - "operationId": "projectUpdateVariable", + "delete": { + "summary": "Delete project addon", + "operationId": "projectsDeleteAddon", "tags": [ - "project" + "projects" ], - "description": "Update variable by its unique ID.", + "description": "Delete a billing addon for a project.\n", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteAddon", + "group": null, + "cookies": false, + "type": "", + "demo": "projects\/delete-addon.md", + "rate-limit": 10, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "projects.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/projects\/delete-addon.md", + "produces": [ + "application\/json" + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "projectId", + "description": "Project ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "addonId", + "description": "Addon ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ADDON_ID>" + }, + "in": "path" + } + ] + } + }, + "\/projects\/{projectId}\/addons\/{addonId}\/confirmations": { + "post": { + "summary": "Confirm project addon payment after 3DS authentication", + "operationId": "projectsConfirmAddonPayment", + "tags": [ + "projects" + ], + "description": "Confirm payment for a billing addon for a project.\n", "responses": { "200": { - "description": "Variable", + "description": "Addon", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/variable" + "$ref": "#\/components\/schemas\/addon" } } } @@ -60399,120 +66281,118 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateVariable", - "group": "variables", + "method": "confirmAddonPayment", + "group": null, "cookies": false, "type": "", - "demo": "project\/update-variable.md", - "rate-limit": 0, + "demo": "projects\/confirm-addon-payment.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "project.write", + "scope": "projects.write", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/projects\/confirm-addon-payment.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "variableId", - "description": "Variable unique ID.", + "name": "projectId", + "description": "Project ID", "required": true, "schema": { "type": "string", - "x-example": "<VARIABLE_ID>" + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "addonId", + "description": "Addon ID", + "required": true, + "schema": { + "type": "string", + "x-example": "<ADDON_ID>" }, "in": "path" } + ] + } + }, + "\/projects\/{projectId}\/addons\/{addon}\/price": { + "get": { + "summary": "Get project addon price", + "operationId": "projectsGetAddonPrice", + "tags": [ + "projects" ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "key": { - "type": "string", - "description": "Variable key. Max length: 255 chars.", - "x-example": "<KEY>", - "x-nullable": true - }, - "value": { - "type": "string", - "description": "Variable value. Max length: 8192 chars.", - "x-example": "<VALUE>", - "x-nullable": true - }, - "secret": { - "type": "boolean", - "description": "Secret variables can be updated or deleted, but only projects can read them during build and runtime.", - "x-example": false, - "x-nullable": true - } + "description": "Get the price details for a billing addon for a project, including the prorated amount for the remaining days in the current billing cycle.\n", + "responses": { + "200": { + "description": "AddonPrice", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/addonPrice" } } } } - } - }, - "delete": { - "summary": "Delete project variable", - "operationId": "projectDeleteVariable", - "tags": [ - "project" - ], - "description": "Delete a variable by its unique ID. ", - "responses": { - "204": { - "description": "No content" - } }, "deprecated": false, "x-appwrite": { - "method": "deleteVariable", - "group": "variables", + "method": "getAddonPrice", + "group": null, "cookies": false, "type": "", - "demo": "project\/delete-variable.md", + "demo": "projects\/get-addon-price.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "project.write", + "scope": "projects.read", "platforms": [ - "console", - "server" + "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/projects\/get-addon-price.md", "auth": { "Project": [] } }, "security": [ { - "Project": [], - "Key": [] + "Project": [] } ], "parameters": [ { - "name": "variableId", - "description": "Variable unique ID.", + "name": "projectId", + "description": "Project ID", "required": true, "schema": { "type": "string", - "x-example": "<VARIABLE_ID>" + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "addon", + "description": "Addon key identifier (e.g. premiumGeoDB).", + "required": true, + "schema": { + "type": "string", + "x-example": "baa" }, "in": "path" } @@ -60787,31 +66667,268 @@ "in": "path" }, { - "name": "keyId", - "description": "Key unique ID.", - "required": true, + "name": "keyId", + "description": "Key unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<KEY_ID>" + }, + "in": "path" + } + ] + }, + "put": { + "summary": "Update dev key", + "operationId": "projectsUpdateDevKey", + "tags": [ + "projects" + ], + "description": "Update a project\\'s dev key by its unique ID. Use this endpoint to update a project\\'s dev key name or expiration time.'", + "responses": { + "200": { + "description": "DevKey", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/devKey" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateDevKey", + "group": "devKeys", + "cookies": false, + "type": "", + "demo": "projects\/update-dev-key.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "devKeys.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "projectId", + "description": "Project unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "keyId", + "description": "Key unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<KEY_ID>" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Key name. Max length: 128 chars.", + "x-example": "<NAME>" + }, + "expire": { + "type": "string", + "description": "Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "format": "datetime" + } + }, + "required": [ + "name", + "expire" + ] + } + } + } + } + }, + "delete": { + "summary": "Delete dev key", + "operationId": "projectsDeleteDevKey", + "tags": [ + "projects" + ], + "description": "Delete a project\\'s dev key by its unique ID. Once deleted, the key will no longer allow bypassing of rate limits and better logging of errors.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteDevKey", + "group": "devKeys", + "cookies": false, + "type": "", + "demo": "projects\/delete-dev-key.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "devKeys.write", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "projectId", + "description": "Project unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "keyId", + "description": "Key unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<KEY_ID>" + }, + "in": "path" + } + ] + } + }, + "\/projects\/{projectId}\/schedules": { + "get": { + "summary": "List schedules", + "operationId": "projectsListSchedules", + "tags": [ + "projects" + ], + "description": "Get a list of all the project's schedules. You can use the query params to filter your results.", + "responses": { + "200": { + "description": "Schedules List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/scheduleList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listSchedules", + "group": "schedules", + "cookies": false, + "type": "", + "demo": "projects\/list-schedules.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "schedules.read", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/list-schedules.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "projectId", + "description": "Project unique ID.", + "required": true, + "schema": { + "type": "string", + "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: resourceType, resourceId, projectId, schedule, active, region", + "required": false, "schema": { - "type": "string", - "x-example": "<KEY_ID>" + "type": "array", + "items": { + "type": "string" + }, + "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" } ] }, - "put": { - "summary": "Update dev key", - "operationId": "projectsUpdateDevKey", + "post": { + "summary": "Create schedule", + "operationId": "projectsCreateSchedule", "tags": [ "projects" ], - "description": "Update a project\\'s dev key by its unique ID. Use this endpoint to update a project\\'s dev key name or expiration time.'", + "description": "Create a new schedule for a resource.", "responses": { - "200": { - "description": "DevKey", + "201": { + "description": "Schedule", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/devKey" + "$ref": "#\/components\/schemas\/schedule" } } } @@ -60819,20 +66936,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateDevKey", - "group": "devKeys", + "method": "createSchedule", + "group": "schedules", "cookies": false, "type": "", - "demo": "projects\/update-dev-key.md", + "demo": "projects\/create-schedule.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "devKeys.write", + "scope": "schedules.write", "platforms": [ "console" ], "packaging": false, "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/create-schedule.md", "auth": { "Project": [] } @@ -60852,16 +66970,6 @@ "x-example": "<PROJECT_ID>" }, "in": "path" - }, - { - "name": "keyId", - "description": "Key unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<KEY_ID>" - }, - "in": "path" } ], "requestBody": { @@ -60870,103 +66978,73 @@ "schema": { "type": "object", "properties": { - "name": { + "resourceType": { "type": "string", - "description": "Key name. Max length: 128 chars.", - "x-example": "<NAME>" + "description": "The resource type for the schedule. Possible values: function, execution, message, backup.", + "x-example": "function", + "enum": [ + "function", + "execution", + "message", + "backup" + ], + "x-enum-name": "ScheduleResourceType", + "x-enum-keys": [ + "function", + "execution", + "message", + "backup" + ] }, - "expire": { + "resourceId": { "type": "string", - "description": "Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format.", - "x-example": "2020-10-15T06:38:00.000+00:00", - "format": "datetime" + "description": "The resource ID to associate with this schedule.", + "x-example": "<RESOURCE_ID>" + }, + "schedule": { + "type": "string", + "description": "Schedule CRON expression.", + "x-example": null + }, + "active": { + "type": "boolean", + "description": "Whether the schedule is active.", + "default": false, + "x-example": false + }, + "data": { + "type": "object", + "description": "Schedule data as a JSON string. Used to store resource-specific context needed for execution.", + "default": {}, + "x-example": "{}" } }, "required": [ - "name", - "expire" + "resourceType", + "resourceId", + "schedule" ] } } } } - }, - "delete": { - "summary": "Delete dev key", - "operationId": "projectsDeleteDevKey", - "tags": [ - "projects" - ], - "description": "Delete a project\\'s dev key by its unique ID. Once deleted, the key will no longer allow bypassing of rate limits and better logging of errors.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteDevKey", - "group": "devKeys", - "cookies": false, - "type": "", - "demo": "projects\/delete-dev-key.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "devKeys.write", - "platforms": [ - "console" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ - { - "name": "projectId", - "description": "Project unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<PROJECT_ID>" - }, - "in": "path" - }, - { - "name": "keyId", - "description": "Key unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<KEY_ID>" - }, - "in": "path" - } - ] } }, - "\/projects\/{projectId}\/schedules": { + "\/projects\/{projectId}\/schedules\/{scheduleId}": { "get": { - "summary": "List schedules", - "operationId": "projectsListSchedules", + "summary": "Get schedule", + "operationId": "projectsGetSchedule", "tags": [ "projects" ], - "description": "Get a list of all the project's schedules. You can use the query params to filter your results.", + "description": "Get a schedule by its unique ID.", "responses": { "200": { - "description": "Schedules List", + "description": "Schedule", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/scheduleList" + "$ref": "#\/components\/schemas\/schedule" } } } @@ -60974,11 +67052,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "listSchedules", + "method": "getSchedule", "group": "schedules", "cookies": false, "type": "", - "demo": "projects\/list-schedules.md", + "demo": "projects\/get-schedule.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -60988,7 +67066,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/list-schedules.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/get-schedule.md", "auth": { "Project": [] } @@ -61010,45 +67088,33 @@ "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: resourceType, resourceId, projectId, schedule, active, region", - "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": "scheduleId", + "description": "Schedule ID.", + "required": true, "schema": { - "type": "boolean", - "x-example": false, - "default": true + "type": "string", + "x-example": "<SCHEDULE_ID>" }, - "in": "query" + "in": "path" } ] - }, - "post": { - "summary": "Create schedule", - "operationId": "projectsCreateSchedule", + } + }, + "\/projects\/{projectId}\/stages": { + "get": { + "summary": "List stages", + "operationId": "projectsListStages", "tags": [ "projects" ], - "description": "Create a new schedule for a resource.", + "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": { - "201": { - "description": "Schedule", + "200": { + "description": "Stages List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/schedule" + "$ref": "#\/components\/schemas\/stageList" } } } @@ -61056,21 +67122,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "createSchedule", - "group": "schedules", + "method": "listStages", + "group": "stages", "cookies": false, "type": "", - "demo": "projects\/create-schedule.md", + "demo": "projects\/list-stages.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "schedules.write", + "scope": "stages.read", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/create-schedule.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/list-stages.md", "auth": { "Project": [] } @@ -61091,80 +67157,24 @@ }, "in": "path" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "resourceType": { - "type": "string", - "description": "The resource type for the schedule. Possible values: function, execution, message, backup.", - "x-example": "function", - "enum": [ - "function", - "execution", - "message", - "backup" - ], - "x-enum-name": "ScheduleResourceType", - "x-enum-keys": [ - "function", - "execution", - "message", - "backup" - ] - }, - "resourceId": { - "type": "string", - "description": "The resource ID to associate with this schedule.", - "x-example": "<RESOURCE_ID>" - }, - "schedule": { - "type": "string", - "description": "Schedule CRON expression.", - "x-example": null - }, - "active": { - "type": "boolean", - "description": "Whether the schedule is active.", - "default": false, - "x-example": false - }, - "data": { - "type": "object", - "description": "Schedule data as a JSON string. Used to store resource-specific context needed for execution.", - "default": {}, - "x-example": "{}" - } - }, - "required": [ - "resourceType", - "resourceId", - "schedule" - ] - } - } - } - } + ] } }, - "\/projects\/{projectId}\/schedules\/{scheduleId}": { - "get": { - "summary": "Get schedule", - "operationId": "projectsGetSchedule", + "\/projects\/{projectId}\/stages\/{stageId}": { + "patch": { + "summary": "Update stage", + "operationId": "projectsUpdateStage", "tags": [ "projects" ], - "description": "Get a schedule by its unique ID.", + "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": "Schedule", + "description": "Stage", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/schedule" + "$ref": "#\/components\/schemas\/stage" } } } @@ -61172,21 +67182,21 @@ }, "deprecated": false, "x-appwrite": { - "method": "getSchedule", - "group": "schedules", + "method": "updateStage", + "group": "stages", "cookies": false, "type": "", - "demo": "projects\/get-schedule.md", + "demo": "projects\/update-stage.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "schedules.read", + "scope": "stages.write", "platforms": [ "console" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/get-schedule.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/projects\/update-stage.md", "auth": { "Project": [] } @@ -61208,16 +67218,33 @@ "in": "path" }, { - "name": "scheduleId", - "description": "Schedule ID.", + "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": { @@ -62591,9 +68618,6 @@ "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", @@ -62688,9 +68712,6 @@ "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", @@ -63499,9 +69520,6 @@ "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", @@ -63596,9 +69614,6 @@ "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", @@ -65585,7 +71600,7 @@ }, "maximumFileSize": { "type": "integer", - "description": "Maximum file size allowed in bytes. Maximum allowed value is 0B.", + "description": "Maximum file size allowed in bytes. Maximum allowed value is 5GB.", "default": {}, "x-example": 1, "format": "int32" @@ -65799,7 +71814,7 @@ }, "maximumFileSize": { "type": "integer", - "description": "Maximum file size allowed in bytes. Maximum allowed value is 0B.", + "description": "Maximum file size allowed in bytes. Maximum allowed value is 5GB.", "default": {}, "x-example": 1, "format": "int32" @@ -67098,14 +73113,11 @@ "default": true, "x-example": false }, - "dedicatedDatabaseId": { + "specification": { "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": "<DEDICATED_DATABASE_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Database specification. Defaults to `serverless`, which creates the database on the shared pool. Any other value provisions a dedicated database on that specification.", + "default": "serverless", + "x-example": "serverless" } }, "required": [ @@ -67860,6 +73872,273 @@ ] } }, + "\/tablesdb\/{databaseId}\/migrations": { + "get": { + "summary": "List TablesDB dedicated migrations.", + "operationId": "tablesDBListMigrations", + "tags": [ + "tablesDB" + ], + "description": "List the dedicated migrations for a TablesDB database. A database has at most one in-flight migration.", + "responses": { + "200": { + "description": "Database Migrations List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/databaseMigrationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listMigrations", + "group": "databases", + "cookies": false, + "type": "", + "demo": "tablesdb\/list-migrations.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" + } + ] + }, + "post": { + "summary": "Start a TablesDB dedicated migration.", + "operationId": "tablesDBCreateMigration", + "tags": [ + "tablesDB" + ], + "description": "Start migrating a serverless TablesDB database onto a dedicated MySQL compute. Data is copied to the target while the source stays live, with a brief read-only window during cutover.", + "responses": { + "201": { + "description": "Database Migration", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/databaseMigration" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createMigration", + "group": "databases", + "cookies": false, + "type": "", + "demo": "tablesdb\/create-migration.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": { + "specification": { + "type": "string", + "description": "Dedicated compute specification to provision as the migration target (e.g. s-2vcpu-4gb). The migration always targets a dedicated compute, so `serverless` is not accepted.", + "x-example": "s-1vcpu-1gb" + } + }, + "required": [ + "specification" + ] + } + } + } + } + } + }, + "\/tablesdb\/{databaseId}\/migrations\/{migrationId}": { + "get": { + "summary": "Get a TablesDB dedicated migration.", + "operationId": "tablesDBGetMigration", + "tags": [ + "tablesDB" + ], + "description": "Get a single dedicated migration for a TablesDB database by its ID.", + "responses": { + "200": { + "description": "Database Migration", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/databaseMigration" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getMigration", + "group": "databases", + "cookies": false, + "type": "", + "demo": "tablesdb\/get-migration.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" + }, + { + "name": "migrationId", + "description": "Migration ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<MIGRATION_ID>" + }, + "in": "path" + } + ] + }, + "delete": { + "summary": "Abort a TablesDB dedicated migration.", + "operationId": "tablesDBDeleteMigration", + "tags": [ + "tablesDB" + ], + "description": "Abort an in-flight TablesDB dedicated migration. Only allowed before cutover; once the migration has cut over it cannot be aborted.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteMigration", + "group": "databases", + "cookies": false, + "type": "", + "demo": "tablesdb\/delete-migration.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": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<DATABASE_ID>" + }, + "in": "path" + }, + { + "name": "migrationId", + "description": "Migration ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<MIGRATION_ID>" + }, + "in": "path" + } + ] + } + }, "\/tablesdb\/{databaseId}\/tables": { "get": { "summary": "List tables", @@ -73517,92 +79796,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 +80907,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", @@ -76817,7 +82914,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(\"resourceType\", [\"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 +82968,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, resourceType, resourceId, teamId, country, region, hostname, ip, osName, clientType, clientName, deviceName. Allowed methods: equal, notEqual, contains, startsWith, endsWith, isNull, isNotNull. Example: `queries[]=equal(\"resourceType\", [\"bucket\"])`.", "required": false, "schema": { - "type": "string", - "x-example": "<RESOURCE_ID>", - "default": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, @@ -76904,7 +82992,7 @@ }, { "name": "dimensions", - "description": "Break-down dimensions (max 10). Allowed: path, method, status, service, resource, country, region, hostname, osName, clientType, clientName, deviceName, teamId, resourceId.", + "description": "Break-down dimensions (max 10). Allowed: path, method, status, service, resourceType, country, region, hostname, ip, osName, clientType, clientName, deviceName, teamId, resourceId.", "required": false, "schema": { "type": "array", @@ -76995,7 +83083,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`, `resourceType`. `service` and `resourceType` 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(\"resourceType\", [\"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 +83137,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, resourceType, resourceId, teamId. Allowed methods: equal, notEqual, isNull, isNotNull. Example: `queries[]=equal(\"resourceType\", [\"bucket\"])`.", "required": false, "schema": { - "type": "string", - "x-example": "<TEAM_ID>", - "default": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, @@ -77082,7 +83161,7 @@ }, { "name": "dimensions", - "description": "Break-down dimensions. Allowed: resourceId, teamId, service, resource.", + "description": "Break-down dimensions. Allowed: resourceId, teamId, service, resourceType.", "required": false, "schema": { "type": "array", @@ -77217,7 +83296,7 @@ "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, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels, impersonator", + "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, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels, impersonator, accessedAt", "required": false, "schema": { "type": "array", @@ -82080,14 +88159,11 @@ "default": true, "x-example": false }, - "dedicatedDatabaseId": { + "specification": { "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": "<DEDICATED_DATABASE_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Database specification. Defaults to `serverless`, which creates the database on the shared pool. Any other value provisions a dedicated database on that specification.", + "default": "serverless", + "x-example": "serverless" } }, "required": [ @@ -82107,7 +88183,7 @@ "tags": [ "vectorsDB" ], - "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": "Generate vector embeddings for an array of text using the selected embedding model. Use the returned vectors to power semantic search and similarity queries against your vector collections.\n", "responses": { "200": { "description": "Embedding list", @@ -82123,7 +88199,7 @@ "deprecated": false, "x-appwrite": { "method": "createTextEmbeddings", - "group": "documents", + "group": "embeddings", "cookies": false, "type": "", "demo": "vectorsdb\/create-text-embeddings.md", @@ -82137,7 +88213,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vectorsdb\/create-document.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vectorsdb\/create-text-embeddings.md", "methods": [ { "name": "createTextEmbeddings", @@ -82159,7 +88235,7 @@ "model": "#\/components\/schemas\/embeddingList" } ], - "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": "Generate vector embeddings for an array of text using the selected embedding model. Use the returned vectors to power semantic search and similarity queries against your vector collections.\n", "demo": "vectorsdb\/create-text-embeddings.md", "public": true } @@ -82418,160 +88494,16 @@ "in": "path" } ] - }, - "patch": { - "summary": "Update transaction", - "operationId": "vectorsDBUpdateTransaction", - "tags": [ - "vectorsDB" - ], - "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": "vectorsdb\/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\/vectorsdb\/update-transaction.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "transactionId", - "description": "Transaction ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<TRANSACTION_ID>" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "commit": { - "type": "boolean", - "description": "Commit transaction?", - "default": false, - "x-example": false - }, - "rollback": { - "type": "boolean", - "description": "Rollback transaction?", - "default": false, - "x-example": false - } - } - } - } - } - } - }, - "delete": { - "summary": "Delete transaction", - "operationId": "vectorsDBDeleteTransaction", - "tags": [ - "vectorsDB" - ], - "description": "Delete a transaction by its unique ID.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteTransaction", - "group": "transactions", - "cookies": false, - "type": "", - "demo": "vectorsdb\/delete-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\/vectorsdb\/delete-transaction.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [], - "Session": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "transactionId", - "description": "Transaction ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<TRANSACTION_ID>" - }, - "in": "path" - } - ] - } - }, - "\/vectorsdb\/transactions\/{transactionId}\/operations": { - "post": { - "summary": "Create operations", - "operationId": "vectorsDBCreateOperations", + }, + "patch": { + "summary": "Update transaction", + "operationId": "vectorsDBUpdateTransaction", "tags": [ "vectorsDB" ], - "description": "Create multiple operations in a single transaction.", + "description": "Update a transaction, to either commit or roll back its operations.", "responses": { - "201": { + "200": { "description": "Transaction", "content": { "application\/json": { @@ -82584,11 +88516,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "createOperations", + "method": "updateTransaction", "group": "transactions", "cookies": false, "type": "", - "demo": "vectorsdb\/create-operations.md", + "demo": "vectorsdb\/update-transaction.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -82600,7 +88532,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vectorsdb\/create-operations.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vectorsdb\/update-transaction.md", "auth": { "Project": [] } @@ -82631,37 +88563,96 @@ "schema": { "type": "object", "properties": { - "operations": { - "type": "array", - "description": "Array of staged operations.", - "default": [], - "x-example": "[\n\t {\n\t \"action\": \"create\",\n\t \"databaseId\": \"<DATABASE_ID>\",\n\t \"collectionId\": \"<COLLECTION_ID>\",\n\t \"documentId\": \"<DOCUMENT_ID>\",\n\t \"data\": {\n\t \"name\": \"Walter O'Brien\"\n\t }\n\t }\n\t]", - "items": { - "type": "object" - } + "commit": { + "type": "boolean", + "description": "Commit transaction?", + "default": false, + "x-example": false + }, + "rollback": { + "type": "boolean", + "description": "Rollback transaction?", + "default": false, + "x-example": false } } } } } } + }, + "delete": { + "summary": "Delete transaction", + "operationId": "vectorsDBDeleteTransaction", + "tags": [ + "vectorsDB" + ], + "description": "Delete a transaction by its unique ID.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteTransaction", + "group": "transactions", + "cookies": false, + "type": "", + "demo": "vectorsdb\/delete-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\/vectorsdb\/delete-transaction.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "transactionId", + "description": "Transaction ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<TRANSACTION_ID>" + }, + "in": "path" + } + ] } }, - "\/vectorsdb\/usage": { - "get": { - "summary": "Get VectorsDB usage stats", - "operationId": "vectorsDBListUsage", + "\/vectorsdb\/transactions\/{transactionId}\/operations": { + "post": { + "summary": "Create operations", + "operationId": "vectorsDBCreateOperations", "tags": [ "vectorsDB" ], - "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": "Create multiple operations in a single transaction.", "responses": { - "200": { - "description": "UsageVectorsDBs", + "201": { + "description": "Transaction", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/usageVectorsDBs" + "$ref": "#\/components\/schemas\/transaction" } } } @@ -82669,77 +88660,67 @@ }, "deprecated": false, "x-appwrite": { - "method": "listUsage", - "group": null, + "method": "createOperations", + "group": "transactions", "cookies": false, "type": "", - "demo": "vectorsdb\/list-usage.md", + "demo": "vectorsdb\/create-operations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "collections.read", + "scope": "documents.write", "platforms": [ - "console" + "console", + "server", + "client" ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vectorsdb\/list-usage.md", - "methods": [ - { - "name": "listUsage", - "namespace": "vectorsDB", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "range" - ], - "required": [], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/usageVectorsDBs" - } - ], - "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": "vectorsdb\/list-usage.md", - "public": true - } - ], + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vectorsdb\/create-operations.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [], + "Session": [], + "JWT": [] } ], "parameters": [ { - "name": "range", - "description": "Date range.", - "required": false, + "name": "transactionId", + "description": "Transaction 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": "<TRANSACTION_ID>" }, - "in": "query" + "in": "path" } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "operations": { + "type": "array", + "description": "Array of staged operations.", + "default": [], + "x-example": "[\n\t {\n\t \"action\": \"create\",\n\t \"databaseId\": \"<DATABASE_ID>\",\n\t \"collectionId\": \"<COLLECTION_ID>\",\n\t \"documentId\": \"<DOCUMENT_ID>\",\n\t \"data\": {\n\t \"name\": \"Walter O'Brien\"\n\t }\n\t }\n\t]", + "items": { + "type": "object" + } + } + } + } + } + } + } } }, "\/vectorsdb\/{databaseId}": { @@ -84804,124 +90785,45 @@ "in": "path" } ] - }, - "delete": { - "summary": "Delete index", - "operationId": "vectorsDBDeleteIndex", - "tags": [ - "vectorsDB" - ], - "description": "Delete an index.", - "responses": { - "204": { - "description": "No content" - } - }, - "deprecated": false, - "x-appwrite": { - "method": "deleteIndex", - "group": "indexes", - "cookies": false, - "type": "", - "demo": "vectorsdb\/delete-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\/vectorsdb\/delete-index.md", - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "<DATABASE_ID>" - }, - "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": "<COLLECTION_ID>" - }, - "in": "path" - }, - { - "name": "key", - "description": "Index Key.", - "required": true, - "schema": { - "type": "string" - }, - "in": "path" - } - ] - } - }, - "\/vectorsdb\/{databaseId}\/collections\/{collectionId}\/usage": { - "get": { - "summary": "Get collection usage stats", - "operationId": "vectorsDBGetCollectionUsage", + }, + "delete": { + "summary": "Delete index", + "operationId": "vectorsDBDeleteIndex", "tags": [ "vectorsDB" ], - "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": "Delete an index.", "responses": { - "200": { - "description": "UsageCollection", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/usageCollection" - } - } - } + "204": { + "description": "No content" } }, "deprecated": false, "x-appwrite": { - "method": "getCollectionUsage", - "group": null, + "method": "deleteIndex", + "group": "indexes", "cookies": false, "type": "", - "demo": "vectorsdb\/get-collection-usage.md", + "demo": "vectorsdb\/delete-index.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\/vectorsdb\/get-collection-usage.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vectorsdb\/delete-index.md", "auth": { "Project": [] } }, "security": [ { - "Project": [] + "Project": [], + "Key": [] } ], "parameters": [ @@ -84935,145 +90837,24 @@ }, "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.", + "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": "<COLLECTION_ID>" }, "in": "path" - } - ] - } - }, - "\/vectorsdb\/{databaseId}\/usage": { - "get": { - "summary": "Get VectorsDB usage stats", - "operationId": "vectorsDBGetUsage", - "tags": [ - "vectorsDB" - ], - "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": "UsageVectorsDB", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/usageVectorsDB" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "getUsage", - "group": null, - "cookies": false, - "type": "", - "demo": "vectorsdb\/get-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\/vectorsdb\/get-database-usage.md", - "methods": [ - { - "name": "getUsage", - "namespace": "vectorsDB", - "desc": "", - "auth": { - "Project": [] - }, - "parameters": [ - "databaseId", - "range" - ], - "required": [ - "databaseId" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/usageVectorsDB" - } - ], - "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": "vectorsdb\/get-usage.md", - "public": true - } - ], - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [] - } - ], - "parameters": [ + }, { - "name": "databaseId", - "description": "Database ID.", + "name": "key", + "description": "Index Key.", "required": true, "schema": { - "type": "string", - "x-example": "<DATABASE_ID>" + "type": "string" }, "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" } ] } @@ -85661,6 +91442,10 @@ "name": "messaging", "description": "The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.)." }, + { + "name": "notifications", + "description": "The Notifications service allows you to read and manage your Appwrite Console notifications." + }, { "name": "advisor", "description": "The Advisor service surfaces actionable reports about your project resources, with CTA descriptors for one-click remediation in the console." @@ -85986,6 +91771,34 @@ "identities": "" } }, + "notificationList": { + "description": "Notifications List", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of notifications that matched your query.", + "x-example": 5, + "format": "int32" + }, + "notifications": { + "type": "array", + "description": "List of notifications.", + "items": { + "$ref": "#\/components\/schemas\/notification" + }, + "x-example": "" + } + }, + "required": [ + "total", + "notifications" + ], + "example": { + "total": 5, + "notifications": "" + } + }, "logList": { "description": "Logs List", "type": "object", @@ -87014,6 +92827,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", @@ -87446,6 +93279,17 @@ "vectorsdb" ] }, + "status": { + "type": "string", + "description": "Database status. Possible values: `provisioning`, `ready` or `failed`", + "x-example": "ready", + "enum": [ + "provisioning", + "ready", + "failed" + ], + "x-enum-name": "DatabaseStatus" + }, "policies": { "type": "array", "description": "Database backup policies.", @@ -87470,6 +93314,7 @@ "$updatedAt", "enabled", "type", + "status", "policies", "archives" ], @@ -87480,6 +93325,7 @@ "$updatedAt": "2020-10-15T06:38:00.000+00:00", "enabled": false, "type": "legacy", + "status": "ready", "policies": {}, "archives": {} } @@ -89675,113 +95521,6 @@ "encrypt": false } }, - "usageDocumentsDB": { - "description": "UsageDocumentsDB", - "type": "object", - "properties": { - "range": { - "type": "string", - "description": "Time range of the usage stats.", - "x-example": "30d" - }, - "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 storage used in bytes.", - "x-example": 0, - "format": "int32" - }, - "databaseReadsTotal": { - "type": "integer", - "description": "Total number of database reads.", - "x-example": 0, - "format": "int32" - }, - "databaseWritesTotal": { - "type": "integer", - "description": "Total number of database writes.", - "x-example": 0, - "format": "int32" - }, - "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": "Aggregated storage used in bytes per period.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "databaseReads": { - "type": "array", - "description": "An array of aggregated number of database reads.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "databaseWrites": { - "type": "array", - "description": "An array of aggregated number of database writes.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - } - }, - "required": [ - "range", - "collectionsTotal", - "documentsTotal", - "storageTotal", - "databaseReadsTotal", - "databaseWritesTotal", - "collections", - "documents", - "storage", - "databaseReads", - "databaseWrites" - ], - "example": { - "range": "30d", - "collectionsTotal": 0, - "documentsTotal": 0, - "storageTotal": 0, - "databaseReadsTotal": 0, - "databaseWritesTotal": 0, - "collections": [], - "documents": [], - "storage": [], - "databaseReads": [], - "databaseWrites": [] - } - }, "vectorsdbCollection": { "description": "VectorsDB Collection", "type": "object", @@ -90069,238 +95808,6 @@ "size": 1536 } }, - "usageVectorsDBs": { - "description": "UsageVectorsDBs", - "type": "object", - "properties": { - "range": { - "type": "string", - "description": "Time range of the usage stats.", - "x-example": "30d" - }, - "databasesTotal": { - "type": "integer", - "description": "Total aggregated number of VectorsDB 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 storage in bytes.", - "x-example": 0, - "format": "int32" - }, - "databasesReadsTotal": { - "type": "integer", - "description": "Total number of database reads.", - "x-example": 0, - "format": "int32" - }, - "databasesWritesTotal": { - "type": "integer", - "description": "Total number of database 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": "Aggregated 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": [] - } - }, - "usageVectorsDB": { - "description": "UsageVectorsDB", - "type": "object", - "properties": { - "range": { - "type": "string", - "description": "Time range of the usage stats.", - "x-example": "30d" - }, - "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 storage used in bytes.", - "x-example": 0, - "format": "int32" - }, - "databaseReadsTotal": { - "type": "integer", - "description": "Total number of database reads.", - "x-example": 0, - "format": "int32" - }, - "databaseWritesTotal": { - "type": "integer", - "description": "Total number of database writes.", - "x-example": 0, - "format": "int32" - }, - "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": "Aggregated storage used in bytes per period.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "databaseReads": { - "type": "array", - "description": "An array of aggregated number of database reads.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - }, - "databaseWrites": { - "type": "array", - "description": "An array of aggregated number of database writes.", - "items": { - "$ref": "#\/components\/schemas\/metric" - }, - "x-example": [] - } - }, - "required": [ - "range", - "collectionsTotal", - "documentsTotal", - "storageTotal", - "databaseReadsTotal", - "databaseWritesTotal", - "collections", - "documents", - "storage", - "databaseReads", - "databaseWrites" - ], - "example": { - "range": "30d", - "collectionsTotal": 0, - "documentsTotal": 0, - "storageTotal": 0, - "databaseReadsTotal": 0, - "databaseWritesTotal": 0, - "collections": [], - "documents": [], - "storage": [], - "databaseReads": [], - "databaseWrites": [] - } - }, "table": { "description": "Table", "type": "object", @@ -92888,7 +98395,7 @@ }, "userType": { "type": "string", - "description": "User type who triggered the audit log. Possible values: user, admin, guest, keyProject, keyAccount, keyOrganization.", + "description": "User type who triggered the audit log. Possible values: user, admin, guest, hidden, keyProject, keyAccount, keyOrganization.", "x-example": "user" }, "ip": { @@ -93779,6 +99286,128 @@ "providerRefreshToken": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3" } }, + "notification": { + "description": "Notification", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Notification ID.", + "x-example": "5e5ea5c16897e" + }, + "$createdAt": { + "type": "string", + "description": "Notification creation date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "$updatedAt": { + "type": "string", + "description": "Notification update date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "messageId": { + "type": "string", + "description": "Stable message ID used for dedup.", + "x-example": "session.create", + "nullable": true + }, + "type": { + "type": "string", + "description": "Notification type: info, warning, error.", + "x-example": "info" + }, + "channel": { + "type": "string", + "description": "Channel: email, sms, push, console, webhook.", + "x-example": "email" + }, + "resourceType": { + "type": "string", + "description": "Resource type this notification is addressed to.", + "x-example": "users" + }, + "resourceId": { + "type": "string", + "description": "Resource ID this notification is addressed to.", + "x-example": "5e5bb8c16897e" + }, + "parentResourceType": { + "type": "string", + "description": "Parent resource type for the notification.", + "x-example": "projects" + }, + "parentResourceId": { + "type": "string", + "description": "Parent resource ID for the notification.", + "x-example": "5e5bb8c16897e" + }, + "projectId": { + "type": "string", + "description": "Project the notification pertains to.", + "x-example": "5e5bb8c16897e", + "nullable": true + }, + "title": { + "type": "string", + "description": "Notification title.", + "x-example": "New sign-in detected" + }, + "body": { + "type": "string", + "description": "Notification body.", + "x-example": "A new device signed in to your account." + }, + "read": { + "type": "boolean", + "description": "Whether the notification has been read.", + "x-example": false, + "nullable": true + }, + "firstSeen": { + "type": "string", + "description": "First time the notification was viewed from a notification logo.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true + }, + "lastSeen": { + "type": "string", + "description": "Most recent time the notification was viewed from a notification logo.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true + } + }, + "required": [ + "$id", + "$createdAt", + "$updatedAt", + "type", + "channel", + "resourceType", + "resourceId", + "parentResourceType", + "parentResourceId", + "title", + "body" + ], + "example": { + "$id": "5e5ea5c16897e", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "$updatedAt": "2020-10-15T06:38:00.000+00:00", + "messageId": "session.create", + "type": "info", + "channel": "email", + "resourceType": "users", + "resourceId": "5e5bb8c16897e", + "parentResourceType": "projects", + "parentResourceId": "5e5bb8c16897e", + "projectId": "5e5bb8c16897e", + "title": "New sign-in detected", + "body": "A new device signed in to your account.", + "read": false, + "firstSeen": "2020-10-15T06:38:00.000+00:00", + "lastSeen": "2020-10-15T06:38:00.000+00:00" + } + }, "token": { "description": "Token", "type": "object", @@ -93848,65 +99477,6 @@ "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" } }, - "locale": { - "description": "Locale", - "type": "object", - "properties": { - "ip": { - "type": "string", - "description": "User IP address.", - "x-example": "127.0.0.1" - }, - "countryCode": { - "type": "string", - "description": "Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format", - "x-example": "US" - }, - "country": { - "type": "string", - "description": "Country name. This field support localization.", - "x-example": "United States" - }, - "continentCode": { - "type": "string", - "description": "Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.", - "x-example": "NA" - }, - "continent": { - "type": "string", - "description": "Continent name. This field support localization.", - "x-example": "North America" - }, - "eu": { - "type": "boolean", - "description": "True if country is part of the European Union.", - "x-example": false - }, - "currency": { - "type": "string", - "description": "Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format", - "x-example": "USD" - } - }, - "required": [ - "ip", - "countryCode", - "country", - "continentCode", - "continent", - "eu", - "currency" - ], - "example": { - "ip": "127.0.0.1", - "countryCode": "US", - "country": "United States", - "continentCode": "NA", - "continent": "North America", - "eu": false, - "currency": "USD" - } - }, "localeCode": { "description": "LocaleCode", "type": "object", @@ -96598,6 +102168,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 +102346,7 @@ "pingedAt", "labels", "status", + "onboarding", "authMethods", "services", "protocols", @@ -96800,6 +102377,7 @@ "vip" ], "status": "active", + "onboarding": [], "authMethods": {}, "services": {}, "protocols": {}, @@ -98747,6 +104325,29 @@ "type": "string", "description": "OpenID Connect user info endpoint URL.", "x-example": "https:\/\/myoauth.com\/oauth2\/userinfo" + }, + "prompt": { + "type": "array", + "description": "OpenID Connect prompt values controlling the authentication and consent screens.", + "items": { + "type": "string", + "enum": [ + "none", + "login", + "consent", + "select_account" + ] + }, + "x-example": [ + "consent" + ] + }, + "maxAge": { + "type": "integer", + "description": "Maximum authentication age in seconds. When set, the user must have authenticated within this many seconds.", + "x-example": 3600, + "format": "int32", + "nullable": true } }, "required": [ @@ -98757,7 +104358,8 @@ "wellKnownURL", "authorizationURL", "tokenURL", - "userInfoURL" + "userInfoURL", + "prompt" ], "example": { "$id": "github", @@ -98767,7 +104369,11 @@ "wellKnownURL": "https:\/\/myoauth.com\/.well-known\/openid-configuration", "authorizationURL": "https:\/\/myoauth.com\/oauth2\/authorize", "tokenURL": "https:\/\/myoauth.com\/oauth2\/token", - "userInfoURL": "https:\/\/myoauth.com\/oauth2\/userinfo" + "userInfoURL": "https:\/\/myoauth.com\/oauth2\/userinfo", + "prompt": [ + "consent" + ], + "maxAge": 3600 } }, "oAuth2Okta": { @@ -102408,20 +108014,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 +108126,6 @@ "backupsStorageTotal", "screenshotsGenerated", "screenshotsGeneratedTotal", - "imagineCredits", - "imagineCreditsTotal", "realtimeConnectionsTotal", "realtimeMessagesTotal", "realtimeBandwidthTotal", @@ -102612,8 +108202,6 @@ "backupsStorageTotal": 0, "screenshotsGenerated": [], "screenshotsGeneratedTotal": 0, - "imagineCredits": [], - "imagineCreditsTotal": 0, "realtimeConnectionsTotal": 0, "realtimeMessagesTotal": 0, "realtimeBandwidthTotal": 0, @@ -102899,6 +108487,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 +110339,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 +110359,7 @@ "time", "projectId", "teamId", - "hostname", - "countryCode", - "countryName" + "hostname" ], "example": { "$id": "5e5ea5c16897e", @@ -104758,9 +110379,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": { @@ -105425,22 +111044,26 @@ "startedAt": { "type": "string", "description": "Backup start time in ISO 8601 format.", - "x-example": "2020-10-15T06:38:00.000+00:00" + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true }, "completedAt": { "type": "string", "description": "Backup completion time in ISO 8601 format.", - "x-example": "2020-10-15T06:38:00.000+00:00" + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true }, "verifiedAt": { "type": "string", "description": "Backup verification time in ISO 8601 format.", - "x-example": "2020-10-15T06:38:00.000+00:00" + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true }, "expiresAt": { "type": "string", "description": "Backup expiration time in ISO 8601 format.", - "x-example": "2020-10-15T06:38:00.000+00:00" + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true }, "error": { "type": "string", @@ -105458,10 +111081,6 @@ "type", "status", "sizeBytes", - "startedAt", - "completedAt", - "verifiedAt", - "expiresAt", "error" ], "example": { @@ -105891,10 +111510,16 @@ "x-example": 5, "format": "int32" }, - "logs": { + "activityLogs": { "type": "integer", - "description": "Log days", - "x-example": 25, + "description": "Activity log days", + "x-example": 7, + "format": "int32" + }, + "usageLogs": { + "type": "integer", + "description": "Usage history days", + "x-example": 30, "format": "int32" }, "projectInactivityDays": { @@ -106088,6 +111713,17 @@ } ], "nullable": true + }, + "dedicatedDatabases": { + "type": "object", + "description": "Dedicated database limits available to this plan.", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/billingPlanDedicatedDatabaseLimits" + } + ], + "nullable": true } }, "required": [ @@ -106124,7 +111760,8 @@ "topics", "authPhone", "domains", - "logs", + "activityLogs", + "usageLogs", "projectInactivityDays", "alertLimit", "usage", @@ -106189,7 +111826,8 @@ "topics": 1, "authPhone": 10, "domains": 5, - "logs": 25, + "activityLogs": 7, + "usageLogs": 30, "projectInactivityDays": 7, "alertLimit": 80, "usage": null, @@ -106220,7 +111858,8 @@ "databasesAllowEncrypt": false, "limits": null, "group": "pro", - "program": null + "program": null, + "dedicatedDatabases": null } }, "billingPlanAddon": { @@ -106351,6 +111990,204 @@ "dailyCredits": 5 } }, + "billingPlanDedicatedDatabaseLimits": { + "description": "dedicatedDatabaseLimits", + "type": "object", + "properties": { + "minCpu": { + "type": "integer", + "description": "Minimum CPU allocation in millicores.", + "x-example": 125, + "format": "int32", + "nullable": true + }, + "maxCpu": { + "type": "integer", + "description": "Maximum CPU allocation in millicores.", + "x-example": 16000, + "format": "int32", + "nullable": true + }, + "minMemoryMb": { + "type": "integer", + "description": "Minimum memory allocation in megabytes.", + "x-example": 128, + "format": "int32", + "nullable": true + }, + "maxMemoryMb": { + "type": "integer", + "description": "Maximum memory allocation in megabytes.", + "x-example": 65536, + "format": "int32", + "nullable": true + }, + "minStorageGb": { + "type": "integer", + "description": "Minimum storage allocation in gigabytes.", + "x-example": 1, + "format": "int32", + "nullable": true + }, + "maxStorageGb": { + "type": "integer", + "description": "Maximum storage allocation in gigabytes.", + "x-example": 16384, + "format": "int32", + "nullable": true + }, + "maxDatabasesPerProject": { + "type": "integer", + "description": "Maximum number of dedicated databases per project.", + "x-example": 10, + "format": "int32", + "nullable": true + }, + "maxReplicas": { + "type": "integer", + "description": "Maximum number of high-availability replicas per dedicated database.", + "x-example": 5, + "format": "int32", + "nullable": true + }, + "maxConnections": { + "type": "integer", + "description": "Maximum number of client connections.", + "x-example": 10000, + "format": "int32", + "nullable": true + }, + "maxIpAllowlistSize": { + "type": "integer", + "description": "Maximum number of entries allowed in the IP allowlist.", + "x-example": 100, + "format": "int32", + "nullable": true + }, + "maxExtensions": { + "type": "integer", + "description": "Maximum number of database extensions that can be enabled.", + "x-example": 50, + "format": "int32", + "nullable": true + }, + "maxBackupRetentionDays": { + "type": "integer", + "description": "Maximum number of days a backup can be retained.", + "x-example": 365, + "format": "int32", + "nullable": true + }, + "maxPitrRetentionDays": { + "type": "integer", + "description": "Maximum number of days of point-in-time recovery data that can be retained.", + "x-example": 35, + "format": "int32", + "nullable": true + }, + "maxSqlApiMaxRows": { + "type": "integer", + "description": "Maximum number of rows a single SQL API query can return.", + "x-example": 1000000, + "format": "int32", + "nullable": true + }, + "maxSqlApiMaxBytes": { + "type": "integer", + "description": "Maximum response size in bytes for a single SQL API query.", + "x-example": 104857600, + "format": "int32", + "nullable": true + }, + "maxSqlApiTimeoutSeconds": { + "type": "integer", + "description": "Maximum execution time in seconds for a single SQL API query.", + "x-example": 300, + "format": "int32", + "nullable": true + }, + "maxSqlApiAllowedStatements": { + "type": "integer", + "description": "Maximum number of SQL statement types that can be permitted through the SQL API.", + "x-example": 10, + "format": "int32", + "nullable": true + }, + "allowedSqlStatements": { + "type": "array", + "description": "SQL statement types permitted through the SQL API.", + "items": { + "type": "string" + }, + "x-example": [ + "select", + "insert", + "update", + "delete", + "explain" + ], + "nullable": true + }, + "allowedStorageClasses": { + "type": "array", + "description": "Storage classes available for dedicated databases.", + "items": { + "type": "string" + }, + "x-example": [ + "ssd" + ], + "nullable": true + }, + "allowedSyncModes": { + "type": "array", + "description": "Replica synchronization modes available for dedicated databases.", + "items": { + "type": "string" + }, + "x-example": [ + "async", + "sync", + "quorum" + ], + "nullable": true + } + }, + "example": { + "minCpu": 125, + "maxCpu": 16000, + "minMemoryMb": 128, + "maxMemoryMb": 65536, + "minStorageGb": 1, + "maxStorageGb": 16384, + "maxDatabasesPerProject": 10, + "maxReplicas": 5, + "maxConnections": 10000, + "maxIpAllowlistSize": 100, + "maxExtensions": 50, + "maxBackupRetentionDays": 365, + "maxPitrRetentionDays": 35, + "maxSqlApiMaxRows": 1000000, + "maxSqlApiMaxBytes": 104857600, + "maxSqlApiTimeoutSeconds": 300, + "maxSqlApiAllowedStatements": 10, + "allowedSqlStatements": [ + "select", + "insert", + "update", + "delete", + "explain" + ], + "allowedStorageClasses": [ + "ssd" + ], + "allowedSyncModes": [ + "async", + "sync", + "quorum" + ] + } + }, "billingPlanSupportedAddons": { "description": "BillingPlanSupportedAddons", "type": "object", @@ -106359,13 +112196,27 @@ "type": "boolean", "description": "Whether the plan supports BAA (Business Associate Agreement) addon", "x-example": true + }, + "premiumGeoDB": { + "type": "boolean", + "description": "Whether the plan supports Premium Geo DB addon (project-level)", + "x-example": true + }, + "premiumGeoDBOrg": { + "type": "boolean", + "description": "Whether the plan supports Premium Geo DB addon (organization-level)", + "x-example": true } }, "required": [ - "baa" + "baa", + "premiumGeoDB", + "premiumGeoDBOrg" ], "example": { - "baa": true + "baa": true, + "premiumGeoDB": true, + "premiumGeoDBOrg": true } }, "block": { @@ -106387,6 +112238,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 +112285,7 @@ "$createdAt", "resourceType", "resourceId", + "mode", "projectName", "region", "organizationName", @@ -106439,6 +112296,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 +112392,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 +112426,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 +112547,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", @@ -106802,102 +112615,6 @@ "onlyNewOrgs": true } }, - "dedicatedDatabaseCredentials": { - "description": "Credentials", - "type": "object", - "properties": { - "$id": { - "type": "string", - "description": "Database ID.", - "x-example": "5e5ea5c16897e" - }, - "host": { - "type": "string", - "description": "Database hostname.", - "x-example": "db-myproject-mydb.fra.appwrite.center" - }, - "port": { - "type": "integer", - "description": "Database port.", - "x-example": 5432, - "format": "int32" - }, - "username": { - "type": "string", - "description": "Database username.", - "x-example": "appwrite" - }, - "password": { - "type": "string", - "description": "Database password.", - "x-example": "********" - }, - "database": { - "type": "string", - "description": "Database name.", - "x-example": "appwrite" - }, - "tcpHost": { - "type": "string", - "description": "Database TCP hostname or address.", - "x-example": "db-myproject-mydb.fra.appwrite.center" - }, - "tcpPort": { - "type": "integer", - "description": "Database TCP port.", - "x-example": 5432, - "format": "int32" - }, - "tcpDatabase": { - "type": "string", - "description": "Database name for direct TCP connections.", - "x-example": "appwrite" - }, - "engine": { - "type": "string", - "description": "Database engine. Possible values: postgres, mysql, mariadb, mongodb.", - "x-example": "postgres" - }, - "ssl": { - "type": "boolean", - "description": "Whether SSL is required.", - "x-example": false - }, - "connectionString": { - "type": "string", - "description": "Full connection string.", - "x-example": "postgresql:\/\/appwrite:****@db-myproject-mydb.fra.appwrite.center:5432\/appwrite?sslmode=disable" - } - }, - "required": [ - "$id", - "host", - "port", - "username", - "password", - "database", - "tcpHost", - "tcpPort", - "tcpDatabase", - "engine", - "ssl", - "connectionString" - ], - "example": { - "$id": "5e5ea5c16897e", - "host": "db-myproject-mydb.fra.appwrite.center", - "port": 5432, - "username": "appwrite", - "password": "********", - "database": "appwrite", - "tcpHost": "db-myproject-mydb.fra.appwrite.center", - "tcpPort": 5432, - "tcpDatabase": "appwrite", - "engine": "postgres", - "ssl": false, - "connectionString": "postgresql:\/\/appwrite:****@db-myproject-mydb.fra.appwrite.center:5432\/appwrite?sslmode=disable" - } - }, "credit": { "description": "Credit", "type": "object", @@ -107048,6 +112765,108 @@ "available": 5 } }, + "databaseMigration": { + "description": "Database Migration", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Database migration ID.", + "x-example": "5e5ea5c16897e" + }, + "$createdAt": { + "type": "string", + "description": "Migration creation time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "$updatedAt": { + "type": "string", + "description": "Migration update time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "projectId": { + "type": "string", + "description": "Project ID that owns the migrating database.", + "x-example": "5e5ea5c16897e" + }, + "databaseId": { + "type": "string", + "description": "Logical database ID being migrated.", + "x-example": "5e5ea5c16897e" + }, + "specification": { + "type": "string", + "description": "Dedicated compute specification provisioned for the migration target.", + "x-example": "s-2vcpu-4gb" + }, + "phase": { + "type": "string", + "description": "Migration phase. Possible values: pending, provisioned, capturing, backfilling, catching_up, verifying, ready_to_cutover, cutover, soaking, done, failed, rolled_back.", + "x-example": "pending" + }, + "lagDocuments": { + "type": "integer", + "description": "Number of documents still pending replication to the target.", + "x-example": 0, + "format": "int32" + }, + "verifiedAt": { + "type": "string", + "description": "Time the migrated data was verified against the source in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "cutoverAt": { + "type": "string", + "description": "Time routing was flipped to the target in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "soakUntil": { + "type": "string", + "description": "Time the post-cutover soak window ends in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "autoCutover": { + "type": "boolean", + "description": "Whether the migration cuts over automatically once ready.", + "x-example": true + }, + "paused": { + "type": "boolean", + "description": "Whether the migration is paused.", + "x-example": false + } + }, + "required": [ + "$id", + "$createdAt", + "$updatedAt", + "projectId", + "databaseId", + "specification", + "phase", + "lagDocuments", + "verifiedAt", + "cutoverAt", + "soakUntil", + "autoCutover", + "paused" + ], + "example": { + "$id": "5e5ea5c16897e", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "$updatedAt": "2020-10-15T06:38:00.000+00:00", + "projectId": "5e5ea5c16897e", + "databaseId": "5e5ea5c16897e", + "specification": "s-2vcpu-4gb", + "phase": "pending", + "lagDocuments": 0, + "verifiedAt": "2020-10-15T06:38:00.000+00:00", + "cutoverAt": "2020-10-15T06:38:00.000+00:00", + "soakUntil": "2020-10-15T06:38:00.000+00:00", + "autoCutover": true, + "paused": false + } + }, "dedicatedDatabase": { "description": "DedicatedDatabase", "type": "object", @@ -107079,13 +112898,13 @@ }, "api": { "type": "string", - "description": "Product API that owns this database: compute, documentsdb, or vectorsdb.", - "x-example": "compute" + "description": "Product API that owns this database: nativedb, documentsdb, or vectorsdb.", + "x-example": "nativedb" }, "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", @@ -107141,12 +112960,19 @@ "lastAccessedAt": { "type": "string", "description": "Last activity timestamp in ISO 8601 format.", - "x-example": "2020-10-15T06:38:00.000+00:00" + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true }, "idleUntil": { "type": "string", - "description": "Timestamp when container will be considered idle and scale to zero (ISO 8601 format).", - "x-example": "2020-10-15T06:38:00.000+00:00" + "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", + "nullable": true + }, + "lifecycleState": { + "type": "string", + "description": "Idle-lifecycle state of the database. Possible values: active, warm, cold, hibernated.", + "x-example": "active" }, "idleTimeoutMinutes": { "type": "integer", @@ -107194,7 +113020,7 @@ "x-example": 2, "format": "int32" }, - "highAvailabilitySyncMode": { + "syncMode": { "type": "string", "description": "Replication sync mode: async, sync, or quorum.", "x-example": "async" @@ -107227,22 +113053,11 @@ "description": "Whether automatic backups are enabled.", "x-example": true }, - "backupPitr": { + "pitr": { "type": "boolean", "description": "Whether point-in-time recovery is enabled.", "x-example": true }, - "backupCron": { - "type": "string", - "description": "Backup schedule in cron format.", - "x-example": "0 3 * * *" - }, - "backupRetentionDays": { - "type": "integer", - "description": "Number of days to retain backups.", - "x-example": 30, - "format": "int32" - }, "pitrRetentionDays": { "type": "integer", "description": "Number of days to retain PITR data.", @@ -107337,8 +113152,7 @@ "connectionString", "status", "containerStatus", - "lastAccessedAt", - "idleUntil", + "lifecycleState", "idleTimeoutMinutes", "cpu", "memory", @@ -107347,14 +113161,12 @@ "storageMaxGb", "nodePool", "replicas", - "highAvailabilitySyncMode", + "syncMode", "networkMaxConnections", "networkIdleTimeoutSeconds", "networkIPAllowlist", "backupEnabled", - "backupPitr", - "backupCron", - "backupRetentionDays", + "pitr", "pitrRetentionDays", "storageAutoscaling", "storageAutoscalingThresholdPercent", @@ -107375,8 +113187,8 @@ "$updatedAt": "2020-10-15T06:38:00.000+00:00", "projectId": "5e5ea5c16897e", "name": "My Production Database", - "api": "compute", - "engine": "postgres", + "api": "nativedb", + "engine": "postgresql", "version": "16", "specification": "s-2vcpu-2gb", "backend": "edge", @@ -107389,6 +113201,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, @@ -107397,7 +113210,7 @@ "storageMaxGb": 100, "nodePool": "db-pool-4vcpu-8gb", "replicas": 2, - "highAvailabilitySyncMode": "async", + "syncMode": "async", "networkMaxConnections": 500, "networkIdleTimeoutSeconds": 900, "networkIPAllowlist": [ @@ -107405,9 +113218,7 @@ "192.168.1.0\/24" ], "backupEnabled": true, - "backupPitr": true, - "backupCron": "0 3 * * *", - "backupRetentionDays": 30, + "pitr": true, "pitrRetentionDays": 14, "storageAutoscaling": true, "storageAutoscalingThresholdPercent": 85, @@ -107619,8 +113430,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 +113507,7 @@ "example": { "health": "healthy", "ready": true, - "engine": "postgres", + "engine": "postgresql", "version": "17", "uptime": 86400, "connections": { @@ -108565,24 +114376,24 @@ ] } }, - "dedicatedDatabaseHAReplica": { - "description": "HAReplica", + "dedicatedDatabaseMember": { + "description": "Member", "type": "object", "properties": { "$id": { "type": "string", - "description": "Replica identifier.", - "x-example": "replica-1" + "description": "Member identifier.", + "x-example": "1" }, "role": { "type": "string", - "description": "Replica role. Possible values: primary (accepts reads and writes), replica (read-only follower).", + "description": "Member role. Possible values: primary (accepts reads and writes), replica (read-only follower).", "x-example": "replica" }, "status": { "type": "string", - "description": "Replica health status. Possible values: healthy (fully synced), degraded (lagging behind primary), unhealthy (replication broken or unreachable).", - "x-example": "healthy" + "description": "Member pod status. Possible values: active (running), pending, notFound (pod missing), or the lowercased pod phase reported by the cluster.", + "x-example": "active" }, "lagSeconds": { "type": "number", @@ -108598,24 +114409,19 @@ "lagSeconds" ], "example": { - "$id": "replica-1", + "$id": "1", "role": "replica", - "status": "healthy", + "status": "active", "lagSeconds": 0.5 } }, - "dedicatedDatabaseHAStatus": { - "description": "HAStatus", + "dedicatedDatabaseReplicas": { + "description": "Replicas", "type": "object", "properties": { - "enabled": { - "type": "boolean", - "description": "Whether high availability is enabled.", - "x-example": true - }, - "replicaCount": { + "replicas": { "type": "integer", - "description": "Number of configured replicas.", + "description": "Number of configured replicas. Zero means high availability is disabled.", "x-example": 2, "format": "int32" }, @@ -108624,26 +114430,24 @@ "description": "Replication sync mode. Possible values: async (asynchronous, fastest), sync (synchronous, strong consistency), quorum (quorum-based, majority of replicas must confirm).", "x-example": "async" }, - "replicas": { + "members": { "type": "array", - "description": "List of replica statuses.", + "description": "Per-pod statuses for the primary and every replica.", "items": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseHAReplica" + "$ref": "#\/components\/schemas\/dedicatedDatabaseMember" }, "x-example": [] } }, "required": [ - "enabled", - "replicaCount", + "replicas", "syncMode", - "replicas" + "members" ], "example": { - "enabled": true, - "replicaCount": 2, + "replicas": 2, "syncMode": "async", - "replicas": [] + "members": [] } }, "invoice": { @@ -109154,6 +114958,11 @@ "type": "string", "description": "Addon ID to use when calling the addon validate endpoint. Empty when authentication is not for an addon.", "x-example": "" + }, + "projectId": { + "type": "string", + "description": "Project ID for project-level addon payments. Empty for organization-level addons.", + "x-example": "" } }, "required": [ @@ -109161,14 +114970,16 @@ "clientSecret", "organizationId", "invoiceId", - "addonId" + "addonId", + "projectId" ], "example": { "message": "", "clientSecret": "", "organizationId": "", "invoiceId": "", - "addonId": "" + "addonId": "", + "projectId": "" } }, "paymentMethod": { @@ -109902,6 +115713,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 +115824,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", @@ -110117,7 +115939,7 @@ "options": { "type": "string", "description": "Optional data in key-value object. ", - "x-example": "{databases.database[{oldId, newId, newName}]}" + "x-example": "{databases.database[{oldId, newId, newName, newSpecification}]}" } }, "required": [ @@ -110144,7 +115966,7 @@ "migrationId": "did8jx6ws45jana098ab7", "services": "['databases', 'storage']", "resources": "['databases', 'collections', 'attributes', 'indexes']", - "options": "{databases.database[{oldId, newId, newName}]}" + "options": "{databases.database[{oldId, newId, newName, newSpecification}]}" } }, "dedicatedDatabaseRestorationList": { @@ -110243,53 +116065,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", @@ -110425,7 +116200,7 @@ "x-example": 0.08, "format": "double" }, - "haReplicaRate": { + "replicaRate": { "type": "number", "description": "High availability replica price as a fraction of the specification cost.", "x-example": 0.5, @@ -110453,7 +116228,7 @@ "required": [ "storageOverageRate", "bandwidthOverageRate", - "haReplicaRate", + "replicaRate", "crossRegionReplicaRate", "crossRegionRate", "pitrRate" @@ -110461,7 +116236,7 @@ "example": { "storageOverageRate": 0.125, "bandwidthOverageRate": 0.08, - "haReplicaRate": 0.5, + "replicaRate": 0.5, "crossRegionReplicaRate": 0.75, "crossRegionRate": 0.5, "pitrRate": 0.2 @@ -110571,6 +116346,144 @@ "mounted": true } }, + "cloudLocale": { + "description": "Locale", + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "User IP address.", + "x-example": "127.0.0.1" + }, + "countryCode": { + "type": "string", + "description": "Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format", + "x-example": "US" + }, + "country": { + "type": "string", + "description": "Country name. This field support localization.", + "x-example": "United States" + }, + "continentCode": { + "type": "string", + "description": "Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.", + "x-example": "NA" + }, + "continent": { + "type": "string", + "description": "Continent name. This field support localization.", + "x-example": "North America" + }, + "eu": { + "type": "boolean", + "description": "True if country is part of the European Union.", + "x-example": false + }, + "currency": { + "type": "string", + "description": "Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format", + "x-example": "USD" + }, + "city": { + "type": "string", + "description": "City", + "x-example": "Kathmandu", + "nullable": true + }, + "timeZone": { + "type": "string", + "description": "Name of timezone", + "x-example": "Asia\/Kathmandu", + "nullable": true + }, + "postalCode": { + "type": "string", + "description": "Postal code", + "x-example": "44600", + "nullable": true + }, + "latitude": { + "type": "number", + "description": "Latitude", + "x-example": "82.345", + "format": "double", + "nullable": true + }, + "longitude": { + "type": "number", + "description": "Longitude", + "x-example": "82.345", + "format": "double", + "nullable": true + }, + "autonomousSystemNumber": { + "type": "string", + "description": "Autonomous System Number (ASN) of the IP", + "x-example": "15169", + "nullable": true + }, + "autonomousSystemOrganization": { + "type": "string", + "description": "Organization that owns the ASN", + "x-example": "GOOGLE", + "nullable": true + }, + "isp": { + "type": "string", + "description": "Internet service provider of the IP", + "x-example": "Google", + "nullable": true + }, + "connectionType": { + "type": "string", + "description": "Connection type of the IP (e.g. cable, cellular, corporate)", + "x-example": "cable", + "nullable": true + }, + "connectionUsageType": { + "type": "string", + "description": "User type classification of the IP (e.g. residential, business, hosting)", + "x-example": "residential", + "nullable": true + }, + "connectionOrganization": { + "type": "string", + "description": "Registered organization of the IP", + "x-example": "Google LLC", + "nullable": true + } + }, + "required": [ + "ip", + "countryCode", + "country", + "continentCode", + "continent", + "eu", + "currency" + ], + "example": { + "ip": "127.0.0.1", + "countryCode": "US", + "country": "United States", + "continentCode": "NA", + "continent": "North America", + "eu": false, + "currency": "USD", + "city": "Kathmandu", + "timeZone": "Asia\/Kathmandu", + "postalCode": "44600", + "latitude": "82.345", + "longitude": "82.345", + "autonomousSystemNumber": "15169", + "autonomousSystemOrganization": "GOOGLE", + "isp": "Google", + "connectionType": "cable", + "connectionUsageType": "residential", + "connectionOrganization": "Google LLC" + } + }, "usageBillingPlan": { "description": "usageBillingPlan", "type": "object", @@ -110770,6 +116683,12 @@ "x-example": "app.example.com", "nullable": true }, + "ip": { + "type": "string", + "description": "Caller IP address when broken down by `ip`.", + "x-example": "192.0.2.44", + "nullable": true + }, "osName": { "type": "string", "description": "Operating system name when broken down by `osName`.", @@ -110806,10 +116725,10 @@ "x-example": "abc123", "nullable": true }, - "resource": { + "resourceType": { "type": "string", - "description": "Resource type when broken down by `resource` (gauges only).", - "x-example": "file", + "description": "Resource type when broken down by `resourceType`.", + "x-example": "bucket", "nullable": true } }, @@ -110827,13 +116746,14 @@ "country": "us", "region": "fra", "hostname": "app.example.com", + "ip": "192.0.2.44", "osName": "iOS", "clientType": "browser", "clientName": "Chrome", "deviceName": "smartphone", "teamId": "team_abc", "resourceId": "abc123", - "resource": "file" + "resourceType": "bucket" } }, "usageEventList": { @@ -110989,20 +116909,6 @@ "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.", @@ -111148,8 +117054,6 @@ "imageTransformationsTotal", "screenshotsGenerated", "screenshotsGeneratedTotal", - "imagineCredits", - "imagineCreditsTotal", "usersTotal", "executionsTotal", "executionsMBSecondsTotal", @@ -111182,8 +117086,6 @@ "imageTransformationsTotal": 0, "screenshotsGenerated": [], "screenshotsGeneratedTotal": 0, - "imagineCredits": [], - "imagineCreditsTotal": 0, "usersTotal": 0, "executionsTotal": 0, "executionsMBSecondsTotal": 0, @@ -111324,12 +117226,6 @@ "x-example": 0, "format": "int32" }, - "imagineCredits": { - "type": "integer", - "description": "Aggregated stats for imagine credits.", - "x-example": 0, - "format": "int32" - }, "realtimeConnections": { "type": "integer", "description": "Aggregated stats for realtime connections.", @@ -111367,7 +117263,6 @@ "imageTransformationsTotal", "screenshotsGenerated", "screenshotsGeneratedTotal", - "imagineCredits", "realtimeConnections", "realtimeMessages", "realtimeBandwidth" @@ -111390,7 +117285,6 @@ "imageTransformationsTotal": 0, "screenshotsGenerated": [], "screenshotsGeneratedTotal": 0, - "imagineCredits": 0, "realtimeConnections": 0, "realtimeMessages": 0, "realtimeBandwidth": 0 @@ -111432,6 +117326,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 +117344,9 @@ "amount", "rate", "desc", - "resourceId" + "resourceId", + "type", + "specification" ], "example": { "name": "", @@ -111448,7 +117354,9 @@ "amount": 500, "rate": 12.5, "desc": "Your monthly recurring Pro plan.", - "resourceId": "" + "resourceId": "", + "type": "postgresql", + "specification": "s-2vcpu-2gb" } }, "app": { @@ -112033,6 +117941,31 @@ "interval": 5 } }, + "oauth2PAR": { + "description": "OAuth2 PAR", + "type": "object", + "properties": { + "request_uri": { + "type": "string", + "description": "Authorization request handle to pass to the authorize endpoint.", + "x-example": "urn:appwrite:oauth2:request:5e5ea5c16897e" + }, + "expires_in": { + "type": "integer", + "description": "Lifetime of the authorization request handle in seconds.", + "x-example": 600, + "format": "int32" + } + }, + "required": [ + "request_uri", + "expires_in" + ], + "example": { + "request_uri": "urn:appwrite:oauth2:request:5e5ea5c16897e", + "expires_in": 600 + } + }, "oauth2Token": { "description": "OAuth2 Token", "type": "object", @@ -112093,6 +118026,110 @@ "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." } }, + "oauth2Project": { + "description": "OAuth2 Project", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Project ID.", + "x-example": "5e5ea5c16897e" + }, + "region": { + "type": "string", + "description": "Region ID the project is deployed in.", + "x-example": "fra" + }, + "endpoint": { + "type": "string", + "description": "API endpoint of the region the project is deployed in. Empty when the region has no public hostname configured.", + "x-example": "https:\/\/fra.cloud.appwrite.io\/v1" + } + }, + "required": [ + "$id", + "region", + "endpoint" + ], + "example": { + "$id": "5e5ea5c16897e", + "region": "fra", + "endpoint": "https:\/\/fra.cloud.appwrite.io\/v1" + } + }, + "oauth2Organization": { + "description": "OAuth2 Organization", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Organization ID.", + "x-example": "5e5ea5c16897e" + } + }, + "required": [ + "$id" + ], + "example": { + "$id": "5e5ea5c16897e" + } + }, + "oauth2ProjectList": { + "description": "OAuth2 accessible projects list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of projects that matched your query.", + "x-example": 5, + "format": "int32" + }, + "projects": { + "type": "array", + "description": "List of projects.", + "items": { + "$ref": "#\/components\/schemas\/oauth2Project" + }, + "x-example": "" + } + }, + "required": [ + "total", + "projects" + ], + "example": { + "total": 5, + "projects": "" + } + }, + "oauth2OrganizationList": { + "description": "OAuth2 accessible organizations list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of organizations that matched your query.", + "x-example": 5, + "format": "int32" + }, + "organizations": { + "type": "array", + "description": "List of organizations.", + "items": { + "$ref": "#\/components\/schemas\/oauth2Organization" + }, + "x-example": "" + } + }, + "required": [ + "total", + "organizations" + ], + "example": { + "total": 5, + "organizations": "" + } + }, "activityEventList": { "description": "Activity event list", "type": "object", @@ -112373,60 +118410,32 @@ "blocks": "" } }, - "dedicatedDatabaseConnectionList": { - "description": "Dedicated database connections list", + "databaseMigrationList": { + "description": "Database Migrations 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.", + "description": "Total number of migrations that matched your query.", "x-example": 5, "format": "int32" }, - "slowQueries": { + "migrations": { "type": "array", - "description": "List of slowQueries.", + "description": "List of migrations.", "items": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseSlowQuery" + "$ref": "#\/components\/schemas\/databaseMigration" }, "x-example": "" } }, "required": [ "total", - "slowQueries" + "migrations" ], "example": { "total": 5, - "slowQueries": "" + "migrations": "" } }, "dedicatedDatabaseList": { @@ -112597,6 +118606,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", @@ -112721,6 +118758,12 @@ "demo": "<YOUR_JWT>" } }, + "Bearer": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "The OAuth access token to authenticate with" + }, "Locale": { "type": "apiKey", "name": "X-Appwrite-Locale", diff --git a/specs/1.9.x/open-api3-1.9.x-server.json b/specs/1.9.x/open-api3-1.9.x-server.json index afa3fdde..547deb69 100644 --- a/specs/1.9.x/open-api3-1.9.x-server.json +++ b/specs/1.9.x/open-api3-1.9.x-server.json @@ -3960,9 +3960,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 +4037,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 +4241,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 +4304,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 +4496,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 +4564,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 +4651,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 +4716,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 +4782,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 +4860,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 +4937,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", @@ -8060,7 +8060,7 @@ "tags": [ "backups" ], - "description": "Create and trigger a new restoration for a backup on a project.", + "description": "Create and trigger a new restoration for a backup on a project.\n\nWhen restoring a DocumentsDB or VectorsDB database to a new resource, pass `newSpecification` to provision the restored database on a different specification than the archived one (for example, restoring onto a larger or smaller dedicated database). Use `serverless` to restore onto the shared pool, or a dedicated specification slug to restore onto a dedicated database of that size. The specification must be permitted by the organization's plan. `newSpecification` is not supported for legacy\/TablesDB databases or for bucket restores.\n", "responses": { "201": { "description": "Restoration", @@ -8154,6 +8154,12 @@ "description": "Database name. Max length: 128 chars.", "default": "", "x-example": "<NEW_RESOURCE_NAME>" + }, + "newSpecification": { + "type": "string", + "description": "Specification to provision the restored database on, when restoring a DocumentsDB or VectorsDB database to a new resource. Defaults to the archived database's specification. Use `serverless` for the shared pool or a dedicated specification slug.", + "default": "", + "x-example": "serverless" } }, "required": [ @@ -16522,14 +16528,11 @@ "default": true, "x-example": false }, - "dedicatedDatabaseId": { + "specification": { "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": "<DEDICATED_DATABASE_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Database specification. Defaults to `serverless`, which creates the database on the shared pool. Any other value provisions a dedicated database on that specification.", + "default": "serverless", + "x-example": "serverless" } }, "required": [ @@ -19576,9 +19579,6 @@ "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", @@ -19673,9 +19673,6 @@ "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", @@ -19795,7 +19792,7 @@ }, "scopes": { "type": "array", - "description": "List of scopes allowed for API key auto-generated for every execution. Maximum of 100 scopes are allowed.", + "description": "List of scopes allowed for API key auto-generated for every execution. Maximum of 200 scopes are allowed.", "default": [], "x-example": null, "items": { @@ -19813,8 +19810,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 +19914,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", @@ -20360,9 +20365,6 @@ "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", @@ -20457,9 +20459,6 @@ "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", @@ -20579,7 +20578,7 @@ }, "scopes": { "type": "array", - "description": "List of scopes allowed for API Key auto-generated for every execution. Maximum of 100 scopes are allowed.", + "description": "List of scopes allowed for API Key auto-generated for every execution. Maximum of 200 scopes are allowed.", "default": [], "x-example": null, "items": { @@ -20597,8 +20596,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 +20700,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", @@ -23133,6 +23140,108 @@ ] } }, + "\/health\/geo": { + "get": { + "summary": "Get geo", + "operationId": "healthGetGeo", + "tags": [ + "health" + ], + "description": "Check the Appwrite geo service is up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getGeo", + "group": "health", + "cookies": false, + "type": "", + "demo": "health\/get-geo.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-geo.md", + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, + "\/health\/geo-premium": { + "get": { + "summary": "Get premium geo health", + "operationId": "healthGetGeoPremium", + "tags": [ + "health" + ], + "description": "Get the health status of the premium geo service. This endpoint probes the internal `appwrite-geo-premium` service used for premium IP-to-location lookups (organizations or projects on the premium geo DB addon) and returns a `pass` status when reachable.\n", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getGeoPremium", + "group": null, + "cookies": false, + "type": "", + "demo": "health\/get-geo-premium.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-geo-premium.md", + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/pubsub": { "get": { "summary": "Get pubsub", @@ -23713,7 +23822,8 @@ "v1-builds", "v1-screenshots", "v1-messaging", - "v1-migrations" + "v1-migrations", + "v1-notifications" ], "x-enum-name": "HealthQueueName", "x-enum-keys": [ @@ -23729,7 +23839,8 @@ "v1-builds", "v1-screenshots", "v1-messaging", - "v1-migrations" + "v1-migrations", + "v1-notifications" ] }, "in": "path" @@ -23812,70 +23923,6 @@ ] } }, - "\/health\/queue\/logs": { - "get": { - "summary": "Get logs queue", - "operationId": "healthGetQueueLogs", - "tags": [ - "health" - ], - "description": "Get the number of logs 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": "getQueueLogs", - "group": "queue", - "cookies": false, - "type": "", - "demo": "health\/get-queue-logs.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-logs.md", - "auth": { - "Project": [], - "Key": [] - } - }, - "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", @@ -24068,14 +24115,14 @@ ] } }, - "\/health\/queue\/region-manager": { + "\/health\/queue\/notifications": { "get": { - "summary": "Get region manager queue", - "operationId": "healthGetQueueRegionManager", + "summary": "Get notifications queue", + "operationId": "healthGetQueueNotifications", "tags": [ "health" ], - "description": "Get region manager queue.", + "description": "Get the number of jobs in the notifications queue.\n", "responses": { "200": { "description": "Health Queue", @@ -24090,11 +24137,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueRegionManager", - "group": null, + "method": "getQueueNotifications", + "group": "queue", "cookies": false, "type": "", - "demo": "health\/get-queue-region-manager.md", + "demo": "health\/get-queue-notifications.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -24105,7 +24152,7 @@ ], "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\/health\/get-queue-notifications.md", "auth": { "Project": [], "Key": [] @@ -24120,26 +24167,26 @@ "parameters": [ { "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 100.", + "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": 100 + "default": 5000 }, "in": "query" } ] } }, - "\/health\/queue\/stats-resources": { + "\/health\/queue\/region-manager": { "get": { - "summary": "Get stats resources queue", - "operationId": "healthGetQueueStatsResources", + "summary": "Get region manager queue", + "operationId": "healthGetQueueRegionManager", "tags": [ "health" ], - "description": "Get the number of metrics that are waiting to be processed in the Appwrite stats resources queue.", + "description": "Get region manager queue.", "responses": { "200": { "description": "Health Queue", @@ -24154,11 +24201,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueStatsResources", - "group": "queue", + "method": "getQueueRegionManager", + "group": null, "cookies": false, "type": "", - "demo": "health\/get-queue-stats-resources.md", + "demo": "health\/get-queue-region-manager.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -24169,7 +24216,7 @@ ], "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\/health\/get-queue-region-manager.md", "auth": { "Project": [], "Key": [] @@ -24184,26 +24231,26 @@ "parameters": [ { "name": "threshold", - "description": "Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.", + "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": 5000 + "default": 100 }, "in": "query" } ] } }, - "\/health\/queue\/stats-usage": { + "\/health\/queue\/stats-resources": { "get": { - "summary": "Get stats usage queue", - "operationId": "healthGetQueueUsage", + "summary": "Get stats resources queue", + "operationId": "healthGetQueueStatsResources", "tags": [ "health" ], - "description": "Get the number of metrics that are waiting to be processed in the Appwrite internal queue server.", + "description": "Get the number of metrics that are waiting to be processed in the Appwrite stats resources queue.", "responses": { "200": { "description": "Health Queue", @@ -24218,11 +24265,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "getQueueUsage", + "method": "getQueueStatsResources", "group": "queue", "cookies": false, "type": "", - "demo": "health\/get-queue-usage.md", + "demo": "health\/get-queue-stats-resources.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -24233,7 +24280,71 @@ ], "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\/health\/get-queue-stats-resources.md", + "auth": { + "Project": [], + "Key": [] + } + }, + "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\/stats-usage": { + "get": { + "summary": "Get stats usage queue", + "operationId": "healthGetQueueUsage", + "tags": [ + "health" + ], + "description": "Get the number of metrics 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": "getQueueUsage", + "group": "queue", + "cookies": false, + "type": "", + "demo": "health\/get-queue-usage.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-stats-usage.md", "auth": { "Project": [], "Key": [] @@ -24555,7 +24666,7 @@ "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/locale" + "$ref": "#\/components\/schemas\/cloudLocale" } } } @@ -26281,93 +26392,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 +29901,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", @@ -30431,93 +30281,6 @@ ] } }, - "\/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" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listTopicLogs", - "group": "topics", - "cookies": false, - "type": "", - "demo": "messaging\/list-topic-logs.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-topic-logs.md", - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "topicId", - "description": "Topic ID.", - "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). 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\/{topicId}\/subscribers": { "get": { "summary": "List subscribers", @@ -30875,9 +30638,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 +30689,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 +30733,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": [ @@ -31001,41 +30770,45 @@ { "name": "client_id", "description": "OAuth2 client ID.", - "required": true, + "required": false, "schema": { "type": "string", - "x-example": "<CLIENT_ID>" + "x-example": "<CLIENT_ID>", + "default": "" }, "in": "query" }, { "name": "redirect_uri", "description": "Redirect URI where visitor will be redirected after authorization, whether successful or not.", - "required": true, + "required": false, "schema": { "type": "string", "format": "url", - "x-example": "https:\/\/example.com" + "x-example": "https:\/\/example.com", + "default": "" }, "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, + "required": false, "schema": { "type": "string", - "x-example": "code" + "x-example": "", + "default": "" }, "in": "query" }, { "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" }, @@ -31125,6 +30898,17 @@ "default": [] }, "in": "query" + }, + { + "name": "request_uri", + "description": "OAuth2 authorization request handle returned by the pushed authorization request endpoint.", + "required": false, + "schema": { + "type": "string", + "x-example": "<REQUEST_URI>", + "default": "" + }, + "in": "query" } ] } @@ -31156,8 +30940,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 +31123,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", @@ -31387,21 +31171,21 @@ ] } }, - "\/oauth2\/{project_id}\/reject": { - "post": { - "summary": "Reject OAuth2", - "operationId": "oauth2Reject", + "\/oauth2\/{project_id}\/organizations": { + "get": { + "summary": "OAuth2 List Accessible Organizations", + "operationId": "oauth2ListOrganizations", "tags": [ "oauth2" ], - "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": "List the organizations the OAuth2 access token can access. Resolves the token's `organization` authorization details, expanding the `*` wildcard into the concrete set of organizations the user can see.", "responses": { "200": { - "description": "OAuth2 Reject", + "description": "OAuth2 accessible organizations list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Reject" + "$ref": "#\/components\/schemas\/oauth2OrganizationList" } } } @@ -31409,15 +31193,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "reject", + "method": "listOrganizations", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/reject.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/list-organizations.md", + "rate-limit": 120, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "oauth2.write", + "scope": "oauth2.organizations.read", "platforms": [ "console", "client", @@ -31434,58 +31218,74 @@ { "ProjectPath": [], "Session": [], - "JWT": [] + "JWT": [], + "Key": [] } ], "parameters": [ { "name": "project_id", - "description": "Project ID in which OAuth2 client exists.", + "description": "Project ID of the console project the OAuth2 access token was issued for.", "required": true, "schema": { "type": "string", "x-example": "<PROJECT_ID>" }, "in": "path" + }, + { + "name": "limit", + "description": "Maximum number of organizations to return. Between 1 and 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of organizations to skip before returning results. Used for pagination.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "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" } - ], - "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" - ] - } - } - } - } + ] } }, - "\/oauth2\/{project_id}\/revoke": { + "\/oauth2\/{project_id}\/par": { "post": { - "summary": "OAuth2 Revoke", - "operationId": "oauth2Revoke", + "summary": "OAuth2 PAR", + "operationId": "oauth2CreatePAR", "tags": [ "oauth2" ], - "description": "Revoke an OAuth2 access token or refresh token.", + "description": "Store an OAuth2 authorization request server-side and receive a short-lived request_uri handle for the authorize endpoint.", "responses": { - "200": { - "description": "File", + "201": { + "description": "OAuth2 PAR", "content": { "application\/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#\/components\/schemas\/oauth2PAR" } } } @@ -31493,13 +31293,13 @@ }, "deprecated": false, "x-appwrite": { - "method": "revoke", + "method": "createPAR", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/revoke.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/create-par.md", + "rate-limit": 60, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", "scope": "public", "platforms": [ @@ -31540,32 +31340,82 @@ "schema": { "type": "object", "properties": { - "token": { + "client_id": { "type": "string", - "description": "The access or refresh token to revoke.", - "x-example": "<TOKEN>" + "description": "OAuth2 client ID.", + "x-example": "<CLIENT_ID>" }, - "token_type_hint": { + "redirect_uri": { "type": "string", - "description": "Type of token to revoke (access_token or refresh_token).", + "description": "Redirect URI where visitor will be redirected after authorization, whether successful or not.", + "x-example": "https:\/\/example.com", + "format": "url" + }, + "response_type": { + "type": "string", + "description": "OAuth2 \/ OIDC response type.", + "x-example": "code" + }, + "scope": { + "type": "string", + "description": "Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: `openid`, `email`, `profile`, `phone`.", + "x-example": "<SCOPE>" + }, + "state": { + "type": "string", + "description": "OAuth2 state. You receive this back in the redirect URI.", "default": "", - "x-example": "access_token" + "x-example": "<STATE>" }, - "client_id": { + "nonce": { "type": "string", - "description": "OAuth2 client ID.", + "description": "OIDC nonce parameter to prevent replay attacks. Required when response_type includes `id_token`.", "default": "", - "x-example": "<CLIENT_ID>" + "x-example": "<NONCE>" }, - "client_secret": { + "code_challenge": { "type": "string", - "description": "OAuth2 client secret. Required for confidential apps; omitted for public apps.", + "description": "PKCE code challenge. Required when OAuth2 app is public.", "default": "", - "x-example": "<CLIENT_SECRET>" + "x-example": "<CODE_CHALLENGE>" + }, + "code_challenge_method": { + "type": "string", + "description": "PKCE code challenge method. Required when OAuth2 app is public.", + "default": "", + "x-example": "s256" + }, + "prompt": { + "type": "string", + "description": "OIDC prompt parameter for customization of consent screen. Space-separated list of: none, login, consent, select_account.", + "default": "", + "x-example": "<PROMPT>" + }, + "max_age": { + "type": "integer", + "description": "OIDC max_age parameter for customization of consent screen.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, + "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": [ - "token" + "client_id", + "redirect_uri", + "response_type", + "scope" ] } } @@ -31573,21 +31423,21 @@ } } }, - "\/oauth2\/{project_id}\/token": { - "post": { - "summary": "OAuth2 Token", - "operationId": "oauth2CreateToken", + "\/oauth2\/{project_id}\/projects": { + "get": { + "summary": "OAuth2 List Accessible Projects", + "operationId": "oauth2ListProjects", "tags": [ "oauth2" ], - "description": "Exchange an OAuth2 authorization code, refresh token, or device code for access and refresh tokens.", + "description": "List the projects the OAuth2 access token can access. Resolves the token's `project` authorization details, expanding the `*` wildcard into the concrete set of projects the user can see.", "responses": { "200": { - "description": "OAuth2 Token", + "description": "OAuth2 accessible projects list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/oauth2Token" + "$ref": "#\/components\/schemas\/oauth2ProjectList" } } } @@ -31595,15 +31445,301 @@ }, "deprecated": false, "x-appwrite": { - "method": "createToken", + "method": "listProjects", "group": null, "cookies": false, "type": "", - "demo": "oauth2\/create-token.md", - "rate-limit": 0, - "rate-time": 3600, + "demo": "oauth2\/list-projects.md", + "rate-limit": 120, + "rate-time": 60, "rate-key": "url:{url},ip:{ip}", - "scope": "public", + "scope": "oauth2.projects.read", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "ProjectPath": [], + "Session": [] + } + }, + "security": [ + { + "ProjectPath": [], + "Session": [], + "JWT": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "project_id", + "description": "Project ID of the console project the OAuth2 access token was issued for.", + "required": true, + "schema": { + "type": "string", + "x-example": "<PROJECT_ID>" + }, + "in": "path" + }, + { + "name": "limit", + "description": "Maximum number of projects to return. Between 1 and 5000.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of projects to skip before returning results. Used for pagination.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "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" + } + ] + } + }, + "\/oauth2\/{project_id}\/reject": { + "post": { + "summary": "Reject OAuth2", + "operationId": "oauth2Reject", + "tags": [ + "oauth2" + ], + "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": "OAuth2 Reject", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/oauth2Reject" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "reject", + "group": null, + "cookies": false, + "type": "", + "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, + "auth": { + "ProjectPath": [], + "Session": [] + } + }, + "security": [ + { + "ProjectPath": [], + "Session": [], + "JWT": [] + } + ], + "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": { + "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" + ] + } + } + } + } + } + }, + "\/oauth2\/{project_id}\/revoke": { + "post": { + "summary": "OAuth2 Revoke", + "operationId": "oauth2Revoke", + "tags": [ + "oauth2" + ], + "description": "Revoke an OAuth2 access token or refresh token.", + "responses": { + "200": { + "description": "File", + "content": { + "application\/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "revoke", + "group": null, + "cookies": false, + "type": "", + "demo": "oauth2\/revoke.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "url:{url},ip:{ip}", + "scope": "public", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "ProjectPath": [], + "Session": [] + } + }, + "security": [ + { + "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": { + "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": "OAuth2 Token", + "operationId": "oauth2CreateToken", + "tags": [ + "oauth2" + ], + "description": "Exchange an OAuth2 authorization code, refresh token, or device code for access and refresh tokens.", + "responses": { + "200": { + "description": "OAuth2 Token", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/oauth2Token" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createToken", + "group": null, + "cookies": false, + "type": "", + "demo": "oauth2\/create-token.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "url:{url},ip:{ip}", + "scope": "public", "platforms": [ "console", "client", @@ -31706,6 +31842,164 @@ } } }, + "\/organization": { + "get": { + "summary": "Get organization", + "operationId": "organizationGet", + "tags": [ + "organization" + ], + "description": "Get the current organization.", + "responses": { + "200": { + "description": "Organization", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/organization" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "get", + "group": null, + "cookies": false, + "type": "", + "demo": "organization\/get.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "organization.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + }, + "put": { + "summary": "Update organization", + "operationId": "organizationUpdate", + "tags": [ + "organization" + ], + "description": "Update the current organization's name.", + "responses": { + "200": { + "description": "Organization", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/organization" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "update", + "group": null, + "cookies": false, + "type": "", + "demo": "organization\/update.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "organization.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "New organization name. Max length: 128 chars.", + "x-example": "<NAME>" + } + }, + "required": [ + "name" + ] + } + } + } + } + }, + "delete": { + "summary": "Delete organization", + "operationId": "organizationDelete", + "tags": [ + "organization" + ], + "description": "Delete the current organization. All projects that belong to the organization are deleted as well.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "delete", + "group": null, + "cookies": false, + "type": "", + "demo": "organization\/delete.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "organization.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/organization\/keys": { "get": { "summary": "List organization keys", @@ -31849,7 +32143,7 @@ }, "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -31860,6 +32154,10 @@ "devKeys.write", "organization.keys.read", "organization.keys.write", + "organization.memberships.read", + "organization.memberships.write", + "organization.read", + "organization.write", "domains.read", "domains.write", "keys.read", @@ -31873,6 +32171,10 @@ "devKeys.write", "organization.keys.read", "organization.keys.write", + "organization.memberships.read", + "organization.memberships.write", + "organization.read", + "organization.write", "domains.read", "domains.write", "keys.read", @@ -32032,7 +32334,7 @@ }, "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -32043,6 +32345,10 @@ "devKeys.write", "organization.keys.read", "organization.keys.write", + "organization.memberships.read", + "organization.memberships.write", + "organization.read", + "organization.write", "domains.read", "domains.write", "keys.read", @@ -32056,6 +32362,10 @@ "devKeys.write", "organization.keys.read", "organization.keys.write", + "organization.memberships.read", + "organization.memberships.write", + "organization.read", + "organization.write", "domains.read", "domains.write", "keys.read", @@ -32134,21 +32444,21 @@ ] } }, - "\/organization\/projects": { + "\/organization\/memberships": { "get": { - "summary": "List organization projects", - "operationId": "organizationListProjects", + "summary": "List organization memberships", + "operationId": "organizationListMemberships", "tags": [ "organization" ], - "description": "Get a list of all projects. You can use the query params to filter your results.", + "description": "Get a list of all memberships from the current organization.", "responses": { "200": { - "description": "Projects List", + "description": "Memberships List", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/projectList" + "$ref": "#\/components\/schemas\/membershipList" } } } @@ -32156,15 +32466,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "listProjects", - "group": "projects", + "method": "listMemberships", + "group": "memberships", "cookies": false, "type": "", - "demo": "organization\/list-projects.md", + "demo": "organization\/list-memberships.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "organization.memberships.read", "platforms": [ "console", "server" @@ -32185,7 +32495,7 @@ "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", + "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, teamId, invited, joined, confirm, roles", "required": false, "schema": { "type": "array", @@ -32221,19 +32531,19 @@ ] }, "post": { - "summary": "Create organization project", - "operationId": "organizationCreateProject", + "summary": "Create organization membership", + "operationId": "organizationCreateMembership", "tags": [ "organization" ], - "description": "Create a new project.", + "description": "Invite a new member to join the current organization. An email with a link to join the organization will be sent to the new member's email address. If member doesn't exist in the project it will be automatically created.", "responses": { "201": { - "description": "Project", + "description": "Membership", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/project" + "$ref": "#\/components\/schemas\/membership" } } } @@ -32241,15 +32551,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createProject", - "group": "projects", + "method": "createMembership", + "group": "memberships", "cookies": false, "type": "", - "demo": "organization\/create-project.md", - "rate-limit": 0, + "demo": "organization\/create-membership.md", + "rate-limit": 10, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "organization.memberships.write", "platforms": [ "console", "server" @@ -32273,42 +32583,50 @@ "schema": { "type": "object", "properties": { - "projectId": { + "email": { "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 + "description": "Email of the new organization member.", + "default": "", + "x-example": "email@example.com", + "format": "email" }, - "name": { + "userId": { "type": "string", - "description": "Project name. Max length: 128 chars.", - "x-example": "<NAME>" + "description": "ID of the user to be added to the organization.", + "default": "", + "x-example": "<USER_ID>" }, - "region": { + "phone": { "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": "Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.", + "default": "", + "x-example": "+12065550100", + "format": "phone" + }, + "roles": { + "type": "array", + "description": "Array of strings. Use this param to set the user roles in the organization. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 81 characters long.", + "x-example": null, + "items": { + "type": "string" + } + }, + "url": { + "type": "string", + "description": "URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied.", + "default": "", + "x-example": "https:\/\/example.com", + "format": "url" + }, + "name": { + "type": "string", + "description": "Name of the new organization member. Max length: 128 chars.", + "default": "", + "x-example": "<NAME>" } }, "required": [ - "projectId", - "name" + "roles" ] } } @@ -32316,14 +32634,393 @@ } } }, - "\/organization\/projects\/{projectId}": { + "\/organization\/memberships\/{membershipId}": { "get": { - "summary": "Get organization project", - "operationId": "organizationGetProject", + "summary": "Get organization membership", + "operationId": "organizationGetMembership", "tags": [ "organization" ], - "description": "Get a project.", + "description": "Get a membership from the current organization by its unique ID.", + "responses": { + "200": { + "description": "Membership", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/membership" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getMembership", + "group": "memberships", + "cookies": false, + "type": "", + "demo": "organization\/get-membership.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "organization.memberships.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "membershipId", + "description": "Membership ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<MEMBERSHIP_ID>" + }, + "in": "path" + } + ] + }, + "patch": { + "summary": "Update organization membership", + "operationId": "organizationUpdateMembership", + "tags": [ + "organization" + ], + "description": "Modify the roles of a member in the current organization.", + "responses": { + "200": { + "description": "Membership", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/membership" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateMembership", + "group": "memberships", + "cookies": false, + "type": "", + "demo": "organization\/update-membership.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "organization.memberships.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "membershipId", + "description": "Membership ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<MEMBERSHIP_ID>" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "description": "An array of strings. Use this param to set the user's roles in the organization. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 81 characters long.", + "x-example": null, + "items": { + "type": "string" + } + } + }, + "required": [ + "roles" + ] + } + } + } + } + }, + "delete": { + "summary": "Delete organization membership", + "operationId": "organizationDeleteMembership", + "tags": [ + "organization" + ], + "description": "Remove a member from the current organization. The member is removed whether they accepted the invitation or not; a pending invitation is revoked.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteMembership", + "group": "memberships", + "cookies": false, + "type": "", + "demo": "organization\/delete-membership.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "organization.memberships.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "membershipId", + "description": "Membership ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "<MEMBERSHIP_ID>" + }, + "in": "path" + } + ] + } + }, + "\/organization\/projects": { + "get": { + "summary": "List organization projects", + "operationId": "organizationListProjects", + "tags": [ + "organization" + ], + "description": "Get a list of all projects. You can use the query params to filter your results.", + "responses": { + "200": { + "description": "Projects List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/projectList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listProjects", + "group": "projects", + "cookies": false, + "type": "", + "demo": "organization\/list-projects.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "projects.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "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, teamId, labels, search, accessedAt", + "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" + } + ] + }, + "post": { + "summary": "Create organization project", + "operationId": "organizationCreateProject", + "tags": [ + "organization" + ], + "description": "Create a new project.", + "responses": { + "201": { + "description": "Project", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/project" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createProject", + "group": "projects", + "cookies": false, + "type": "", + "demo": "organization\/create-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": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "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": { + "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" + ] + } + }, + "required": [ + "projectId", + "name" + ] + } + } + } + } + } + }, + "\/organization\/projects\/{projectId}": { + "get": { + "summary": "Get organization project", + "operationId": "organizationGetProject", + "tags": [ + "organization" + ], + "description": "Get a project.", "responses": { "200": { "description": "Project", @@ -33391,7 +34088,7 @@ }, "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -33408,8 +34105,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 +34209,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", @@ -33671,7 +34376,7 @@ "properties": { "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -33688,8 +34393,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 +34497,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", @@ -34026,7 +34739,7 @@ }, "scopes": { "type": "array", - "description": "Key scopes list. Maximum of 100 scopes are allowed.", + "description": "Key scopes list. Maximum of 200 scopes are allowed.", "x-example": null, "items": { "type": "string", @@ -34043,8 +34756,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 +34860,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 +35472,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 +35706,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 +35788,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 +35882,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 +35970,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 +36058,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 +36140,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 +36222,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 +36304,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 +36386,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 +36468,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 +36550,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 +36632,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 +36714,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 +36796,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 +36878,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 +36960,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 +37048,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 +37130,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 +37219,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 +37321,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 +37415,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 +37497,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 +37579,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 +37667,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 +37749,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" @@ -37017,6 +37816,35 @@ "format": "url", "x-nullable": true }, + "prompt": { + "type": "array", + "description": "Array of OpenID Connect prompt values controlling the authentication and consent screens. If \"none\" is included, it must be the only element. \"none\" means: don't display any authentication or consent screens. \"login\" means: prompt the user to re-authenticate. \"consent\" means: prompt the user for consent. \"select_account\" means: prompt the user to select an account.", + "x-example": null, + "items": { + "type": "string", + "enum": [ + "none", + "login", + "consent", + "select_account" + ], + "x-enum-name": "ProjectOAuth2OidcPrompt", + "x-enum-keys": [ + "none", + "login", + "consent", + "select_account" + ] + }, + "x-nullable": true + }, + "maxAge": { + "type": "integer", + "description": "Maximum authentication age in seconds. When set, the user must have authenticated within this many seconds, otherwise they are prompted to re-authenticate.", + "x-example": 0, + "format": "int32", + "x-nullable": true + }, "enabled": { "type": "boolean", "description": "OAuth2 sign-in method status. Set to true to enable new session creation. Setting to true will trigger end-to-end credentials validation, and will throw if the credentials are invalid.", @@ -37060,7 +37888,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 +37982,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 +38064,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 +38146,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 +38228,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 +38310,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 +38392,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 +38474,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 +38556,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 +38638,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 +38720,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 +38802,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 +38884,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 +38966,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 +39048,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 +39130,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 +39212,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 +39462,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" @@ -43910,9 +44792,6 @@ "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", @@ -44007,9 +44886,6 @@ "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", @@ -44535,9 +45411,6 @@ "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", @@ -44632,9 +45505,6 @@ "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", @@ -46561,7 +47431,7 @@ }, "maximumFileSize": { "type": "integer", - "description": "Maximum file size allowed in bytes. Maximum allowed value is 0B.", + "description": "Maximum file size allowed in bytes. Maximum allowed value is 5GB.", "default": {}, "x-example": 1, "format": "int32" @@ -46777,7 +47647,7 @@ }, "maximumFileSize": { "type": "integer", - "description": "Maximum file size allowed in bytes. Maximum allowed value is 0B.", + "description": "Maximum file size allowed in bytes. Maximum allowed value is 5GB.", "default": {}, "x-example": 1, "format": "int32" @@ -47933,14 +48803,11 @@ "default": true, "x-example": false }, - "dedicatedDatabaseId": { + "specification": { "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": "<DEDICATED_DATABASE_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Database specification. Defaults to `serverless`, which creates the database on the shared pool. Any other value provisions a dedicated database on that specification.", + "default": "serverless", + "x-example": "serverless" } }, "required": [ @@ -57172,7 +58039,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(\"resourceType\", [\"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 +58094,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, resourceType, resourceId, teamId, country, region, hostname, ip, osName, clientType, clientName, deviceName. Allowed methods: equal, notEqual, contains, startsWith, endsWith, isNull, isNotNull. Example: `queries[]=equal(\"resourceType\", [\"bucket\"])`.", "required": false, "schema": { - "type": "string", - "x-example": "<RESOURCE_ID>", - "default": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, @@ -57260,7 +58118,7 @@ }, { "name": "dimensions", - "description": "Break-down dimensions (max 10). Allowed: path, method, status, service, resource, country, region, hostname, osName, clientType, clientName, deviceName, teamId, resourceId.", + "description": "Break-down dimensions (max 10). Allowed: path, method, status, service, resourceType, country, region, hostname, ip, osName, clientType, clientName, deviceName, teamId, resourceId.", "required": false, "schema": { "type": "array", @@ -57351,7 +58209,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`, `resourceType`. `service` and `resourceType` 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(\"resourceType\", [\"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 +58264,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, resourceType, resourceId, teamId. Allowed methods: equal, notEqual, isNull, isNotNull. Example: `queries[]=equal(\"resourceType\", [\"bucket\"])`.", "required": false, "schema": { - "type": "string", - "x-example": "<TEAM_ID>", - "default": "" + "type": "array", + "items": { + "type": "string" + }, + "default": [] }, "in": "query" }, @@ -57439,7 +58288,7 @@ }, { "name": "dimensions", - "description": "Break-down dimensions. Allowed: resourceId, teamId, service, resource.", + "description": "Break-down dimensions. Allowed: resourceId, teamId, service, resourceType.", "required": false, "schema": { "type": "array", @@ -57575,7 +58424,7 @@ "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, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels, impersonator", + "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, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels, impersonator, accessedAt", "required": false, "schema": { "type": "array", @@ -61571,14 +62420,11 @@ "default": true, "x-example": false }, - "dedicatedDatabaseId": { + "specification": { "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": "<DEDICATED_DATABASE_ID>", - "x-appwrite": { - "idGenerator": "ID.unique" - } + "description": "Database specification. Defaults to `serverless`, which creates the database on the shared pool. Any other value provisions a dedicated database on that specification.", + "default": "serverless", + "x-example": "serverless" } }, "required": [ @@ -61598,7 +62444,7 @@ "tags": [ "vectorsDB" ], - "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": "Generate vector embeddings for an array of text using the selected embedding model. Use the returned vectors to power semantic search and similarity queries against your vector collections.\n", "responses": { "200": { "description": "Embedding list", @@ -61614,7 +62460,7 @@ "deprecated": false, "x-appwrite": { "method": "createTextEmbeddings", - "group": "documents", + "group": "embeddings", "cookies": false, "type": "", "demo": "vectorsdb\/create-text-embeddings.md", @@ -61628,7 +62474,7 @@ ], "packaging": false, "public": true, - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vectorsdb\/create-document.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vectorsdb\/create-text-embeddings.md", "methods": [ { "name": "createTextEmbeddings", @@ -61651,7 +62497,7 @@ "model": "#\/components\/schemas\/embeddingList" } ], - "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": "Generate vector embeddings for an array of text using the selected embedding model. Use the returned vectors to power semantic search and similarity queries against your vector collections.\n", "demo": "vectorsdb\/create-text-embeddings.md", "public": true } @@ -66387,6 +67233,17 @@ "vectorsdb" ] }, + "status": { + "type": "string", + "description": "Database status. Possible values: `provisioning`, `ready` or `failed`", + "x-example": "ready", + "enum": [ + "provisioning", + "ready", + "failed" + ], + "x-enum-name": "DatabaseStatus" + }, "policies": { "type": "array", "description": "Database backup policies.", @@ -66411,6 +67268,7 @@ "$updatedAt", "enabled", "type", + "status", "policies", "archives" ], @@ -66421,6 +67279,7 @@ "$updatedAt": "2020-10-15T06:38:00.000+00:00", "enabled": false, "type": "legacy", + "status": "ready", "policies": {}, "archives": {} } @@ -71490,7 +72349,7 @@ }, "userType": { "type": "string", - "description": "User type who triggered the audit log. Possible values: user, admin, guest, keyProject, keyAccount, keyOrganization.", + "description": "User type who triggered the audit log. Possible values: user, admin, guest, hidden, keyProject, keyAccount, keyOrganization.", "x-example": "user" }, "ip": { @@ -72450,65 +73309,6 @@ "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" } }, - "locale": { - "description": "Locale", - "type": "object", - "properties": { - "ip": { - "type": "string", - "description": "User IP address.", - "x-example": "127.0.0.1" - }, - "countryCode": { - "type": "string", - "description": "Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format", - "x-example": "US" - }, - "country": { - "type": "string", - "description": "Country name. This field support localization.", - "x-example": "United States" - }, - "continentCode": { - "type": "string", - "description": "Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.", - "x-example": "NA" - }, - "continent": { - "type": "string", - "description": "Continent name. This field support localization.", - "x-example": "North America" - }, - "eu": { - "type": "boolean", - "description": "True if country is part of the European Union.", - "x-example": false - }, - "currency": { - "type": "string", - "description": "Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format", - "x-example": "USD" - } - }, - "required": [ - "ip", - "countryCode", - "country", - "continentCode", - "continent", - "eu", - "currency" - ], - "example": { - "ip": "127.0.0.1", - "countryCode": "US", - "country": "United States", - "continentCode": "NA", - "continent": "North America", - "eu": false, - "currency": "USD" - } - }, "localeCode": { "description": "LocaleCode", "type": "object", @@ -74257,6 +75057,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 +75235,7 @@ "pingedAt", "labels", "status", + "onboarding", "authMethods", "services", "protocols", @@ -74459,6 +75266,7 @@ "vip" ], "status": "active", + "onboarding": [], "authMethods": {}, "services": {}, "protocols": {}, @@ -76406,6 +77214,29 @@ "type": "string", "description": "OpenID Connect user info endpoint URL.", "x-example": "https:\/\/myoauth.com\/oauth2\/userinfo" + }, + "prompt": { + "type": "array", + "description": "OpenID Connect prompt values controlling the authentication and consent screens.", + "items": { + "type": "string", + "enum": [ + "none", + "login", + "consent", + "select_account" + ] + }, + "x-example": [ + "consent" + ] + }, + "maxAge": { + "type": "integer", + "description": "Maximum authentication age in seconds. When set, the user must have authenticated within this many seconds.", + "x-example": 3600, + "format": "int32", + "nullable": true } }, "required": [ @@ -76416,7 +77247,8 @@ "wellKnownURL", "authorizationURL", "tokenURL", - "userInfoURL" + "userInfoURL", + "prompt" ], "example": { "$id": "github", @@ -76426,7 +77258,11 @@ "wellKnownURL": "https:\/\/myoauth.com\/.well-known\/openid-configuration", "authorizationURL": "https:\/\/myoauth.com\/oauth2\/authorize", "tokenURL": "https:\/\/myoauth.com\/oauth2\/token", - "userInfoURL": "https:\/\/myoauth.com\/oauth2\/userinfo" + "userInfoURL": "https:\/\/myoauth.com\/oauth2\/userinfo", + "prompt": [ + "consent" + ], + "maxAge": 3600 } }, "oAuth2Okta": { @@ -79169,16 +80005,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 +80025,7 @@ "time", "projectId", "teamId", - "hostname", - "countryCode", - "countryName" + "hostname" ], "example": { "$id": "5e5ea5c16897e", @@ -79221,9 +80045,61 @@ "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": { + "description": "AdditionalResource", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Resource name", + "x-example": "" + }, + "unit": { + "type": "string", + "description": "Resource unit", + "x-example": "GB" + }, + "currency": { + "type": "string", + "description": "Price currency", + "x-example": "USD" + }, + "price": { + "type": "number", + "description": "Price", + "x-example": 5, + "format": "double" + }, + "value": { + "type": "integer", + "description": "Resource value", + "x-example": 25, + "format": "int32" + }, + "invoiceDesc": { + "type": "string", + "description": "Description on invoice", + "x-example": "" + } + }, + "required": [ + "name", + "unit", + "currency", + "price", + "value", + "invoiceDesc" + ], + "example": { + "name": "", + "unit": "GB", + "currency": "USD", + "price": 5, + "value": 25, + "invoiceDesc": "" } }, "backupArchive": { @@ -79399,6 +80275,914 @@ "budgetLimit": 100 } }, + "billingPlan": { + "description": "billingPlan", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Plan ID.", + "x-example": "tier-0" + }, + "name": { + "type": "string", + "description": "Plan name", + "x-example": "Hobby" + }, + "desc": { + "type": "string", + "description": "Plan description", + "x-example": "Hobby plan" + }, + "order": { + "type": "integer", + "description": "Plan order", + "x-example": 0, + "format": "int32" + }, + "price": { + "type": "number", + "description": "Price", + "x-example": 25, + "format": "double" + }, + "trial": { + "type": "integer", + "description": "Trial days", + "x-example": 14, + "format": "int32" + }, + "bandwidth": { + "type": "integer", + "description": "Bandwidth", + "x-example": 25, + "format": "int32" + }, + "storage": { + "type": "integer", + "description": "Storage", + "x-example": 25, + "format": "int32" + }, + "imageTransformations": { + "type": "integer", + "description": "Image Transformations", + "x-example": 100, + "format": "int32" + }, + "screenshotsGenerated": { + "type": "integer", + "description": "Screenshots generated", + "x-example": 50, + "format": "int32" + }, + "members": { + "type": "integer", + "description": "Members", + "x-example": 25, + "format": "int32" + }, + "webhooks": { + "type": "integer", + "description": "Webhooks", + "x-example": 25, + "format": "int32" + }, + "projects": { + "type": "integer", + "description": "Projects", + "x-example": 2, + "format": "int32" + }, + "platforms": { + "type": "integer", + "description": "Platforms", + "x-example": 3, + "format": "int32" + }, + "users": { + "type": "integer", + "description": "Users", + "x-example": 25, + "format": "int32" + }, + "teams": { + "type": "integer", + "description": "Teams", + "x-example": 25, + "format": "int32" + }, + "databases": { + "type": "integer", + "description": "Databases", + "x-example": 25, + "format": "int32" + }, + "databasesReads": { + "type": "integer", + "description": "Database reads per month", + "x-example": 500000, + "format": "int32" + }, + "databasesWrites": { + "type": "integer", + "description": "Database writes per month", + "x-example": 250000, + "format": "int32" + }, + "databasesBatchSize": { + "type": "integer", + "description": "Database batch size limit", + "x-example": 100, + "format": "int32" + }, + "buckets": { + "type": "integer", + "description": "Buckets", + "x-example": 25, + "format": "int32" + }, + "fileSize": { + "type": "integer", + "description": "File size", + "x-example": 25, + "format": "int32" + }, + "functions": { + "type": "integer", + "description": "Functions", + "x-example": 25, + "format": "int32" + }, + "sites": { + "type": "integer", + "description": "Sites", + "x-example": 1, + "format": "int32" + }, + "executions": { + "type": "integer", + "description": "Function executions", + "x-example": 25, + "format": "int32" + }, + "executionsRetentionCount": { + "type": "integer", + "description": "Rolling max executions retained per function\/site", + "x-example": 10000, + "format": "int32" + }, + "GBHours": { + "type": "integer", + "description": "GB hours for functions", + "x-example": 100, + "format": "int32" + }, + "realtime": { + "type": "integer", + "description": "Realtime connections", + "x-example": 25, + "format": "int32" + }, + "realtimeMessages": { + "type": "integer", + "description": "Realtime messages", + "x-example": 100000, + "format": "int32" + }, + "messages": { + "type": "integer", + "description": "Messages per month", + "x-example": 1000, + "format": "int32" + }, + "topics": { + "type": "integer", + "description": "Topics for messaging", + "x-example": 1, + "format": "int32" + }, + "authPhone": { + "type": "integer", + "description": "SMS authentications per month", + "x-example": 10, + "format": "int32" + }, + "domains": { + "type": "integer", + "description": "Custom domains", + "x-example": 5, + "format": "int32" + }, + "activityLogs": { + "type": "integer", + "description": "Activity log days", + "x-example": 7, + "format": "int32" + }, + "usageLogs": { + "type": "integer", + "description": "Usage history days", + "x-example": 30, + "format": "int32" + }, + "projectInactivityDays": { + "type": "integer", + "description": "Number of days of console inactivity before a project is paused. 0 means pausing is disabled.", + "x-example": 7, + "format": "int32" + }, + "alertLimit": { + "type": "integer", + "description": "Alert threshold percentage", + "x-example": 80, + "format": "int32" + }, + "usage": { + "type": "object", + "description": "Additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/usageBillingPlan" + } + ] + }, + "addons": { + "type": "object", + "description": "Addons", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/billingPlanAddon" + } + ] + }, + "budgetCapEnabled": { + "type": "boolean", + "description": "Budget cap enabled or disabled.", + "x-example": true + }, + "customSmtp": { + "type": "boolean", + "description": "Custom SMTP", + "x-example": true + }, + "emailBranding": { + "type": "boolean", + "description": "Appwrite branding in email", + "x-example": true + }, + "requiresPaymentMethod": { + "type": "boolean", + "description": "Does plan require payment method", + "x-example": true + }, + "requiresBillingAddress": { + "type": "boolean", + "description": "Does plan require billing address", + "x-example": true + }, + "isAvailable": { + "type": "boolean", + "description": "Is the billing plan available", + "x-example": true + }, + "selfService": { + "type": "boolean", + "description": "Can user change the plan themselves", + "x-example": true + }, + "premiumSupport": { + "type": "boolean", + "description": "Does plan enable premium support", + "x-example": true + }, + "budgeting": { + "type": "boolean", + "description": "Does plan support budget cap", + "x-example": true + }, + "supportsMockNumbers": { + "type": "boolean", + "description": "Does plan support mock numbers", + "x-example": true + }, + "supportsOrganizationRoles": { + "type": "boolean", + "description": "Does plan support organization roles", + "x-example": true + }, + "supportsCredits": { + "type": "boolean", + "description": "Does plan support credit", + "x-example": true + }, + "supportsDisposableEmailValidation": { + "type": "boolean", + "description": "Does plan support blocking disposable email addresses.", + "x-example": true + }, + "supportsCanonicalEmailValidation": { + "type": "boolean", + "description": "Does plan support requiring canonical email addresses.", + "x-example": true + }, + "supportsFreeEmailValidation": { + "type": "boolean", + "description": "Does plan support blocking free email addresses.", + "x-example": true + }, + "supportsCorporateEmailValidation": { + "type": "boolean", + "description": "Does plan support restricting sign-ups to corporate email addresses only.", + "x-example": true + }, + "supportsProjectSpecificRoles": { + "type": "boolean", + "description": "Does plan support project-specific member roles.", + "x-example": true + }, + "backupsEnabled": { + "type": "boolean", + "description": "Does plan support backup policies.", + "x-example": true + }, + "usagePerProject": { + "type": "boolean", + "description": "Whether usage addons are calculated per project.", + "x-example": true + }, + "supportedAddons": { + "type": "object", + "description": "Supported addons for this plan", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/billingPlanSupportedAddons" + } + ] + }, + "backupPolicies": { + "type": "integer", + "description": "How many policies does plan support", + "x-example": true, + "format": "int32" + }, + "deploymentSize": { + "type": "integer", + "description": "Maximum function and site deployment size in MB", + "x-example": 30, + "format": "int32" + }, + "buildSize": { + "type": "integer", + "description": "Maximum function and site deployment size in MB", + "x-example": 2000, + "format": "int32" + }, + "databasesAllowEncrypt": { + "type": "boolean", + "description": "Does the plan support encrypted string attributes or not.", + "x-example": false + }, + "limits": { + "type": "object", + "description": "Plan specific limits", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/billingPlanLimits" + } + ], + "nullable": true + }, + "group": { + "type": "string", + "description": "Group of this billing plan for variants", + "x-example": "pro", + "enum": [ + "starter", + "pro", + "scale" + ] + }, + "program": { + "type": "object", + "description": "Details of the program this plan is a part of.", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/program" + } + ], + "nullable": true + }, + "dedicatedDatabases": { + "type": "object", + "description": "Dedicated database limits available to this plan.", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/billingPlanDedicatedDatabaseLimits" + } + ], + "nullable": true + } + }, + "required": [ + "$id", + "name", + "desc", + "order", + "price", + "trial", + "bandwidth", + "storage", + "imageTransformations", + "screenshotsGenerated", + "members", + "webhooks", + "projects", + "platforms", + "users", + "teams", + "databases", + "databasesReads", + "databasesWrites", + "databasesBatchSize", + "buckets", + "fileSize", + "functions", + "sites", + "executions", + "executionsRetentionCount", + "GBHours", + "realtime", + "realtimeMessages", + "messages", + "topics", + "authPhone", + "domains", + "activityLogs", + "usageLogs", + "projectInactivityDays", + "alertLimit", + "usage", + "addons", + "budgetCapEnabled", + "customSmtp", + "emailBranding", + "requiresPaymentMethod", + "requiresBillingAddress", + "isAvailable", + "selfService", + "premiumSupport", + "budgeting", + "supportsMockNumbers", + "supportsOrganizationRoles", + "supportsCredits", + "supportsDisposableEmailValidation", + "supportsCanonicalEmailValidation", + "supportsFreeEmailValidation", + "supportsCorporateEmailValidation", + "supportsProjectSpecificRoles", + "backupsEnabled", + "usagePerProject", + "supportedAddons", + "backupPolicies", + "deploymentSize", + "buildSize", + "databasesAllowEncrypt", + "group" + ], + "example": { + "$id": "tier-0", + "name": "Hobby", + "desc": "Hobby plan", + "order": 0, + "price": 25, + "trial": 14, + "bandwidth": 25, + "storage": 25, + "imageTransformations": 100, + "screenshotsGenerated": 50, + "members": 25, + "webhooks": 25, + "projects": 2, + "platforms": 3, + "users": 25, + "teams": 25, + "databases": 25, + "databasesReads": 500000, + "databasesWrites": 250000, + "databasesBatchSize": 100, + "buckets": 25, + "fileSize": 25, + "functions": 25, + "sites": 1, + "executions": 25, + "executionsRetentionCount": 10000, + "GBHours": 100, + "realtime": 25, + "realtimeMessages": 100000, + "messages": 1000, + "topics": 1, + "authPhone": 10, + "domains": 5, + "activityLogs": 7, + "usageLogs": 30, + "projectInactivityDays": 7, + "alertLimit": 80, + "usage": null, + "addons": null, + "budgetCapEnabled": true, + "customSmtp": true, + "emailBranding": true, + "requiresPaymentMethod": true, + "requiresBillingAddress": true, + "isAvailable": true, + "selfService": true, + "premiumSupport": true, + "budgeting": true, + "supportsMockNumbers": true, + "supportsOrganizationRoles": true, + "supportsCredits": true, + "supportsDisposableEmailValidation": true, + "supportsCanonicalEmailValidation": true, + "supportsFreeEmailValidation": true, + "supportsCorporateEmailValidation": true, + "supportsProjectSpecificRoles": true, + "backupsEnabled": true, + "usagePerProject": true, + "supportedAddons": null, + "backupPolicies": true, + "deploymentSize": 30, + "buildSize": 2000, + "databasesAllowEncrypt": false, + "limits": null, + "group": "pro", + "program": null, + "dedicatedDatabases": null + } + }, + "billingPlanAddon": { + "description": "Addon", + "type": "object", + "properties": { + "seats": { + "type": "object", + "description": "Addon seats", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/billingPlanAddonDetails" + } + ] + }, + "projects": { + "type": "object", + "description": "Addon projects", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/billingPlanAddonDetails" + } + ] + } + }, + "required": [ + "seats", + "projects" + ], + "example": { + "seats": null, + "projects": null + } + }, + "billingPlanAddonDetails": { + "description": "Details", + "type": "object", + "properties": { + "supported": { + "type": "boolean", + "description": "Is the addon supported in the plan?", + "x-example": true + }, + "planIncluded": { + "type": "integer", + "description": "Addon plan included value", + "x-example": 1, + "format": "int32" + }, + "limit": { + "type": "integer", + "description": "Addon limit", + "x-example": 5, + "format": "int32" + }, + "type": { + "type": "string", + "description": "Addon type", + "x-example": "numeric" + }, + "currency": { + "type": "string", + "description": "Price currency", + "x-example": "USD" + }, + "price": { + "type": "number", + "description": "Price", + "x-example": 5, + "format": "double" + }, + "value": { + "type": "integer", + "description": "Resource value", + "x-example": 25, + "format": "int32" + }, + "invoiceDesc": { + "type": "string", + "description": "Description on invoice", + "x-example": "" + } + }, + "required": [ + "supported", + "planIncluded", + "limit", + "type", + "currency", + "price", + "value", + "invoiceDesc" + ], + "example": { + "supported": true, + "planIncluded": 1, + "limit": 5, + "type": "numeric", + "currency": "USD", + "price": 5, + "value": 25, + "invoiceDesc": "" + } + }, + "billingPlanLimits": { + "description": "PlanLimits", + "type": "object", + "properties": { + "credits": { + "type": "integer", + "description": "Credits limit per billing cycle", + "x-example": 100, + "format": "int32", + "nullable": true + }, + "dailyCredits": { + "type": "integer", + "description": "Daily credits limit (if applicable)", + "x-example": 5, + "format": "int32", + "nullable": true + } + }, + "example": { + "credits": 100, + "dailyCredits": 5 + } + }, + "billingPlanDedicatedDatabaseLimits": { + "description": "dedicatedDatabaseLimits", + "type": "object", + "properties": { + "minCpu": { + "type": "integer", + "description": "Minimum CPU allocation in millicores.", + "x-example": 125, + "format": "int32", + "nullable": true + }, + "maxCpu": { + "type": "integer", + "description": "Maximum CPU allocation in millicores.", + "x-example": 16000, + "format": "int32", + "nullable": true + }, + "minMemoryMb": { + "type": "integer", + "description": "Minimum memory allocation in megabytes.", + "x-example": 128, + "format": "int32", + "nullable": true + }, + "maxMemoryMb": { + "type": "integer", + "description": "Maximum memory allocation in megabytes.", + "x-example": 65536, + "format": "int32", + "nullable": true + }, + "minStorageGb": { + "type": "integer", + "description": "Minimum storage allocation in gigabytes.", + "x-example": 1, + "format": "int32", + "nullable": true + }, + "maxStorageGb": { + "type": "integer", + "description": "Maximum storage allocation in gigabytes.", + "x-example": 16384, + "format": "int32", + "nullable": true + }, + "maxDatabasesPerProject": { + "type": "integer", + "description": "Maximum number of dedicated databases per project.", + "x-example": 10, + "format": "int32", + "nullable": true + }, + "maxReplicas": { + "type": "integer", + "description": "Maximum number of high-availability replicas per dedicated database.", + "x-example": 5, + "format": "int32", + "nullable": true + }, + "maxConnections": { + "type": "integer", + "description": "Maximum number of client connections.", + "x-example": 10000, + "format": "int32", + "nullable": true + }, + "maxIpAllowlistSize": { + "type": "integer", + "description": "Maximum number of entries allowed in the IP allowlist.", + "x-example": 100, + "format": "int32", + "nullable": true + }, + "maxExtensions": { + "type": "integer", + "description": "Maximum number of database extensions that can be enabled.", + "x-example": 50, + "format": "int32", + "nullable": true + }, + "maxBackupRetentionDays": { + "type": "integer", + "description": "Maximum number of days a backup can be retained.", + "x-example": 365, + "format": "int32", + "nullable": true + }, + "maxPitrRetentionDays": { + "type": "integer", + "description": "Maximum number of days of point-in-time recovery data that can be retained.", + "x-example": 35, + "format": "int32", + "nullable": true + }, + "maxSqlApiMaxRows": { + "type": "integer", + "description": "Maximum number of rows a single SQL API query can return.", + "x-example": 1000000, + "format": "int32", + "nullable": true + }, + "maxSqlApiMaxBytes": { + "type": "integer", + "description": "Maximum response size in bytes for a single SQL API query.", + "x-example": 104857600, + "format": "int32", + "nullable": true + }, + "maxSqlApiTimeoutSeconds": { + "type": "integer", + "description": "Maximum execution time in seconds for a single SQL API query.", + "x-example": 300, + "format": "int32", + "nullable": true + }, + "maxSqlApiAllowedStatements": { + "type": "integer", + "description": "Maximum number of SQL statement types that can be permitted through the SQL API.", + "x-example": 10, + "format": "int32", + "nullable": true + }, + "allowedSqlStatements": { + "type": "array", + "description": "SQL statement types permitted through the SQL API.", + "items": { + "type": "string" + }, + "x-example": [ + "select", + "insert", + "update", + "delete", + "explain" + ], + "nullable": true + }, + "allowedStorageClasses": { + "type": "array", + "description": "Storage classes available for dedicated databases.", + "items": { + "type": "string" + }, + "x-example": [ + "ssd" + ], + "nullable": true + }, + "allowedSyncModes": { + "type": "array", + "description": "Replica synchronization modes available for dedicated databases.", + "items": { + "type": "string" + }, + "x-example": [ + "async", + "sync", + "quorum" + ], + "nullable": true + } + }, + "example": { + "minCpu": 125, + "maxCpu": 16000, + "minMemoryMb": 128, + "maxMemoryMb": 65536, + "minStorageGb": 1, + "maxStorageGb": 16384, + "maxDatabasesPerProject": 10, + "maxReplicas": 5, + "maxConnections": 10000, + "maxIpAllowlistSize": 100, + "maxExtensions": 50, + "maxBackupRetentionDays": 365, + "maxPitrRetentionDays": 35, + "maxSqlApiMaxRows": 1000000, + "maxSqlApiMaxBytes": 104857600, + "maxSqlApiTimeoutSeconds": 300, + "maxSqlApiAllowedStatements": 10, + "allowedSqlStatements": [ + "select", + "insert", + "update", + "delete", + "explain" + ], + "allowedStorageClasses": [ + "ssd" + ], + "allowedSyncModes": [ + "async", + "sync", + "quorum" + ] + } + }, + "billingPlanSupportedAddons": { + "description": "BillingPlanSupportedAddons", + "type": "object", + "properties": { + "baa": { + "type": "boolean", + "description": "Whether the plan supports BAA (Business Associate Agreement) addon", + "x-example": true + }, + "premiumGeoDB": { + "type": "boolean", + "description": "Whether the plan supports Premium Geo DB addon (project-level)", + "x-example": true + }, + "premiumGeoDBOrg": { + "type": "boolean", + "description": "Whether the plan supports Premium Geo DB addon (organization-level)", + "x-example": true + } + }, + "required": [ + "baa", + "premiumGeoDB", + "premiumGeoDBOrg" + ], + "example": { + "baa": true, + "premiumGeoDB": true, + "premiumGeoDBOrg": true + } + }, "block": { "description": "Block", "type": "object", @@ -79418,6 +81202,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 +81249,7 @@ "$createdAt", "resourceType", "resourceId", + "mode", "projectName", "region", "organizationName", @@ -79470,6 +81260,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", @@ -79479,6 +81270,298 @@ "billingPlan": "pro" } }, + "organization": { + "description": "Organization", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Team ID.", + "x-example": "5e5ea5c16897e" + }, + "$createdAt": { + "type": "string", + "description": "Team creation date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "$updatedAt": { + "type": "string", + "description": "Team update date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "name": { + "type": "string", + "description": "Team name.", + "x-example": "VIP" + }, + "total": { + "type": "integer", + "description": "Total number of team members.", + "x-example": 7, + "format": "int32" + }, + "prefs": { + "type": "object", + "description": "Team preferences as a key-value object", + "x-example": { + "theme": "pink", + "timezone": "UTC" + }, + "allOf": [ + { + "$ref": "#\/components\/schemas\/preferences" + } + ] + }, + "billingBudget": { + "type": "integer", + "description": "Project budget limit", + "x-example": 50, + "format": "int32" + }, + "budgetAlerts": { + "type": "array", + "description": "Project budget limit", + "items": { + "type": "integer", + "format": "int32" + }, + "x-example": [ + 50, + 75 + ] + }, + "billingPlan": { + "type": "string", + "description": "Organization's billing plan ID.", + "x-example": "tier-1" + }, + "billingPlanId": { + "type": "string", + "description": "Organization's billing plan ID.", + "x-example": "tier-1" + }, + "billingPlanDetails": { + "type": "object", + "description": "Organization's billing plan.", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/billingPlan" + } + ] + }, + "billingEmail": { + "type": "string", + "description": "Billing email set for the organization.", + "x-example": "billing@org.example" + }, + "billingStartDate": { + "type": "string", + "description": "Billing cycle start date.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "billingCurrentInvoiceDate": { + "type": "string", + "description": "Current invoice cycle start date.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "billingNextInvoiceDate": { + "type": "string", + "description": "Next invoice cycle start date.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "billingTrialStartDate": { + "type": "string", + "description": "Start date of trial.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "billingTrialDays": { + "type": "integer", + "description": "Number of trial days.", + "x-example": 14, + "format": "int32" + }, + "billingAggregationId": { + "type": "string", + "description": "Current active aggregation id.", + "x-example": "adbc3de4rddfsd" + }, + "billingInvoiceId": { + "type": "string", + "description": "Current active aggregation id.", + "x-example": "adbc3de4rddfsd" + }, + "paymentMethodId": { + "type": "string", + "description": "Default payment method.", + "x-example": "adbc3de4rddfsd" + }, + "billingAddressId": { + "type": "string", + "description": "Default payment method.", + "x-example": "adbc3de4rddfsd" + }, + "backupPaymentMethodId": { + "type": "string", + "description": "Backup payment method.", + "x-example": "adbc3de4rddfsd" + }, + "status": { + "type": "string", + "description": "Team status.", + "x-example": "active" + }, + "remarks": { + "type": "string", + "description": "Remarks on team status.", + "x-example": "Pending initial payment" + }, + "agreementBAA": { + "type": "string", + "description": "Organization agreements", + "x-example": "" + }, + "programManagerName": { + "type": "string", + "description": "Program manager's name.", + "x-example": "" + }, + "programManagerCalendar": { + "type": "string", + "description": "Program manager's calendar link.", + "x-example": "" + }, + "programDiscordChannelName": { + "type": "string", + "description": "Program's discord channel name.", + "x-example": "" + }, + "programDiscordChannelUrl": { + "type": "string", + "description": "Program's discord channel URL.", + "x-example": "" + }, + "billingLimits": { + "type": "object", + "description": "Billing limits reached", + "x-example": "", + "allOf": [ + { + "$ref": "#\/components\/schemas\/billingLimits" + } + ], + "nullable": true + }, + "billingPlanDowngrade": { + "type": "string", + "description": "Billing plan selected for downgrade.", + "x-example": "tier-1" + }, + "billingTaxId": { + "type": "string", + "description": "Tax Id", + "x-example": "" + }, + "markedForDeletion": { + "type": "boolean", + "description": "Marked for deletion", + "x-example": "" + }, + "platform": { + "type": "string", + "description": "Product with which the organization is associated (appwrite or imagine)", + "x-example": "imagine" + }, + "projects": { + "type": "array", + "description": "Selected projects", + "items": { + "type": "string" + }, + "x-example": "" + } + }, + "required": [ + "$id", + "$createdAt", + "$updatedAt", + "name", + "total", + "prefs", + "billingBudget", + "budgetAlerts", + "billingPlan", + "billingPlanId", + "billingPlanDetails", + "billingEmail", + "billingStartDate", + "billingCurrentInvoiceDate", + "billingNextInvoiceDate", + "billingTrialStartDate", + "billingTrialDays", + "billingAggregationId", + "billingInvoiceId", + "paymentMethodId", + "billingAddressId", + "backupPaymentMethodId", + "status", + "remarks", + "agreementBAA", + "programManagerName", + "programManagerCalendar", + "programDiscordChannelName", + "programDiscordChannelUrl", + "billingPlanDowngrade", + "billingTaxId", + "markedForDeletion", + "platform", + "projects" + ], + "example": { + "$id": "5e5ea5c16897e", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "$updatedAt": "2020-10-15T06:38:00.000+00:00", + "name": "VIP", + "total": 7, + "prefs": { + "theme": "pink", + "timezone": "UTC" + }, + "billingBudget": 50, + "budgetAlerts": [ + 50, + 75 + ], + "billingPlan": "tier-1", + "billingPlanId": "tier-1", + "billingPlanDetails": null, + "billingEmail": "billing@org.example", + "billingStartDate": "2020-10-15T06:38:00.000+00:00", + "billingCurrentInvoiceDate": "2020-10-15T06:38:00.000+00:00", + "billingNextInvoiceDate": "2020-10-15T06:38:00.000+00:00", + "billingTrialStartDate": "2020-10-15T06:38:00.000+00:00", + "billingTrialDays": 14, + "billingAggregationId": "adbc3de4rddfsd", + "billingInvoiceId": "adbc3de4rddfsd", + "paymentMethodId": "adbc3de4rddfsd", + "billingAddressId": "adbc3de4rddfsd", + "backupPaymentMethodId": "adbc3de4rddfsd", + "status": "active", + "remarks": "Pending initial payment", + "agreementBAA": "", + "programManagerName": "", + "programManagerCalendar": "", + "programDiscordChannelName": "", + "programDiscordChannelUrl": "", + "billingLimits": "", + "billingPlanDowngrade": "tier-1", + "billingTaxId": "", + "markedForDeletion": "", + "platform": "imagine", + "projects": "" + } + }, "backupPolicy": { "description": "backup", "type": "object", @@ -79676,6 +81759,79 @@ "enabled": true } }, + "program": { + "description": "Program", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Program ID", + "x-example": "" + }, + "title": { + "type": "string", + "description": "Program title", + "x-example": "" + }, + "description": { + "type": "string", + "description": "Program description", + "x-example": "" + }, + "tag": { + "type": "string", + "description": "Program tag for highlighting on console", + "x-example": null + }, + "icon": { + "type": "string", + "description": "Program icon for highlighting on console", + "x-example": null + }, + "url": { + "type": "string", + "description": "URL for more information on this program", + "x-example": "" + }, + "active": { + "type": "boolean", + "description": "Whether this program is active", + "x-example": false + }, + "external": { + "type": "boolean", + "description": "Whether this program is external", + "x-example": false + }, + "billingPlanId": { + "type": "string", + "description": "Billing plan ID that this is program is associated with.", + "x-example": "" + } + }, + "required": [ + "$id", + "title", + "description", + "tag", + "icon", + "url", + "active", + "external", + "billingPlanId" + ], + "example": { + "$id": "", + "title": "", + "description": "", + "tag": null, + "icon": null, + "url": "", + "active": false, + "external": false, + "billingPlanId": "" + } + }, "backupRestoration": { "description": "Restoration", "type": "object", @@ -79739,7 +81895,7 @@ "options": { "type": "string", "description": "Optional data in key-value object. ", - "x-example": "{databases.database[{oldId, newId, newName}]}" + "x-example": "{databases.database[{oldId, newId, newName, newSpecification}]}" } }, "required": [ @@ -79766,7 +81922,287 @@ "migrationId": "did8jx6ws45jana098ab7", "services": "['databases', 'storage']", "resources": "['databases', 'collections', 'attributes', 'indexes']", - "options": "{databases.database[{oldId, newId, newName}]}" + "options": "{databases.database[{oldId, newId, newName, newSpecification}]}" + } + }, + "cloudLocale": { + "description": "Locale", + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "User IP address.", + "x-example": "127.0.0.1" + }, + "countryCode": { + "type": "string", + "description": "Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format", + "x-example": "US" + }, + "country": { + "type": "string", + "description": "Country name. This field support localization.", + "x-example": "United States" + }, + "continentCode": { + "type": "string", + "description": "Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.", + "x-example": "NA" + }, + "continent": { + "type": "string", + "description": "Continent name. This field support localization.", + "x-example": "North America" + }, + "eu": { + "type": "boolean", + "description": "True if country is part of the European Union.", + "x-example": false + }, + "currency": { + "type": "string", + "description": "Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format", + "x-example": "USD" + }, + "city": { + "type": "string", + "description": "City", + "x-example": "Kathmandu", + "nullable": true + }, + "timeZone": { + "type": "string", + "description": "Name of timezone", + "x-example": "Asia\/Kathmandu", + "nullable": true + }, + "postalCode": { + "type": "string", + "description": "Postal code", + "x-example": "44600", + "nullable": true + }, + "latitude": { + "type": "number", + "description": "Latitude", + "x-example": "82.345", + "format": "double", + "nullable": true + }, + "longitude": { + "type": "number", + "description": "Longitude", + "x-example": "82.345", + "format": "double", + "nullable": true + }, + "autonomousSystemNumber": { + "type": "string", + "description": "Autonomous System Number (ASN) of the IP", + "x-example": "15169", + "nullable": true + }, + "autonomousSystemOrganization": { + "type": "string", + "description": "Organization that owns the ASN", + "x-example": "GOOGLE", + "nullable": true + }, + "isp": { + "type": "string", + "description": "Internet service provider of the IP", + "x-example": "Google", + "nullable": true + }, + "connectionType": { + "type": "string", + "description": "Connection type of the IP (e.g. cable, cellular, corporate)", + "x-example": "cable", + "nullable": true + }, + "connectionUsageType": { + "type": "string", + "description": "User type classification of the IP (e.g. residential, business, hosting)", + "x-example": "residential", + "nullable": true + }, + "connectionOrganization": { + "type": "string", + "description": "Registered organization of the IP", + "x-example": "Google LLC", + "nullable": true + } + }, + "required": [ + "ip", + "countryCode", + "country", + "continentCode", + "continent", + "eu", + "currency" + ], + "example": { + "ip": "127.0.0.1", + "countryCode": "US", + "country": "United States", + "continentCode": "NA", + "continent": "North America", + "eu": false, + "currency": "USD", + "city": "Kathmandu", + "timeZone": "Asia\/Kathmandu", + "postalCode": "44600", + "latitude": "82.345", + "longitude": "82.345", + "autonomousSystemNumber": "15169", + "autonomousSystemOrganization": "GOOGLE", + "isp": "Google", + "connectionType": "cable", + "connectionUsageType": "residential", + "connectionOrganization": "Google LLC" + } + }, + "usageBillingPlan": { + "description": "usageBillingPlan", + "type": "object", + "properties": { + "bandwidth": { + "type": "object", + "description": "Bandwidth additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "executions": { + "type": "object", + "description": "Executions additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "member": { + "type": "object", + "description": "Member additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "realtime": { + "type": "object", + "description": "Realtime additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "realtimeMessages": { + "type": "object", + "description": "Realtime messages additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "realtimeBandwidth": { + "type": "object", + "description": "Realtime bandwidth additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "storage": { + "type": "object", + "description": "Storage additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "users": { + "type": "object", + "description": "User additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "GBHours": { + "type": "object", + "description": "GBHour additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "imageTransformations": { + "type": "object", + "description": "Image transformation additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + }, + "credits": { + "type": "object", + "description": "Credits additional resources", + "x-example": null, + "allOf": [ + { + "$ref": "#\/components\/schemas\/additionalResource" + } + ] + } + }, + "required": [ + "bandwidth", + "executions", + "member", + "realtime", + "realtimeMessages", + "realtimeBandwidth", + "storage", + "users", + "GBHours", + "imageTransformations", + "credits" + ], + "example": { + "bandwidth": null, + "executions": null, + "member": null, + "realtime": null, + "realtimeMessages": null, + "realtimeBandwidth": null, + "storage": null, + "users": null, + "GBHours": null, + "imageTransformations": null, + "credits": null } }, "usageDataPoint": { @@ -79826,6 +82262,12 @@ "x-example": "app.example.com", "nullable": true }, + "ip": { + "type": "string", + "description": "Caller IP address when broken down by `ip`.", + "x-example": "192.0.2.44", + "nullable": true + }, "osName": { "type": "string", "description": "Operating system name when broken down by `osName`.", @@ -79862,10 +82304,10 @@ "x-example": "abc123", "nullable": true }, - "resource": { + "resourceType": { "type": "string", - "description": "Resource type when broken down by `resource` (gauges only).", - "x-example": "file", + "description": "Resource type when broken down by `resourceType`.", + "x-example": "bucket", "nullable": true } }, @@ -79883,13 +82325,14 @@ "country": "us", "region": "fra", "hostname": "app.example.com", + "ip": "192.0.2.44", "osName": "iOS", "clientType": "browser", "clientName": "Chrome", "deviceName": "smartphone", "teamId": "team_abc", "resourceId": "abc123", - "resource": "file" + "resourceType": "bucket" } }, "usageEventList": { @@ -80555,6 +82998,31 @@ "interval": 5 } }, + "oauth2PAR": { + "description": "OAuth2 PAR", + "type": "object", + "properties": { + "request_uri": { + "type": "string", + "description": "Authorization request handle to pass to the authorize endpoint.", + "x-example": "urn:appwrite:oauth2:request:5e5ea5c16897e" + }, + "expires_in": { + "type": "integer", + "description": "Lifetime of the authorization request handle in seconds.", + "x-example": 600, + "format": "int32" + } + }, + "required": [ + "request_uri", + "expires_in" + ], + "example": { + "request_uri": "urn:appwrite:oauth2:request:5e5ea5c16897e", + "expires_in": 600 + } + }, "oauth2Token": { "description": "OAuth2 Token", "type": "object", @@ -80615,6 +83083,110 @@ "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." } }, + "oauth2Project": { + "description": "OAuth2 Project", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Project ID.", + "x-example": "5e5ea5c16897e" + }, + "region": { + "type": "string", + "description": "Region ID the project is deployed in.", + "x-example": "fra" + }, + "endpoint": { + "type": "string", + "description": "API endpoint of the region the project is deployed in. Empty when the region has no public hostname configured.", + "x-example": "https:\/\/fra.cloud.appwrite.io\/v1" + } + }, + "required": [ + "$id", + "region", + "endpoint" + ], + "example": { + "$id": "5e5ea5c16897e", + "region": "fra", + "endpoint": "https:\/\/fra.cloud.appwrite.io\/v1" + } + }, + "oauth2Organization": { + "description": "OAuth2 Organization", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Organization ID.", + "x-example": "5e5ea5c16897e" + } + }, + "required": [ + "$id" + ], + "example": { + "$id": "5e5ea5c16897e" + } + }, + "oauth2ProjectList": { + "description": "OAuth2 accessible projects list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of projects that matched your query.", + "x-example": 5, + "format": "int32" + }, + "projects": { + "type": "array", + "description": "List of projects.", + "items": { + "$ref": "#\/components\/schemas\/oauth2Project" + }, + "x-example": "" + } + }, + "required": [ + "total", + "projects" + ], + "example": { + "total": 5, + "projects": "" + } + }, + "oauth2OrganizationList": { + "description": "OAuth2 accessible organizations list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of organizations that matched your query.", + "x-example": 5, + "format": "int32" + }, + "organizations": { + "type": "array", + "description": "List of organizations.", + "items": { + "$ref": "#\/components\/schemas\/oauth2Organization" + }, + "x-example": "" + } + }, + "required": [ + "total", + "organizations" + ], + "example": { + "total": 5, + "organizations": "" + } + }, "activityEventList": { "description": "Activity event list", "type": "object", @@ -80823,6 +83395,12 @@ "demo": "<YOUR_JWT>" } }, + "Bearer": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "The OAuth access token to authenticate with" + }, "Locale": { "type": "apiKey", "name": "X-Appwrite-Locale",