From 3d1e1c982bbc56100792b95c981ceb460b1f4f0b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 5 Aug 2026 03:36:09 +0000 Subject: [PATCH] chore: sync latest specs --- specs/latest/open-api3-latest-client.json | 17 +- specs/latest/open-api3-latest-console.json | 1516 ++++++++++++++++---- specs/latest/open-api3-latest-server.json | 511 ++++--- 3 files changed, 1607 insertions(+), 437 deletions(-) diff --git a/specs/latest/open-api3-latest-client.json b/specs/latest/open-api3-latest-client.json index f6be858b..c56ebadc 100644 --- a/specs/latest/open-api3-latest-client.json +++ b/specs/latest/open-api3-latest-client.json @@ -1,7 +1,7 @@ { "openapi": "3.0.0", "info": { - "version": "1.9.5", + "version": "1.9.6", "title": "Appwrite", "description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)", "termsOfService": "https:\/\/appwrite.io\/policy\/terms", @@ -3332,11 +3332,12 @@ "parameters": [ { "name": "sessionId", - "description": "Session ID. Use the string 'current' to get the current device session.", + "description": "Session ID. Use the string 'current' to get the current device session. Defaults to 'current'.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "current" }, "in": "path" } @@ -3394,11 +3395,12 @@ "parameters": [ { "name": "sessionId", - "description": "Session ID. Use the string 'current' to update the current device session.", + "description": "Session ID. Use the string 'current' to update the current device session. Defaults to 'current'.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "current" }, "in": "path" } @@ -3449,11 +3451,12 @@ "parameters": [ { "name": "sessionId", - "description": "Session ID. Use the string 'current' to delete the current device session.", + "description": "Session ID. Use the string 'current' to delete the current device session. Defaults to 'current'.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "current" }, "in": "path" } diff --git a/specs/latest/open-api3-latest-console.json b/specs/latest/open-api3-latest-console.json index 0d099d8c..6b0aff3f 100644 --- a/specs/latest/open-api3-latest-console.json +++ b/specs/latest/open-api3-latest-console.json @@ -1,7 +1,7 @@ { "openapi": "3.0.0", "info": { - "version": "1.9.5", + "version": "1.9.6", "title": "Appwrite", "description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)", "termsOfService": "https:\/\/appwrite.io\/policy\/terms", @@ -4703,11 +4703,12 @@ "parameters": [ { "name": "sessionId", - "description": "Session ID. Use the string 'current' to get the current device session.", + "description": "Session ID. Use the string 'current' to get the current device session. Defaults to 'current'.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "current" }, "in": "path" } @@ -4765,11 +4766,12 @@ "parameters": [ { "name": "sessionId", - "description": "Session ID. Use the string 'current' to update the current device session.", + "description": "Session ID. Use the string 'current' to update the current device session. Defaults to 'current'.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "current" }, "in": "path" } @@ -4820,11 +4822,12 @@ "parameters": [ { "name": "sessionId", - "description": "Session ID. Use the string 'current' to delete the current device session.", + "description": "Session ID. Use the string 'current' to delete the current device session. Defaults to 'current'.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "current" }, "in": "path" } @@ -6079,6 +6082,474 @@ ] } }, + "\/affiliates\/links": { + "get": { + "summary": "List affiliate links", + "operationId": "affiliatesListLinks", + "tags": [ + "affiliates" + ], + "description": "List affiliate links for the current account.\n", + "responses": { + "200": { + "description": "Affiliate links list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/affiliateLinkList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listLinks", + "group": "links", + "cookies": false, + "type": "", + "demo": "affiliates\/list-links.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "account", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/affiliates\/list-links.md", + "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\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, status", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + } + ] + }, + "post": { + "summary": "Create affiliate link", + "operationId": "affiliatesCreateLink", + "tags": [ + "affiliates" + ], + "description": "Create a shareable affiliate link for the current account. Every console user is automatically in the affiliates program.\n", + "responses": { + "201": { + "description": "AffiliateLink", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/affiliateLink" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createLink", + "group": "links", + "cookies": false, + "type": "", + "demo": "affiliates\/create-link.md", + "rate-limit": 10, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "account", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/affiliates\/create-link.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "linkId": { + "type": "string", + "description": "Link 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. This ID is the shareable referral code.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "name": { + "type": "string", + "description": "Link name. Max length: 128 chars.", + "default": "", + "x-example": "" + } + }, + "required": [ + "linkId" + ] + } + } + } + } + } + }, + "\/affiliates\/links\/{linkId}": { + "get": { + "summary": "Get affiliate link", + "operationId": "affiliatesGetLink", + "tags": [ + "affiliates" + ], + "description": "Get a single affiliate link owned by the current account.\n", + "responses": { + "200": { + "description": "AffiliateLink", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/affiliateLink" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getLink", + "group": "links", + "cookies": false, + "type": "", + "demo": "affiliates\/get-link.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "account", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/affiliates\/get-link.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "linkId", + "description": "Link ID.", + "required": true, + "schema": { + "type": "string", + "x-appwrite": { + "idGenerator": "ID.unique" + }, + "x-example": "" + }, + "in": "path" + } + ] + }, + "delete": { + "summary": "Delete affiliate link", + "operationId": "affiliatesDeleteLink", + "tags": [ + "affiliates" + ], + "description": "Delete an affiliate link owned by the current account. Existing referrals and rewards keep their stored link IDs for history.\n", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteLink", + "group": "links", + "cookies": false, + "type": "", + "demo": "affiliates\/delete-link.md", + "rate-limit": 10, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "account", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/affiliates\/delete-link.md", + "produces": [ + "application\/json" + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "linkId", + "description": "Link ID.", + "required": true, + "schema": { + "type": "string", + "x-appwrite": { + "idGenerator": "ID.unique" + }, + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/affiliates\/referrals": { + "get": { + "summary": "List affiliate referrals", + "operationId": "affiliatesListReferrals", + "tags": [ + "affiliates" + ], + "description": "List referrals attributed to the current account's affiliate links. Responses include privacy-safe metadata only (truncated user ID and signup country), never email or name. Referrals are created automatically on signup when the invite cookie is present.\n", + "responses": { + "200": { + "description": "Affiliate referrals list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/affiliateReferralList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listReferrals", + "group": "referrals", + "cookies": false, + "type": "", + "demo": "affiliates\/list-referrals.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "account", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/affiliates\/list-referrals.md", + "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\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: linkId, referredUserMaskedId, referredUserCountry, status, attributedAt, expiresAt, convertedAt", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + } + ] + } + }, + "\/affiliates\/rewards": { + "get": { + "summary": "List affiliate rewards", + "operationId": "affiliatesListRewards", + "tags": [ + "affiliates" + ], + "description": "List rewards earned by the current account from affiliate link conversions.\n", + "responses": { + "200": { + "description": "Affiliate rewards list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/affiliateRewardList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listRewards", + "group": "rewards", + "cookies": false, + "type": "", + "demo": "affiliates\/list-rewards.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "account", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/affiliates\/list-rewards.md", + "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\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: linkId, referralId, amount, status, teamId, creditId", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + } + ] + } + }, + "\/affiliates\/rewards\/{rewardId}": { + "patch": { + "summary": "Update affiliate reward", + "operationId": "affiliatesUpdateReward", + "tags": [ + "affiliates" + ], + "description": "Claim a pending affiliate reward by setting its status to `claimed`. Creates organization credits for the target organization. The current user must be an owner of that organization.\n", + "responses": { + "200": { + "description": "AffiliateReward", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/affiliateReward" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateReward", + "group": "rewards", + "cookies": false, + "type": "", + "demo": "affiliates\/update-reward.md", + "rate-limit": 10, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "account", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/affiliates\/update-reward.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "rewardId", + "description": "Reward ID", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "New reward status. Use `claimed` to claim the reward as organization credits.", + "x-example": "claimed" + }, + "organizationId": { + "type": "string", + "description": "Organization ID to apply credits to when claiming.", + "x-example": "" + } + }, + "required": [ + "status", + "organizationId" + ] + } + } + } + } + } + }, "\/apps": { "get": { "summary": "List Applications", @@ -12457,6 +12928,9 @@ "sh_installations", "migrationdatabases", "migrationprojects", + "affiliatelinks", + "affiliatereferrals", + "affiliaterewards", "apps", "appsecrets", "appinstallations", @@ -12554,6 +13028,9 @@ "sh_installations", "migration_databases", "migration_projects", + "affiliate_links", + "affiliate_referrals", + "affiliate_rewards", "apps", "app_secrets", "app_installations", @@ -28699,6 +29176,124 @@ } } }, + "\/embeddings\/text": { + "post": { + "summary": "Create text embeddings", + "operationId": "embeddingsCreateTextEmbeddings", + "tags": [ + "embeddings" + ], + "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", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/embeddingList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createTextEmbeddings", + "group": "embeddings", + "cookies": false, + "type": "", + "demo": "embeddings\/create-text-embeddings.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\/embeddings\/create-text-embeddings.md", + "methods": [ + { + "name": "createTextEmbeddings", + "namespace": "embeddings", + "desc": "Create Text Embedding", + "auth": { + "Project": [] + }, + "parameters": [ + "texts", + "model" + ], + "required": [ + "texts" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/embeddingList" + } + ], + "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": "embeddings\/create-text-embeddings.md", + "public": true + } + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [], + "JWT": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "texts": { + "type": "array", + "description": "Array of text to generate embeddings.", + "x-example": null, + "items": { + "type": "string" + } + }, + "model": { + "type": "string", + "description": "The embedding model to use for generating vector embeddings.", + "default": "nomic-embed-text", + "x-example": "nomic-embed-text", + "enum": [ + "nomic-embed-text", + "embedding-gemma", + "all-minilm", + "bge-small" + ], + "x-enum-name": "EmbeddingModel", + "x-enum-keys": [ + "nomic-embed-text", + "embedding-gemma", + "all-minilm", + "bge-small" + ] + } + }, + "required": [ + "texts" + ] + } + } + } + } + } + }, "\/functions": { "get": { "summary": "List functions", @@ -29210,6 +29805,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -29317,6 +29913,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -30389,6 +30986,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -30496,6 +31094,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -57191,6 +57790,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -57298,6 +57898,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -57484,6 +58085,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -57591,6 +58193,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -57851,6 +58454,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -57958,6 +58562,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -67864,6 +68469,97 @@ } } }, + "\/proxy\/invalidations": { + "post": { + "summary": "Create invalidation", + "operationId": "proxyCreateInvalidation", + "tags": [ + "proxy" + ], + "description": "Create a new CDN cache invalidation for a domain. Executes a hard purge of cached content.\n\nDepending on type, the invalidation purges a single cache tag, a single URL path, or all cached content for the domain.", + "responses": { + "201": { + "description": "Invalidation", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/proxyInvalidation" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createInvalidation", + "group": null, + "cookies": false, + "type": "", + "demo": "proxy\/create-invalidation.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "userId:{userId}, url:{url}", + "scope": "proxy.invalidations.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "description": "Domain name.", + "x-example": null + }, + "type": { + "type": "string", + "description": "Type of reference passed. Allowed values are: tag, path, all", + "x-example": "tag", + "enum": [ + "tag", + "path", + "all" + ], + "x-enum-name": "InvalidationType", + "x-enum-keys": [ + "tag", + "path", + "all" + ] + }, + "reference": { + "type": "string", + "description": "Reference to invalidate. Depending on type this can be: cache tag name (up to 128 characters), URL path (up to 2048 characters). Not required when type is all.", + "default": "", + "x-example": "" + } + }, + "required": [ + "domain", + "type" + ] + } + } + } + } + } + }, "\/proxy\/rules": { "get": { "summary": "List rules", @@ -83604,7 +84300,10 @@ "rate-limit": 60, "rate-time": 60, "rate-key": "projectId:{project.$id}", - "scope": "usage.read", + "scope": [ + "usage.read", + "account" + ], "platforms": [ "console", "server" @@ -83624,7 +84323,7 @@ "parameters": [ { "name": "metrics", - "description": "One to ten metric names. Single-metric callers pass a one-element array. Example: `metrics[]=executions` or `metrics[]=executions&metrics[]=executions.compute` for stacked charts.", + "description": "One to ten metric names. Single-metric callers pass a one-element array. Example: `metrics[]=executions` or `metrics[]=executions&metrics[]=executions.compute` for stacked charts. On console: `metrics[]=affiliates.clicks`.", "required": true, "schema": { "type": "array", @@ -83653,7 +84352,22 @@ "required": false, "schema": { "type": "string", - "x-example": "1m" + "x-example": "1m", + "enum": [ + "1m", + "15m", + "30m", + "1h", + "1d" + ], + "x-enum-name": "UsageInterval", + "x-enum-keys": [ + "One Minute", + "Fifteen Minutes", + "Thirty Minutes", + "One Hour", + "One Day" + ] }, "in": "query" }, @@ -83664,7 +84378,50 @@ "schema": { "type": "array", "items": { - "type": "string" + "type": "string", + "enum": [ + "path", + "method", + "status", + "service", + "resourceType", + "country", + "continentCode", + "city", + "region", + "hostname", + "ip", + "osName", + "clientType", + "clientName", + "deviceName", + "sdk", + "sdkVersion", + "teamId", + "resourceId" + ], + "x-enum-name": "UsageEventDimension", + "x-enum-keys": [ + "path", + "method", + "status", + "service", + "resourceType", + "country", + "continentCode", + "city", + "region", + "hostname", + "ip", + "osName", + "clientType", + "clientName", + "deviceName", + "sdk", + "sdkVersion", + "teamId", + "resourceId" + ] }, "default": [] }, @@ -83701,6 +84458,15 @@ "schema": { "type": "string", "x-example": "time", + "enum": [ + "time", + "value" + ], + "x-enum-name": "UsageOrderBy", + "x-enum-keys": [ + "time", + "value" + ], "default": "time" }, "in": "query" @@ -83712,6 +84478,15 @@ "schema": { "type": "string", "x-example": "asc", + "enum": [ + "asc", + "desc" + ], + "x-enum-name": "UsageOrderDirection", + "x-enum-keys": [ + "asc", + "desc" + ], "default": "desc" }, "in": "query" @@ -83750,7 +84525,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\nA metric with no stored samples in the window returns an empty `points[]`. A metric that really did read zero returns a point whose `value` is `0`, so \"no such series\" and \"a genuine zero\" are different answers.\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`, `ordinal`. `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`). `ordinal` separates per-node series for multi-node resources such as dedicated databases (0 is the primary; 1+ are replicas). `queries[]` filters the underlying rows using the standard Utopia query syntax \u2014 `equal(\"resourceType\", [\"bucket\"])`, `equal(\"resourceId\", [\"abc123\"])`, `equal(\"teamId\", [\"team_x\"])`, `equal(\"ordinal\", [\"0\"])`, `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).", + "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\nA metric with no stored samples in the window returns an empty `points[]`. A metric that really did read zero returns a point whose `value` is `0`, so \"no such series\" and \"a genuine zero\" are different answers.\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`, `ordinal`. `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`). `ordinal` separates per-node series for multi-node resources such as dedicated databases. It is a stable per-node identity, not a role \u2014 ordinal 0 is the first member created, and a failover can leave the primary on any ordinal, so read the role from the database's replicas endpoint rather than inferring it here. `queries[]` filters the underlying rows using the standard Utopia query syntax \u2014 `equal(\"resourceType\", [\"bucket\"])`, `equal(\"resourceId\", [\"abc123\"])`, `equal(\"teamId\", [\"team_x\"])`, `equal(\"ordinal\", [\"0\"])`, `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", @@ -83822,7 +84597,22 @@ "required": false, "schema": { "type": "string", - "x-example": "1m" + "x-example": "1m", + "enum": [ + "1m", + "15m", + "30m", + "1h", + "1d" + ], + "x-enum-name": "UsageInterval", + "x-enum-keys": [ + "One Minute", + "Fifteen Minutes", + "Thirty Minutes", + "One Hour", + "One Day" + ] }, "in": "query" }, @@ -83833,7 +84623,22 @@ "schema": { "type": "array", "items": { - "type": "string" + "type": "string", + "enum": [ + "resourceId", + "teamId", + "service", + "resourceType", + "ordinal" + ], + "x-enum-name": "UsageGaugeDimension", + "x-enum-keys": [ + "resourceId", + "teamId", + "service", + "resourceType", + "ordinal" + ] }, "default": [] }, @@ -83870,6 +84675,15 @@ "schema": { "type": "string", "x-example": "time", + "enum": [ + "time", + "value" + ], + "x-enum-name": "UsageOrderBy", + "x-enum-keys": [ + "time", + "value" + ], "default": "time" }, "in": "query" @@ -83881,6 +84695,15 @@ "schema": { "type": "string", "x-example": "asc", + "enum": [ + "asc", + "desc" + ], + "x-enum-name": "UsageOrderDirection", + "x-enum-keys": [ + "asc", + "desc" + ], "default": "desc" }, "in": "query" @@ -85385,7 +86208,7 @@ "sessionId": { "type": "string", "description": "Session ID. Use the string 'recent' to use the most recent session. Defaults to the most recent session.", - "default": "", + "default": "recent", "x-example": "" }, "duration": { @@ -88945,124 +89768,6 @@ } } }, - "\/vectorsdb\/embeddings\/text": { - "post": { - "summary": "Create text embeddings", - "operationId": "vectorsDBCreateTextEmbeddings", - "tags": [ - "vectorsDB" - ], - "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", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/embeddingList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createTextEmbeddings", - "group": "embeddings", - "cookies": false, - "type": "", - "demo": "vectorsdb\/create-text-embeddings.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\/vectorsdb\/create-text-embeddings.md", - "methods": [ - { - "name": "createTextEmbeddings", - "namespace": "vectorsDB", - "desc": "Create Text Embedding", - "auth": { - "Project": [] - }, - "parameters": [ - "texts", - "model" - ], - "required": [ - "texts" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/embeddingList" - } - ], - "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 - } - ], - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [], - "JWT": [] - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "texts": { - "type": "array", - "description": "Array of text to generate embeddings.", - "x-example": null, - "items": { - "type": "string" - } - }, - "model": { - "type": "string", - "description": "The embedding model to use for generating vector embeddings.", - "default": "nomic-embed-text", - "x-example": "nomic-embed-text", - "enum": [ - "nomic-embed-text", - "embedding-gemma", - "all-minilm", - "bge-small" - ], - "x-enum-name": "EmbeddingModel", - "x-enum-keys": [ - "nomic-embed-text", - "embedding-gemma", - "all-minilm", - "bge-small" - ] - } - }, - "required": [ - "texts" - ] - } - } - } - } - } - }, "\/vectorsdb\/specifications": { "get": { "summary": "List specifications", @@ -94216,6 +94921,10 @@ "name": "organizations", "description": "The Organizations service allows you to manage organization billing, plans, invoices, and add-ons." }, + { + "name": "affiliates", + "description": "The Affiliates service allows you to share referral codes, track conversions, and apply earned credits." + }, { "name": "backups", "description": "The Backups service allows you to manage backup policies, archives, and restorations for your project." @@ -94236,6 +94945,10 @@ "name": "graphql", "description": "The GraphQL API allows you to query and mutate your Appwrite server using GraphQL." }, + { + "name": "embeddings", + "description": "" + }, { "name": "assistant", "description": "" @@ -109222,84 +109935,60 @@ "x-example": [] }, "embeddingsText": { - "type": "object", + "type": "array", "description": "Aggregated number of text embedding calls per period.", - "x-example": [], - "allOf": [ - { - "$ref": "#\/components\/schemas\/metric" - } - ] + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] }, "embeddingsTextTokens": { - "type": "object", + "type": "array", "description": "Aggregated number of tokens processed by text embeddings per period.", - "x-example": [], - "allOf": [ - { - "$ref": "#\/components\/schemas\/metric" - } - ] + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] }, "embeddingsTextDuration": { - "type": "object", + "type": "array", "description": "Aggregated duration spent generating text embeddings per period.", - "x-example": [], - "allOf": [ - { - "$ref": "#\/components\/schemas\/metric" - } - ] + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] }, "embeddingsTextErrors": { - "type": "object", + "type": "array", "description": "Aggregated number of errors while generating text embeddings per period.", - "x-example": [], - "allOf": [ - { - "$ref": "#\/components\/schemas\/metric" - } - ] + "items": { + "$ref": "#\/components\/schemas\/metric" + }, + "x-example": [] }, "embeddingsTextTotal": { - "type": "object", + "type": "integer", "description": "Total aggregated number of text embedding calls.", "x-example": 0, - "allOf": [ - { - "$ref": "#\/components\/schemas\/metric" - } - ] + "format": "int32" }, "embeddingsTextTokensTotal": { - "type": "object", + "type": "integer", "description": "Total aggregated number of tokens processed by text.", "x-example": 0, - "allOf": [ - { - "$ref": "#\/components\/schemas\/metric" - } - ] + "format": "int32" }, "embeddingsTextDurationTotal": { - "type": "object", + "type": "integer", "description": "Total aggregated duration spent generating text embeddings.", "x-example": 0, - "allOf": [ - { - "$ref": "#\/components\/schemas\/metric" - } - ] + "format": "int32" }, "embeddingsTextErrorsTotal": { - "type": "object", + "type": "integer", "description": "Total aggregated number of errors while generating text embeddings.", "x-example": 0, - "allOf": [ - { - "$ref": "#\/components\/schemas\/metric" - } - ] + "format": "int32" }, "functionsExecutions": { "type": "array", @@ -112071,6 +112760,303 @@ "billingCycleEnd": "2024-02-01T00:00:00.000+00:00" } }, + "affiliateLink": { + "description": "AffiliateLink", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Link ID. This is the shareable referral code.", + "x-example": "my-campaign" + }, + "$createdAt": { + "type": "string", + "description": "Link creation date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "$updatedAt": { + "type": "string", + "description": "Link update date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "userId": { + "type": "string", + "description": "User ID of the link owner.", + "x-example": "5e5ea5c16897e" + }, + "name": { + "type": "string", + "description": "Optional link name.", + "x-example": "Launch campaign" + }, + "status": { + "type": "string", + "description": "Link status. Can be one of `active` or `disabled`.", + "x-example": "active" + } + }, + "required": [ + "$id", + "$createdAt", + "$updatedAt", + "userId", + "name", + "status" + ], + "example": { + "$id": "my-campaign", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "$updatedAt": "2020-10-15T06:38:00.000+00:00", + "userId": "5e5ea5c16897e", + "name": "Launch campaign", + "status": "active" + } + }, + "affiliateLinkList": { + "description": "Affiliate links list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of links that matched your query.", + "x-example": 5, + "format": "int32" + }, + "links": { + "type": "array", + "description": "List of links.", + "items": { + "$ref": "#\/components\/schemas\/affiliateLink" + }, + "x-example": "" + } + }, + "required": [ + "total", + "links" + ], + "example": { + "total": 5, + "links": "" + } + }, + "affiliateReferral": { + "description": "AffiliateReferral", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Referral ID.", + "x-example": "5e5ea5c16897e" + }, + "$createdAt": { + "type": "string", + "description": "Referral creation date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "$updatedAt": { + "type": "string", + "description": "Referral update date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "linkId": { + "type": "string", + "description": "Affiliate link ID used for attribution.", + "x-example": "my-campaign" + }, + "referredUserMaskedId": { + "type": "string", + "description": "Privacy-safe truncated referred user ID.", + "x-example": "****97e" + }, + "referredUserCountry": { + "type": "string", + "description": "ISO 3166-1 alpha-2 country code of the referred user at signup, when available.", + "x-example": "us" + }, + "status": { + "type": "string", + "description": "Referral status. Can be one of `pending`, `converted`, or `expired`. `expired` is derived from `expiresAt` when still pending.", + "x-example": "pending" + }, + "attributedAt": { + "type": "string", + "description": "Attribution time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "expiresAt": { + "type": "string", + "description": "Attribution expiry time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "convertedAt": { + "type": "string", + "description": "Conversion time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true + } + }, + "required": [ + "$id", + "$createdAt", + "$updatedAt", + "linkId", + "referredUserMaskedId", + "referredUserCountry", + "status", + "attributedAt", + "expiresAt" + ], + "example": { + "$id": "5e5ea5c16897e", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "$updatedAt": "2020-10-15T06:38:00.000+00:00", + "linkId": "my-campaign", + "referredUserMaskedId": "****97e", + "referredUserCountry": "us", + "status": "pending", + "attributedAt": "2020-10-15T06:38:00.000+00:00", + "expiresAt": "2020-10-15T06:38:00.000+00:00", + "convertedAt": "2020-10-15T06:38:00.000+00:00" + } + }, + "affiliateReferralList": { + "description": "Affiliate referrals list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of referrals that matched your query.", + "x-example": 5, + "format": "int32" + }, + "referrals": { + "type": "array", + "description": "List of referrals.", + "items": { + "$ref": "#\/components\/schemas\/affiliateReferral" + }, + "x-example": "" + } + }, + "required": [ + "total", + "referrals" + ], + "example": { + "total": 5, + "referrals": "" + } + }, + "affiliateReward": { + "description": "AffiliateReward", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Reward ID.", + "x-example": "5e5ea5c16897e" + }, + "$createdAt": { + "type": "string", + "description": "Reward creation date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "$updatedAt": { + "type": "string", + "description": "Reward update date in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "userId": { + "type": "string", + "description": "User ID of the reward owner.", + "x-example": "5e5ea5c16897e" + }, + "linkId": { + "type": "string", + "description": "Affiliate link ID that earned this reward.", + "x-example": "my-campaign" + }, + "referralId": { + "type": "string", + "description": "Referral ID that earned this reward.", + "x-example": "5e5ea5c16897e" + }, + "amount": { + "type": "number", + "description": "Reward amount in USD.", + "x-example": 10, + "format": "double" + }, + "status": { + "type": "string", + "description": "Reward status. Can be one of `pending` or `claimed`.", + "x-example": "pending" + }, + "teamId": { + "type": "string", + "description": "Organization ID the reward was claimed on.", + "x-example": "5e5ea5c16897e", + "nullable": true + }, + "creditId": { + "type": "string", + "description": "Credit document ID created when the reward was claimed.", + "x-example": "5e5ea5c16897e", + "nullable": true + } + }, + "required": [ + "$id", + "$createdAt", + "$updatedAt", + "userId", + "linkId", + "referralId", + "amount", + "status" + ], + "example": { + "$id": "5e5ea5c16897e", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "$updatedAt": "2020-10-15T06:38:00.000+00:00", + "userId": "5e5ea5c16897e", + "linkId": "my-campaign", + "referralId": "5e5ea5c16897e", + "amount": 10, + "status": "pending", + "teamId": "5e5ea5c16897e", + "creditId": "5e5ea5c16897e" + } + }, + "affiliateRewardList": { + "description": "Affiliate rewards list", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of rewards that matched your query.", + "x-example": 5, + "format": "int32" + }, + "rewards": { + "type": "array", + "description": "List of rewards.", + "items": { + "$ref": "#\/components\/schemas\/affiliateReward" + }, + "x-example": "" + } + }, + "required": [ + "total", + "rewards" + ], + "example": { + "total": 5, + "rewards": "" + } + }, "aggregationBreakdown": { "description": "Breakdown", "type": "object", @@ -112873,7 +113859,8 @@ "type": "integer", "description": "Members", "x-example": 25, - "format": "int32" + "format": "int32", + "nullable": true }, "webhooks": { "type": "integer", @@ -113017,7 +114004,8 @@ "type": "integer", "description": "Activity log days", "x-example": 7, - "format": "int32" + "format": "int32", + "nullable": true }, "usageLogs": { "type": "integer", @@ -113158,7 +114146,8 @@ "backupsEnabled": { "type": "boolean", "description": "Does plan support backup policies.", - "x-example": true + "x-example": true, + "nullable": true }, "usagePerProject": { "type": "boolean", @@ -113178,8 +114167,9 @@ "backupPolicies": { "type": "integer", "description": "How many policies does plan support", - "x-example": true, - "format": "int32" + "x-example": 1, + "format": "int32", + "nullable": true }, "deploymentSize": { "type": "integer", @@ -113253,7 +114243,6 @@ "storage", "imageTransformations", "screenshotsGenerated", - "members", "webhooks", "wafRules", "projects", @@ -113277,7 +114266,6 @@ "topics", "authPhone", "domains", - "activityLogs", "usageLogs", "projectInactivityDays", "alertLimit", @@ -113300,10 +114288,8 @@ "supportsFreeEmailValidation", "supportsCorporateEmailValidation", "supportsProjectSpecificRoles", - "backupsEnabled", "usagePerProject", "supportedAddons", - "backupPolicies", "deploymentSize", "buildSize", "databasesAllowEncrypt", @@ -113375,7 +114361,7 @@ "backupsEnabled": true, "usagePerProject": true, "supportedAddons": null, - "backupPolicies": true, + "backupPolicies": 1, "deploymentSize": 30, "buildSize": 2000, "databasesAllowEncrypt": false, @@ -113397,7 +114383,8 @@ { "$ref": "#\/components\/schemas\/billingPlanAddonDetails" } - ] + ], + "nullable": true }, "projects": { "type": "object", @@ -113407,13 +114394,10 @@ { "$ref": "#\/components\/schemas\/billingPlanAddonDetails" } - ] + ], + "nullable": true } }, - "required": [ - "seats", - "projects" - ], "example": { "seats": null, "projects": null @@ -113448,7 +114432,8 @@ "currency": { "type": "string", "description": "Price currency", - "x-example": "USD" + "x-example": "USD", + "nullable": true }, "price": { "type": "number", @@ -113473,7 +114458,6 @@ "planIncluded", "limit", "type", - "currency", "price", "value", "invoiceDesc" @@ -114433,7 +115417,7 @@ }, "engine": { "type": "string", - "description": "Database engine: postgresql, mysql, or mongodb.", + "description": "Database engine: postgresql, mysql, or mongodb. Null until the backing reports one.", "x-example": "postgresql" }, "version": { @@ -115282,7 +116266,7 @@ }, "transferStatus": { "type": "string", - "description": "Transfer status for domains being transferred in.", + "description": "Transfer status for domains being transferred in. Null when the domain is not being transferred.", "x-example": "pending_registry", "enum": [ "transferrable", @@ -115294,7 +116278,8 @@ "cancelled", "service_unavailable" ], - "x-enum-name": "DomainTransferStatusEnum" + "x-enum-name": "DomainTransferStatusEnum", + "nullable": true }, "teamId": { "type": "string", @@ -115321,7 +116306,6 @@ "renewal", "autoRenewal", "renewalPrice", - "transferStatus", "teamId", "dnsRecords" ], @@ -115996,16 +116980,16 @@ }, "lagSeconds": { "type": "number", - "description": "Replication lag in seconds.", + "description": "Replication lag in seconds. Null when the lag is not known: a primary has none to report, and a member the backend has not probed has none yet.", "x-example": 0.5, - "format": "double" + "format": "double", + "nullable": true } }, "required": [ "$id", "role", - "status", - "lagSeconds" + "status" ], "example": { "$id": "1", @@ -116202,6 +117186,44 @@ "members": [] } }, + "proxyInvalidation": { + "description": "Invalidation", + "type": "object", + "properties": { + "domain": { + "type": "string", + "description": "Domain name.", + "x-example": "appwrite.company.com" + }, + "type": { + "type": "string", + "description": "Invalidation type. Possible values are \"tag\", \"path\", or \"all\".", + "x-example": "tag" + }, + "reference": { + "type": "string", + "description": "Invalidated reference. Depending on type this is a cache tag name, a URL path, or empty when type is all.", + "x-example": "products" + }, + "status": { + "type": "string", + "description": "Invalidation status.", + "x-example": "success" + } + }, + "required": [ + "domain", + "type", + "reference", + "status" + ], + "example": { + "domain": "appwrite.company.com", + "type": "tag", + "reference": "products", + "status": "success" + } + }, "invoice": { "description": "Invoice", "type": "object", @@ -116435,9 +117457,10 @@ }, "billingBudget": { "type": "integer", - "description": "Project budget limit", + "description": "Project budget limit. Null when no budget is set.", "x-example": 50, - "format": "int32" + "format": "int32", + "nullable": true }, "budgetAlerts": { "type": "array", @@ -116494,7 +117517,8 @@ "billingTrialStartDate": { "type": "string", "description": "Start date of trial.", - "x-example": "2020-10-15T06:38:00.000+00:00" + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true }, "billingTrialDays": { "type": "integer", @@ -116520,12 +117544,14 @@ "billingAddressId": { "type": "string", "description": "Default payment method.", - "x-example": "adbc3de4rddfsd" + "x-example": "adbc3de4rddfsd", + "nullable": true }, "backupPaymentMethodId": { "type": "string", "description": "Backup payment method.", - "x-example": "adbc3de4rddfsd" + "x-example": "adbc3de4rddfsd", + "nullable": true }, "status": { "type": "string", @@ -116535,32 +117561,38 @@ "remarks": { "type": "string", "description": "Remarks on team status.", - "x-example": "Pending initial payment" + "x-example": "Pending initial payment", + "nullable": true }, "agreementBAA": { "type": "string", "description": "Organization agreements", - "x-example": "" + "x-example": "", + "nullable": true }, "programManagerName": { "type": "string", "description": "Program manager's name.", - "x-example": "" + "x-example": "", + "nullable": true }, "programManagerCalendar": { "type": "string", "description": "Program manager's calendar link.", - "x-example": "" + "x-example": "", + "nullable": true }, "programDiscordChannelName": { "type": "string", "description": "Program's discord channel name.", - "x-example": "" + "x-example": "", + "nullable": true }, "programDiscordChannelUrl": { "type": "string", "description": "Program's discord channel URL.", - "x-example": "" + "x-example": "", + "nullable": true }, "billingLimits": { "type": "object", @@ -116576,12 +117608,14 @@ "billingPlanDowngrade": { "type": "string", "description": "Billing plan selected for downgrade.", - "x-example": "tier-1" + "x-example": "tier-1", + "nullable": true }, "billingTaxId": { "type": "string", "description": "Tax Id", - "x-example": "" + "x-example": "", + "nullable": true }, "markedForDeletion": { "type": "boolean", @@ -116609,7 +117643,6 @@ "name", "total", "prefs", - "billingBudget", "budgetAlerts", "billingPlan", "billingPlanId", @@ -116618,22 +117651,11 @@ "billingStartDate", "billingCurrentInvoiceDate", "billingNextInvoiceDate", - "billingTrialStartDate", "billingTrialDays", "billingAggregationId", "billingInvoiceId", "paymentMethodId", - "billingAddressId", - "backupPaymentMethodId", "status", - "remarks", - "agreementBAA", - "programManagerName", - "programManagerCalendar", - "programDiscordChannelName", - "programDiscordChannelUrl", - "billingPlanDowngrade", - "billingTaxId", "markedForDeletion", "platform", "projects" @@ -117592,8 +118614,9 @@ }, "available": { "type": "boolean", - "description": "Does the organization have access to this region.", - "x-example": false + "description": "Does the organization have access to this region. Null when access has not been resolved.", + "x-example": false, + "nullable": true }, "disabled": { "type": "boolean", @@ -117614,7 +118637,6 @@ "required": [ "$id", "name", - "available", "disabled", "default", "flag" @@ -118122,7 +119144,8 @@ { "$ref": "#\/components\/schemas\/additionalResource" } - ] + ], + "nullable": true }, "realtime": { "type": "object", @@ -118152,7 +119175,8 @@ { "$ref": "#\/components\/schemas\/additionalResource" } - ] + ], + "nullable": true }, "storage": { "type": "object", @@ -118202,21 +119226,19 @@ { "$ref": "#\/components\/schemas\/additionalResource" } - ] + ], + "nullable": true } }, "required": [ "bandwidth", "executions", - "member", "realtime", "realtimeMessages", - "realtimeBandwidth", "storage", "users", "GBHours", - "imageTransformations", - "credits" + "imageTransformations" ], "example": { "bandwidth": null, @@ -118405,7 +119427,7 @@ }, "ordinal": { "type": "string", - "description": "Replica ordinal when broken down by `ordinal`. 0 is the primary; 1+ are replicas.", + "description": "Node ordinal when broken down by `ordinal`. A stable per-node identity, not a role: ordinal 0 is the first member created, and a failover can leave the primary on any ordinal. Read the role from the database's replicas endpoint.", "x-example": "0", "nullable": true } diff --git a/specs/latest/open-api3-latest-server.json b/specs/latest/open-api3-latest-server.json index 795bdd1b..aea2b8b8 100644 --- a/specs/latest/open-api3-latest-server.json +++ b/specs/latest/open-api3-latest-server.json @@ -1,7 +1,7 @@ { "openapi": "3.0.0", "info": { - "version": "1.9.5", + "version": "1.9.6", "title": "Appwrite", "description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)", "termsOfService": "https:\/\/appwrite.io\/policy\/terms", @@ -3193,11 +3193,12 @@ "parameters": [ { "name": "sessionId", - "description": "Session ID. Use the string 'current' to get the current device session.", + "description": "Session ID. Use the string 'current' to get the current device session. Defaults to 'current'.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "current" }, "in": "path" } @@ -3256,11 +3257,12 @@ "parameters": [ { "name": "sessionId", - "description": "Session ID. Use the string 'current' to update the current device session.", + "description": "Session ID. Use the string 'current' to update the current device session. Defaults to 'current'.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "current" }, "in": "path" } @@ -3312,11 +3314,12 @@ "parameters": [ { "name": "sessionId", - "description": "Session ID. Use the string 'current' to delete the current device session.", + "description": "Session ID. Use the string 'current' to delete the current device session. Defaults to 'current'.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "", + "default": "current" }, "in": "path" } @@ -21026,6 +21029,126 @@ ] } }, + "\/embeddings\/text": { + "post": { + "summary": "Create text embeddings", + "operationId": "embeddingsCreateTextEmbeddings", + "tags": [ + "embeddings" + ], + "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", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/embeddingList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createTextEmbeddings", + "group": "embeddings", + "cookies": false, + "type": "", + "demo": "embeddings\/create-text-embeddings.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\/embeddings\/create-text-embeddings.md", + "methods": [ + { + "name": "createTextEmbeddings", + "namespace": "embeddings", + "desc": "Create Text Embedding", + "auth": { + "Project": [], + "Key": [] + }, + "parameters": [ + "texts", + "model" + ], + "required": [ + "texts" + ], + "responses": [ + { + "code": 200, + "model": "#\/components\/schemas\/embeddingList" + } + ], + "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": "embeddings\/create-text-embeddings.md", + "public": true + } + ], + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [], + "JWT": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "texts": { + "type": "array", + "description": "Array of text to generate embeddings.", + "x-example": null, + "items": { + "type": "string" + } + }, + "model": { + "type": "string", + "description": "The embedding model to use for generating vector embeddings.", + "default": "nomic-embed-text", + "x-example": "nomic-embed-text", + "enum": [ + "nomic-embed-text", + "embedding-gemma", + "all-minilm", + "bge-small" + ], + "x-enum-name": "EmbeddingModel", + "x-enum-keys": [ + "nomic-embed-text", + "embedding-gemma", + "all-minilm", + "bge-small" + ] + } + }, + "required": [ + "texts" + ] + } + } + } + } + } + }, "\/functions": { "get": { "summary": "List functions", @@ -21539,6 +21662,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -21646,6 +21770,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -22339,6 +22464,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -22446,6 +22572,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -43180,6 +43307,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -43287,6 +43415,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -43474,6 +43603,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -43581,6 +43711,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -43843,6 +43974,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -43950,6 +44082,7 @@ "wafRules.read", "wafRules.write", "events.read", + "proxy.invalidations.write", "apps.read", "apps.write", "oauth2.read", @@ -52538,6 +52671,98 @@ ] } }, + "\/proxy\/invalidations": { + "post": { + "summary": "Create invalidation", + "operationId": "proxyCreateInvalidation", + "tags": [ + "proxy" + ], + "description": "Create a new CDN cache invalidation for a domain. Executes a hard purge of cached content.\n\nDepending on type, the invalidation purges a single cache tag, a single URL path, or all cached content for the domain.", + "responses": { + "201": { + "description": "Invalidation", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/proxyInvalidation" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createInvalidation", + "group": null, + "cookies": false, + "type": "", + "demo": "proxy\/create-invalidation.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "userId:{userId}, url:{url}", + "scope": "proxy.invalidations.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "description": "Domain name.", + "x-example": null + }, + "type": { + "type": "string", + "description": "Type of reference passed. Allowed values are: tag, path, all", + "x-example": "tag", + "enum": [ + "tag", + "path", + "all" + ], + "x-enum-name": "InvalidationType", + "x-enum-keys": [ + "tag", + "path", + "all" + ] + }, + "reference": { + "type": "string", + "description": "Reference to invalidate. Depending on type this can be: cache tag name (up to 128 characters), URL path (up to 2048 characters). Not required when type is all.", + "default": "", + "x-example": "" + } + }, + "required": [ + "domain", + "type" + ] + } + } + } + } + } + }, "\/proxy\/rules": { "get": { "summary": "List rules", @@ -69251,7 +69476,7 @@ "sessionId": { "type": "string", "description": "Session ID. Use the string 'recent' to use the most recent session. Defaults to the most recent session.", - "default": "", + "default": "recent", "x-example": "" }, "duration": { @@ -71912,126 +72137,6 @@ } } }, - "\/vectorsdb\/embeddings\/text": { - "post": { - "summary": "Create text embeddings", - "operationId": "vectorsDBCreateTextEmbeddings", - "tags": [ - "vectorsDB" - ], - "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", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/embeddingList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createTextEmbeddings", - "group": "embeddings", - "cookies": false, - "type": "", - "demo": "vectorsdb\/create-text-embeddings.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\/vectorsdb\/create-text-embeddings.md", - "methods": [ - { - "name": "createTextEmbeddings", - "namespace": "vectorsDB", - "desc": "Create Text Embedding", - "auth": { - "Project": [], - "Key": [] - }, - "parameters": [ - "texts", - "model" - ], - "required": [ - "texts" - ], - "responses": [ - { - "code": 200, - "model": "#\/components\/schemas\/embeddingList" - } - ], - "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 - } - ], - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [], - "JWT": [] - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "texts": { - "type": "array", - "description": "Array of text to generate embeddings.", - "x-example": null, - "items": { - "type": "string" - } - }, - "model": { - "type": "string", - "description": "The embedding model to use for generating vector embeddings.", - "default": "nomic-embed-text", - "x-example": "nomic-embed-text", - "enum": [ - "nomic-embed-text", - "embedding-gemma", - "all-minilm", - "bge-small" - ], - "x-enum-name": "EmbeddingModel", - "x-enum-keys": [ - "nomic-embed-text", - "embedding-gemma", - "all-minilm", - "bge-small" - ] - } - }, - "required": [ - "texts" - ] - } - } - } - } - } - }, "\/vectorsdb\/specifications": { "get": { "summary": "List specifications", @@ -77225,6 +77330,10 @@ "name": "graphql", "description": "The GraphQL API allows you to query and mutate your Appwrite server using GraphQL." }, + { + "name": "embeddings", + "description": "" + }, { "name": "projects", "description": "The Project service allows you to manage all the projects in your Appwrite server." @@ -92173,7 +92282,8 @@ "type": "integer", "description": "Members", "x-example": 25, - "format": "int32" + "format": "int32", + "nullable": true }, "webhooks": { "type": "integer", @@ -92317,7 +92427,8 @@ "type": "integer", "description": "Activity log days", "x-example": 7, - "format": "int32" + "format": "int32", + "nullable": true }, "usageLogs": { "type": "integer", @@ -92458,7 +92569,8 @@ "backupsEnabled": { "type": "boolean", "description": "Does plan support backup policies.", - "x-example": true + "x-example": true, + "nullable": true }, "usagePerProject": { "type": "boolean", @@ -92478,8 +92590,9 @@ "backupPolicies": { "type": "integer", "description": "How many policies does plan support", - "x-example": true, - "format": "int32" + "x-example": 1, + "format": "int32", + "nullable": true }, "deploymentSize": { "type": "integer", @@ -92553,7 +92666,6 @@ "storage", "imageTransformations", "screenshotsGenerated", - "members", "webhooks", "wafRules", "projects", @@ -92577,7 +92689,6 @@ "topics", "authPhone", "domains", - "activityLogs", "usageLogs", "projectInactivityDays", "alertLimit", @@ -92600,10 +92711,8 @@ "supportsFreeEmailValidation", "supportsCorporateEmailValidation", "supportsProjectSpecificRoles", - "backupsEnabled", "usagePerProject", "supportedAddons", - "backupPolicies", "deploymentSize", "buildSize", "databasesAllowEncrypt", @@ -92675,7 +92784,7 @@ "backupsEnabled": true, "usagePerProject": true, "supportedAddons": null, - "backupPolicies": true, + "backupPolicies": 1, "deploymentSize": 30, "buildSize": 2000, "databasesAllowEncrypt": false, @@ -92697,7 +92806,8 @@ { "$ref": "#\/components\/schemas\/billingPlanAddonDetails" } - ] + ], + "nullable": true }, "projects": { "type": "object", @@ -92707,13 +92817,10 @@ { "$ref": "#\/components\/schemas\/billingPlanAddonDetails" } - ] + ], + "nullable": true } }, - "required": [ - "seats", - "projects" - ], "example": { "seats": null, "projects": null @@ -92748,7 +92855,8 @@ "currency": { "type": "string", "description": "Price currency", - "x-example": "USD" + "x-example": "USD", + "nullable": true }, "price": { "type": "number", @@ -92773,7 +92881,6 @@ "planIncluded", "limit", "type", - "currency", "price", "value", "invoiceDesc" @@ -93273,7 +93380,7 @@ }, "engine": { "type": "string", - "description": "Database engine: postgresql, mysql, or mongodb.", + "description": "Database engine: postgresql, mysql, or mongodb. Null until the backing reports one.", "x-example": "postgresql" }, "version": { @@ -94040,16 +94147,16 @@ }, "lagSeconds": { "type": "number", - "description": "Replication lag in seconds.", + "description": "Replication lag in seconds. Null when the lag is not known: a primary has none to report, and a member the backend has not probed has none yet.", "x-example": 0.5, - "format": "double" + "format": "double", + "nullable": true } }, "required": [ "$id", "role", - "status", - "lagSeconds" + "status" ], "example": { "$id": "1", @@ -94246,6 +94353,44 @@ "members": [] } }, + "proxyInvalidation": { + "description": "Invalidation", + "type": "object", + "properties": { + "domain": { + "type": "string", + "description": "Domain name.", + "x-example": "appwrite.company.com" + }, + "type": { + "type": "string", + "description": "Invalidation type. Possible values are \"tag\", \"path\", or \"all\".", + "x-example": "tag" + }, + "reference": { + "type": "string", + "description": "Invalidated reference. Depending on type this is a cache tag name, a URL path, or empty when type is all.", + "x-example": "products" + }, + "status": { + "type": "string", + "description": "Invalidation status.", + "x-example": "success" + } + }, + "required": [ + "domain", + "type", + "reference", + "status" + ], + "example": { + "domain": "appwrite.company.com", + "type": "tag", + "reference": "products", + "status": "success" + } + }, "organization": { "description": "Organization", "type": "object", @@ -94291,9 +94436,10 @@ }, "billingBudget": { "type": "integer", - "description": "Project budget limit", + "description": "Project budget limit. Null when no budget is set.", "x-example": 50, - "format": "int32" + "format": "int32", + "nullable": true }, "budgetAlerts": { "type": "array", @@ -94350,7 +94496,8 @@ "billingTrialStartDate": { "type": "string", "description": "Start date of trial.", - "x-example": "2020-10-15T06:38:00.000+00:00" + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true }, "billingTrialDays": { "type": "integer", @@ -94376,12 +94523,14 @@ "billingAddressId": { "type": "string", "description": "Default payment method.", - "x-example": "adbc3de4rddfsd" + "x-example": "adbc3de4rddfsd", + "nullable": true }, "backupPaymentMethodId": { "type": "string", "description": "Backup payment method.", - "x-example": "adbc3de4rddfsd" + "x-example": "adbc3de4rddfsd", + "nullable": true }, "status": { "type": "string", @@ -94391,32 +94540,38 @@ "remarks": { "type": "string", "description": "Remarks on team status.", - "x-example": "Pending initial payment" + "x-example": "Pending initial payment", + "nullable": true }, "agreementBAA": { "type": "string", "description": "Organization agreements", - "x-example": "" + "x-example": "", + "nullable": true }, "programManagerName": { "type": "string", "description": "Program manager's name.", - "x-example": "" + "x-example": "", + "nullable": true }, "programManagerCalendar": { "type": "string", "description": "Program manager's calendar link.", - "x-example": "" + "x-example": "", + "nullable": true }, "programDiscordChannelName": { "type": "string", "description": "Program's discord channel name.", - "x-example": "" + "x-example": "", + "nullable": true }, "programDiscordChannelUrl": { "type": "string", "description": "Program's discord channel URL.", - "x-example": "" + "x-example": "", + "nullable": true }, "billingLimits": { "type": "object", @@ -94432,12 +94587,14 @@ "billingPlanDowngrade": { "type": "string", "description": "Billing plan selected for downgrade.", - "x-example": "tier-1" + "x-example": "tier-1", + "nullable": true }, "billingTaxId": { "type": "string", "description": "Tax Id", - "x-example": "" + "x-example": "", + "nullable": true }, "markedForDeletion": { "type": "boolean", @@ -94465,7 +94622,6 @@ "name", "total", "prefs", - "billingBudget", "budgetAlerts", "billingPlan", "billingPlanId", @@ -94474,22 +94630,11 @@ "billingStartDate", "billingCurrentInvoiceDate", "billingNextInvoiceDate", - "billingTrialStartDate", "billingTrialDays", "billingAggregationId", "billingInvoiceId", "paymentMethodId", - "billingAddressId", - "backupPaymentMethodId", "status", - "remarks", - "agreementBAA", - "programManagerName", - "programManagerCalendar", - "programDiscordChannelName", - "programDiscordChannelUrl", - "billingPlanDowngrade", - "billingTaxId", "markedForDeletion", "platform", "projects" @@ -95379,7 +95524,8 @@ { "$ref": "#\/components\/schemas\/additionalResource" } - ] + ], + "nullable": true }, "realtime": { "type": "object", @@ -95409,7 +95555,8 @@ { "$ref": "#\/components\/schemas\/additionalResource" } - ] + ], + "nullable": true }, "storage": { "type": "object", @@ -95459,21 +95606,19 @@ { "$ref": "#\/components\/schemas\/additionalResource" } - ] + ], + "nullable": true } }, "required": [ "bandwidth", "executions", - "member", "realtime", "realtimeMessages", - "realtimeBandwidth", "storage", "users", "GBHours", - "imageTransformations", - "credits" + "imageTransformations" ], "example": { "bandwidth": null,