diff --git a/.env b/.env index 4dd381cb82..19ee65350b 100644 --- a/.env +++ b/.env @@ -69,8 +69,8 @@ _APP_STORAGE_ANTIVIRUS_PORT=3310 _APP_SMTP_HOST=maildev _APP_SMTP_PORT=1025 _APP_SMTP_SECURE= -_APP_SMTP_USERNAME= -_APP_SMTP_PASSWORD= +_APP_SMTP_USERNAME=user +_APP_SMTP_PASSWORD=password _APP_SMS_PROVIDER=sms://username:password@mock _APP_SMS_FROM=+123456789 _APP_SMS_PROJECTS_DENY_LIST= diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000000..a0ffdbea4c --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,73 @@ +# AGENTS.md + +Appwrite is an end-to-end backend server for web, mobile, native, and backend apps. This guide provides context and instructions for AI coding agents working on the Appwrite codebase. + +## Project Overview + +Appwrite is a self-hosted Backend-as-a-Service (BaaS) platform that provides developers with a set of APIs and tools to build secure, scalable applications. The project uses a hybrid monolithic-microservice architecture built with PHP, running on Swoole for high performance. + +**Key Technologies:** +- **Backend:** PHP 8.3+, Swoole +- **Libraries:** Utopia PHP +- **Database:** MariaDB, Redis +- **Cache:** Redis +- **Queue:** Redis +- **Containers:** Docker + +## Development Commands + +```bash +# Run Appwrite +docker compose up -d --force-recreate --build + +# Run specific test +docker compose exec appwrite test /usr/src/code/tests/e2e/Services/[ServiceName] --filter=[FunctionName] + +# Format code +composer format +``` + +## Code Style Guidelines + +- Follow [PSR-12](https://www.php-fig.org/psr/psr-12/) coding standard +- Use PSR-4 autoloading +- Strict type declarations where applicable +- Comprehensive PHPDoc comments + +### Naming Conventions + +#### `resourceType` Naming Rule + +When a collection has a combination of `resourceType`, `resourceId`, and/or `resourceInternalId`, the value of `resourceType` MUST always be **plural** - for example: `functions`, `sites`, `deployments`. + +Examples: +```php +'resourceType' => 'functions' +'resourceType' => 'sites' +'resourceType' => 'deployments' +``` + +## Security Considerations + +### Critical Security Practices + +- **Never hardcode credentials** - Use environment variables +- **Rate limiting** - Respect abuse prevention mechanisms + +## Dependencies + +Avoid introducing new dependencies other than utopia-php. + +## Pull Request Guidelines +### Before Submitting + +- Run `composer format` +- Update documentation if adding features +- Add/update tests for your changes +- Check that Docker build succeeds +`docs/specs/authentication.drawio.svg` + +## Known Issues and Gotchas + +- **Hot Reload:** Code changes require container restart in some cases +- **Logging:** There is no central place for logs, so when debugging, ensure to check all possibly relevant containers diff --git a/app/config/oAuthProviders.php b/app/config/oAuthProviders.php index d8dfc807b1..e6acd08c54 100644 --- a/app/config/oAuthProviders.php +++ b/app/config/oAuthProviders.php @@ -462,4 +462,15 @@ return [ 'mock' => true, 'class' => 'Appwrite\\Auth\\OAuth2\\Mock', ], + 'mock-unverified' => [ + 'name' => 'MockUnverified', + 'developers' => 'https://appwrite.io', + 'icon' => 'icon-appwrite', + 'enabled' => true, + 'sandbox' => false, + 'form' => false, + 'beta' => false, + 'mock' => true, + 'class' => 'Appwrite\\Auth\\OAuth2\\MockUnverified', + ], ]; diff --git a/app/config/roles.php b/app/config/roles.php index 3bf2297550..25a6bac4da 100644 --- a/app/config/roles.php +++ b/app/config/roles.php @@ -58,6 +58,8 @@ $admins = [ 'projects.write', 'keys.read', 'keys.write', + 'devKeys.read', + 'devKeys.write', 'webhooks.read', 'webhooks.write', 'locale.read', diff --git a/app/config/sdks.php b/app/config/sdks.php index c1cd56784c..78209cc5dd 100644 --- a/app/config/sdks.php +++ b/app/config/sdks.php @@ -262,7 +262,7 @@ return [ [ 'key' => 'nodejs', 'name' => 'Node.js', - 'version' => '21.0.0', + 'version' => '21.1.0', 'url' => 'https://github.com/appwrite/sdk-for-node', 'package' => 'https://www.npmjs.com/package/node-appwrite', 'enabled' => true, @@ -281,7 +281,7 @@ return [ [ 'key' => 'php', 'name' => 'PHP', - 'version' => '19.0.0', + 'version' => '19.1.0', 'url' => 'https://github.com/appwrite/sdk-for-php', 'package' => 'https://packagist.org/packages/appwrite/appwrite', 'enabled' => true, @@ -300,7 +300,7 @@ return [ [ 'key' => 'python', 'name' => 'Python', - 'version' => '14.0.0', + 'version' => '14.1.0', 'url' => 'https://github.com/appwrite/sdk-for-python', 'package' => 'https://pypi.org/project/appwrite/', 'enabled' => true, @@ -319,7 +319,7 @@ return [ [ 'key' => 'ruby', 'name' => 'Ruby', - 'version' => '20.0.0', + 'version' => '20.1.0', 'url' => 'https://github.com/appwrite/sdk-for-ruby', 'package' => 'https://rubygems.org/gems/appwrite', 'enabled' => true, @@ -338,7 +338,7 @@ return [ [ 'key' => 'go', 'name' => 'Go', - 'version' => 'v0.15.0', + 'version' => 'v0.16.0', 'url' => 'https://github.com/appwrite/sdk-for-go', 'package' => 'https://github.com/appwrite/sdk-for-go', 'enabled' => true, @@ -357,7 +357,7 @@ return [ [ 'key' => 'dotnet', 'name' => '.NET', - 'version' => '0.23.0', + 'version' => '0.24.0', 'url' => 'https://github.com/appwrite/sdk-for-dotnet', 'package' => 'https://www.nuget.org/packages/Appwrite', 'enabled' => true, @@ -376,7 +376,7 @@ return [ [ 'key' => 'dart', 'name' => 'Dart', - 'version' => '20.0.0', + 'version' => '20.1.0', 'url' => 'https://github.com/appwrite/sdk-for-dart', 'package' => 'https://pub.dev/packages/dart_appwrite', 'enabled' => true, @@ -395,7 +395,7 @@ return [ [ 'key' => 'kotlin', 'name' => 'Kotlin', - 'version' => '13.0.0', + 'version' => '13.1.0', 'url' => 'https://github.com/appwrite/sdk-for-kotlin', 'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-kotlin', 'enabled' => true, @@ -418,7 +418,7 @@ return [ [ 'key' => 'swift', 'name' => 'Swift', - 'version' => '14.0.0', + 'version' => '14.1.0', 'url' => 'https://github.com/appwrite/sdk-for-swift', 'package' => 'https://github.com/appwrite/sdk-for-swift', 'enabled' => true, diff --git a/app/config/specs/open-api3-1.8.x-console.json b/app/config/specs/open-api3-1.8.x-console.json index 42088c617b..2819a6c9a6 100644 --- a/app/config/specs/open-api3-1.8.x-console.json +++ b/app/config/specs/open-api3-1.8.x-console.json @@ -7280,7 +7280,7 @@ }, "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.", + "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.", "x-example": null, "items": { "type": "object" diff --git a/app/config/specs/open-api3-1.8.x-server.json b/app/config/specs/open-api3-1.8.x-server.json index ecb8bc4dcf..45a67ef9aa 100644 --- a/app/config/specs/open-api3-1.8.x-server.json +++ b/app/config/specs/open-api3-1.8.x-server.json @@ -6754,7 +6754,7 @@ }, "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.", + "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.", "x-example": null, "items": { "type": "object" diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index 7724b1644a..22deea3d09 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -429,7 +429,23 @@ "Session": [], "JWT": [] } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "duration": { + "type": "integer", + "description": "Time in seconds before JWT expires. Default duration is 900 seconds, and maximum is 3600 seconds.", + "x-example": 0 + } + } + } + } + } + } } }, "\/account\/logs": { @@ -535,7 +551,7 @@ "x-appwrite": { "method": "updateMFA", "group": "mfa", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "demo": "account\/update-mfa.md", @@ -607,7 +623,7 @@ "x-appwrite": { "method": "createMfaAuthenticator", "group": "mfa", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "demo": "account\/create-mfa-authenticator.md", @@ -731,7 +747,7 @@ "x-appwrite": { "method": "updateMfaAuthenticator", "group": "mfa", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "demo": "account\/update-mfa-authenticator.md", @@ -871,7 +887,7 @@ "x-appwrite": { "method": "deleteMfaAuthenticator", "group": "mfa", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "demo": "account\/delete-mfa-authenticator.md", @@ -995,7 +1011,7 @@ "x-appwrite": { "method": "createMfaChallenge", "group": "mfa", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "demo": "account\/create-mfa-challenge.md", @@ -1129,7 +1145,7 @@ "x-appwrite": { "method": "updateMfaChallenge", "group": "mfa", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "demo": "account\/update-mfa-challenge.md", @@ -1267,7 +1283,7 @@ "x-appwrite": { "method": "listMfaFactors", "group": "mfa", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "demo": "account\/list-mfa-factors.md", @@ -1368,7 +1384,7 @@ "x-appwrite": { "method": "getMfaRecoveryCodes", "group": "mfa", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "demo": "account\/get-mfa-recovery-codes.md", @@ -1467,7 +1483,7 @@ "x-appwrite": { "method": "createMfaRecoveryCodes", "group": "mfa", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "demo": "account\/create-mfa-recovery-codes.md", @@ -1566,7 +1582,7 @@ "x-appwrite": { "method": "updateMfaRecoveryCodes", "group": "mfa", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "demo": "account\/update-mfa-recovery-codes.md", @@ -2558,7 +2574,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [] @@ -3488,7 +3505,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [] @@ -5858,7 +5876,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "demo": "databases\/list-transactions.md", @@ -5925,7 +5943,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "demo": "databases\/create-transaction.md", @@ -5995,7 +6013,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "demo": "databases\/get-transaction.md", @@ -6059,7 +6077,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "demo": "databases\/update-transaction.md", @@ -6137,7 +6155,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "demo": "databases\/delete-transaction.md", @@ -6203,7 +6221,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "demo": "databases\/create-operations.md", @@ -6288,7 +6306,7 @@ "x-appwrite": { "method": "listDocuments", "group": "documents", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "demo": "databases\/list-documents.md", @@ -6400,7 +6418,7 @@ "x-appwrite": { "method": "createDocument", "group": "documents", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "demo": "databases\/create-document.md", @@ -6561,7 +6579,7 @@ "x-appwrite": { "method": "getDocument", "group": "documents", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "demo": "databases\/get-document.md", @@ -6672,7 +6690,7 @@ "x-appwrite": { "method": "upsertDocument", "group": "documents", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "demo": "databases\/upsert-document.md", @@ -6827,7 +6845,7 @@ "x-appwrite": { "method": "updateDocument", "group": "documents", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "demo": "databases\/update-document.md", @@ -6939,7 +6957,7 @@ "x-appwrite": { "method": "deleteDocument", "group": "documents", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "demo": "databases\/delete-document.md", @@ -7046,7 +7064,7 @@ "x-appwrite": { "method": "decrementDocumentAttribute", "group": "documents", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "demo": "databases\/decrement-document-attribute.md", @@ -7173,7 +7191,7 @@ "x-appwrite": { "method": "incrementDocumentAttribute", "group": "documents", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "demo": "databases\/increment-document-attribute.md", @@ -7300,7 +7318,7 @@ "x-appwrite": { "method": "listExecutions", "group": "executions", - "weight": 472, + "weight": 473, "cookies": false, "type": "", "demo": "functions\/list-executions.md", @@ -7387,7 +7405,7 @@ "x-appwrite": { "method": "createExecution", "group": "executions", - "weight": 470, + "weight": 471, "cookies": false, "type": "", "demo": "functions\/create-execution.md", @@ -7505,7 +7523,7 @@ "x-appwrite": { "method": "getExecution", "group": "executions", - "weight": 471, + "weight": 472, "cookies": false, "type": "", "demo": "functions\/get-execution.md", @@ -7580,7 +7598,7 @@ "x-appwrite": { "method": "query", "group": "graphql", - "weight": 241, + "weight": 242, "cookies": false, "type": "graphql", "demo": "graphql\/query.md", @@ -7634,7 +7652,7 @@ "x-appwrite": { "method": "mutation", "group": "graphql", - "weight": 240, + "weight": 241, "cookies": false, "type": "graphql", "demo": "graphql\/mutation.md", @@ -8120,7 +8138,7 @@ "x-appwrite": { "method": "createSubscriber", "group": "subscribers", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "demo": "messaging\/create-subscriber.md", @@ -8204,7 +8222,7 @@ "x-appwrite": { "method": "deleteSubscriber", "group": "subscribers", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "demo": "messaging\/delete-subscriber.md", @@ -9113,7 +9131,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 445, + "weight": 446, "cookies": false, "type": "", "demo": "tablesdb\/list-transactions.md", @@ -9183,7 +9201,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 441, + "weight": 442, "cookies": false, "type": "", "demo": "tablesdb\/create-transaction.md", @@ -9256,7 +9274,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 442, + "weight": 443, "cookies": false, "type": "", "demo": "tablesdb\/get-transaction.md", @@ -9323,7 +9341,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 443, + "weight": 444, "cookies": false, "type": "", "demo": "tablesdb\/update-transaction.md", @@ -9404,7 +9422,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 444, + "weight": 445, "cookies": false, "type": "", "demo": "tablesdb\/delete-transaction.md", @@ -9473,7 +9491,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 446, + "weight": 447, "cookies": false, "type": "", "demo": "tablesdb\/create-operations.md", @@ -9561,7 +9579,7 @@ "x-appwrite": { "method": "listRows", "group": "rows", - "weight": 437, + "weight": 438, "cookies": false, "type": "", "demo": "tablesdb\/list-rows.md", @@ -9672,7 +9690,7 @@ "x-appwrite": { "method": "createRow", "group": "rows", - "weight": 429, + "weight": 430, "cookies": false, "type": "", "demo": "tablesdb\/create-row.md", @@ -9828,7 +9846,7 @@ "x-appwrite": { "method": "getRow", "group": "rows", - "weight": 430, + "weight": 431, "cookies": false, "type": "", "demo": "tablesdb\/get-row.md", @@ -9938,7 +9956,7 @@ "x-appwrite": { "method": "upsertRow", "group": "rows", - "weight": 433, + "weight": 434, "cookies": false, "type": "", "demo": "tablesdb\/upsert-row.md", @@ -10088,7 +10106,7 @@ "x-appwrite": { "method": "updateRow", "group": "rows", - "weight": 431, + "weight": 432, "cookies": false, "type": "", "demo": "tablesdb\/update-row.md", @@ -10199,7 +10217,7 @@ "x-appwrite": { "method": "deleteRow", "group": "rows", - "weight": 435, + "weight": 436, "cookies": false, "type": "", "demo": "tablesdb\/delete-row.md", @@ -10305,7 +10323,7 @@ "x-appwrite": { "method": "decrementRowColumn", "group": "rows", - "weight": 440, + "weight": 441, "cookies": false, "type": "", "demo": "tablesdb\/decrement-row-column.md", @@ -10431,7 +10449,7 @@ "x-appwrite": { "method": "incrementRowColumn", "group": "rows", - "weight": 439, + "weight": 440, "cookies": false, "type": "", "demo": "tablesdb\/increment-row-column.md", diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index 42088c617b..cb745ed50d 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -463,7 +463,23 @@ "Project": [], "JWT": [] } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "duration": { + "type": "integer", + "description": "Time in seconds before JWT expires. Default duration is 900 seconds, and maximum is 3600 seconds.", + "x-example": 0 + } + } + } + } + } + } } }, "\/account\/logs": { @@ -568,7 +584,7 @@ "x-appwrite": { "method": "updateMFA", "group": "mfa", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "demo": "account\/update-mfa.md", @@ -639,7 +655,7 @@ "x-appwrite": { "method": "createMfaAuthenticator", "group": "mfa", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "demo": "account\/create-mfa-authenticator.md", @@ -762,7 +778,7 @@ "x-appwrite": { "method": "updateMfaAuthenticator", "group": "mfa", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "demo": "account\/update-mfa-authenticator.md", @@ -901,7 +917,7 @@ "x-appwrite": { "method": "deleteMfaAuthenticator", "group": "mfa", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "demo": "account\/delete-mfa-authenticator.md", @@ -1024,7 +1040,7 @@ "x-appwrite": { "method": "createMfaChallenge", "group": "mfa", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "demo": "account\/create-mfa-challenge.md", @@ -1157,7 +1173,7 @@ "x-appwrite": { "method": "updateMfaChallenge", "group": "mfa", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "demo": "account\/update-mfa-challenge.md", @@ -1294,7 +1310,7 @@ "x-appwrite": { "method": "listMfaFactors", "group": "mfa", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "demo": "account\/list-mfa-factors.md", @@ -1394,7 +1410,7 @@ "x-appwrite": { "method": "getMfaRecoveryCodes", "group": "mfa", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "demo": "account\/get-mfa-recovery-codes.md", @@ -1492,7 +1508,7 @@ "x-appwrite": { "method": "createMfaRecoveryCodes", "group": "mfa", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "demo": "account\/create-mfa-recovery-codes.md", @@ -1590,7 +1606,7 @@ "x-appwrite": { "method": "updateMfaRecoveryCodes", "group": "mfa", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "demo": "account\/update-mfa-recovery-codes.md", @@ -2568,7 +2584,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [] @@ -3486,7 +3503,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [] @@ -5844,7 +5862,7 @@ "x-appwrite": { "method": "chat", "group": "console", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "demo": "assistant\/chat.md", @@ -5905,7 +5923,7 @@ "x-appwrite": { "method": "getResource", "group": null, - "weight": 512, + "weight": 513, "cookies": false, "type": "", "demo": "console\/get-resource.md", @@ -5980,7 +5998,7 @@ "x-appwrite": { "method": "variables", "group": "console", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "demo": "console\/variables.md", @@ -6029,7 +6047,7 @@ "x-appwrite": { "method": "list", "group": "databases", - "weight": 320, + "weight": 321, "cookies": false, "type": "", "demo": "databases\/list.md", @@ -6148,7 +6166,7 @@ "x-appwrite": { "method": "create", "group": "databases", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "demo": "databases\/create.md", @@ -6265,7 +6283,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "demo": "databases\/list-transactions.md", @@ -6332,7 +6350,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "demo": "databases\/create-transaction.md", @@ -6402,7 +6420,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "demo": "databases\/get-transaction.md", @@ -6466,7 +6484,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "demo": "databases\/update-transaction.md", @@ -6544,7 +6562,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "demo": "databases\/delete-transaction.md", @@ -6610,7 +6628,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "demo": "databases\/create-operations.md", @@ -6695,7 +6713,7 @@ "x-appwrite": { "method": "listUsage", "group": null, - "weight": 323, + "weight": 324, "cookies": false, "type": "", "demo": "databases\/list-usage.md", @@ -6799,7 +6817,7 @@ "x-appwrite": { "method": "get", "group": "databases", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "demo": "databases\/get.md", @@ -6893,7 +6911,7 @@ "x-appwrite": { "method": "update", "group": "databases", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "demo": "databases\/update.md", @@ -7007,7 +7025,7 @@ "x-appwrite": { "method": "delete", "group": "databases", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "demo": "databases\/delete.md", @@ -7102,7 +7120,7 @@ "x-appwrite": { "method": "listCollections", "group": "collections", - "weight": 328, + "weight": 329, "cookies": false, "type": "", "demo": "databases\/list-collections.md", @@ -7202,7 +7220,7 @@ "x-appwrite": { "method": "createCollection", "group": "collections", - "weight": 324, + "weight": 325, "cookies": false, "type": "", "demo": "databases\/create-collection.md", @@ -7280,7 +7298,7 @@ }, "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.", + "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.", "x-example": null, "items": { "type": "object" @@ -7329,7 +7347,7 @@ "x-appwrite": { "method": "getCollection", "group": "collections", - "weight": 325, + "weight": 326, "cookies": false, "type": "", "demo": "databases\/get-collection.md", @@ -7404,7 +7422,7 @@ "x-appwrite": { "method": "updateCollection", "group": "collections", - "weight": 326, + "weight": 327, "cookies": false, "type": "", "demo": "databases\/update-collection.md", @@ -7510,7 +7528,7 @@ "x-appwrite": { "method": "deleteCollection", "group": "collections", - "weight": 327, + "weight": 328, "cookies": false, "type": "", "demo": "databases\/delete-collection.md", @@ -7587,7 +7605,7 @@ "x-appwrite": { "method": "listAttributes", "group": "attributes", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "demo": "databases\/list-attributes.md", @@ -7688,7 +7706,7 @@ "x-appwrite": { "method": "createBooleanAttribute", "group": "attributes", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "demo": "databases\/create-boolean-attribute.md", @@ -7801,7 +7819,7 @@ "x-appwrite": { "method": "updateBooleanAttribute", "group": "attributes", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "demo": "databases\/update-boolean-attribute.md", @@ -7919,7 +7937,7 @@ "x-appwrite": { "method": "createDatetimeAttribute", "group": "attributes", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "demo": "databases\/create-datetime-attribute.md", @@ -8032,7 +8050,7 @@ "x-appwrite": { "method": "updateDatetimeAttribute", "group": "attributes", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "demo": "databases\/update-datetime-attribute.md", @@ -8150,7 +8168,7 @@ "x-appwrite": { "method": "createEmailAttribute", "group": "attributes", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "demo": "databases\/create-email-attribute.md", @@ -8263,7 +8281,7 @@ "x-appwrite": { "method": "updateEmailAttribute", "group": "attributes", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "demo": "databases\/update-email-attribute.md", @@ -8381,7 +8399,7 @@ "x-appwrite": { "method": "createEnumAttribute", "group": "attributes", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "demo": "databases\/create-enum-attribute.md", @@ -8503,7 +8521,7 @@ "x-appwrite": { "method": "updateEnumAttribute", "group": "attributes", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "demo": "databases\/update-enum-attribute.md", @@ -8630,7 +8648,7 @@ "x-appwrite": { "method": "createFloatAttribute", "group": "attributes", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "demo": "databases\/create-float-attribute.md", @@ -8755,7 +8773,7 @@ "x-appwrite": { "method": "updateFloatAttribute", "group": "attributes", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "demo": "databases\/update-float-attribute.md", @@ -8885,7 +8903,7 @@ "x-appwrite": { "method": "createIntegerAttribute", "group": "attributes", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "demo": "databases\/create-integer-attribute.md", @@ -9010,7 +9028,7 @@ "x-appwrite": { "method": "updateIntegerAttribute", "group": "attributes", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "demo": "databases\/update-integer-attribute.md", @@ -9140,7 +9158,7 @@ "x-appwrite": { "method": "createIpAttribute", "group": "attributes", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "demo": "databases\/create-ip-attribute.md", @@ -9253,7 +9271,7 @@ "x-appwrite": { "method": "updateIpAttribute", "group": "attributes", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "demo": "databases\/update-ip-attribute.md", @@ -9371,7 +9389,7 @@ "x-appwrite": { "method": "createLineAttribute", "group": "attributes", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "demo": "databases\/create-line-attribute.md", @@ -9486,7 +9504,7 @@ "x-appwrite": { "method": "updateLineAttribute", "group": "attributes", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "demo": "databases\/update-line-attribute.md", @@ -9610,7 +9628,7 @@ "x-appwrite": { "method": "createPointAttribute", "group": "attributes", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "demo": "databases\/create-point-attribute.md", @@ -9725,7 +9743,7 @@ "x-appwrite": { "method": "updatePointAttribute", "group": "attributes", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "demo": "databases\/update-point-attribute.md", @@ -9849,7 +9867,7 @@ "x-appwrite": { "method": "createPolygonAttribute", "group": "attributes", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "demo": "databases\/create-polygon-attribute.md", @@ -9964,7 +9982,7 @@ "x-appwrite": { "method": "updatePolygonAttribute", "group": "attributes", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "demo": "databases\/update-polygon-attribute.md", @@ -10088,7 +10106,7 @@ "x-appwrite": { "method": "createRelationshipAttribute", "group": "attributes", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "demo": "databases\/create-relationship-attribute.md", @@ -10227,7 +10245,7 @@ "x-appwrite": { "method": "createStringAttribute", "group": "attributes", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "demo": "databases\/create-string-attribute.md", @@ -10351,7 +10369,7 @@ "x-appwrite": { "method": "updateStringAttribute", "group": "attributes", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "demo": "databases\/update-string-attribute.md", @@ -10475,7 +10493,7 @@ "x-appwrite": { "method": "createUrlAttribute", "group": "attributes", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "demo": "databases\/create-url-attribute.md", @@ -10588,7 +10606,7 @@ "x-appwrite": { "method": "updateUrlAttribute", "group": "attributes", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "demo": "databases\/update-url-attribute.md", @@ -10737,7 +10755,7 @@ "x-appwrite": { "method": "getAttribute", "group": "attributes", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "demo": "databases\/get-attribute.md", @@ -10814,7 +10832,7 @@ "x-appwrite": { "method": "deleteAttribute", "group": "attributes", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "demo": "databases\/delete-attribute.md", @@ -10900,7 +10918,7 @@ "x-appwrite": { "method": "updateRelationshipAttribute", "group": "attributes", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "demo": "databases\/update-relationship-attribute.md", @@ -11016,7 +11034,7 @@ "x-appwrite": { "method": "listDocuments", "group": "documents", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "demo": "databases\/list-documents.md", @@ -11128,7 +11146,7 @@ "x-appwrite": { "method": "createDocument", "group": "documents", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "demo": "databases\/create-document.md", @@ -11319,7 +11337,7 @@ "x-appwrite": { "method": "upsertDocuments", "group": "documents", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "demo": "databases\/upsert-documents.md", @@ -11456,7 +11474,7 @@ "x-appwrite": { "method": "updateDocuments", "group": "documents", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "demo": "databases\/update-documents.md", @@ -11561,7 +11579,7 @@ "x-appwrite": { "method": "deleteDocuments", "group": "documents", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "demo": "databases\/delete-documents.md", @@ -11663,7 +11681,7 @@ "x-appwrite": { "method": "getDocument", "group": "documents", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "demo": "databases\/get-document.md", @@ -11774,7 +11792,7 @@ "x-appwrite": { "method": "upsertDocument", "group": "documents", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "demo": "databases\/upsert-document.md", @@ -11929,7 +11947,7 @@ "x-appwrite": { "method": "updateDocument", "group": "documents", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "demo": "databases\/update-document.md", @@ -12041,7 +12059,7 @@ "x-appwrite": { "method": "deleteDocument", "group": "documents", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "demo": "databases\/delete-document.md", @@ -12148,7 +12166,7 @@ "x-appwrite": { "method": "listDocumentLogs", "group": "logs", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "demo": "databases\/list-document-logs.md", @@ -12246,7 +12264,7 @@ "x-appwrite": { "method": "decrementDocumentAttribute", "group": "documents", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "demo": "databases\/decrement-document-attribute.md", @@ -12373,7 +12391,7 @@ "x-appwrite": { "method": "incrementDocumentAttribute", "group": "documents", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "demo": "databases\/increment-document-attribute.md", @@ -12500,7 +12518,7 @@ "x-appwrite": { "method": "listIndexes", "group": "indexes", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "demo": "databases\/list-indexes.md", @@ -12599,7 +12617,7 @@ "x-appwrite": { "method": "createIndex", "group": "indexes", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "demo": "databases\/create-index.md", @@ -12740,7 +12758,7 @@ "x-appwrite": { "method": "getIndex", "group": "indexes", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "demo": "databases\/get-index.md", @@ -12817,7 +12835,7 @@ "x-appwrite": { "method": "deleteIndex", "group": "indexes", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "demo": "databases\/delete-index.md", @@ -12903,7 +12921,7 @@ "x-appwrite": { "method": "listCollectionLogs", "group": "collections", - "weight": 329, + "weight": 330, "cookies": false, "type": "", "demo": "databases\/list-collection-logs.md", @@ -12991,7 +13009,7 @@ "x-appwrite": { "method": "getCollectionUsage", "group": null, - "weight": 330, + "weight": 331, "cookies": false, "type": "", "demo": "databases\/get-collection-usage.md", @@ -13088,7 +13106,7 @@ "x-appwrite": { "method": "listLogs", "group": "logs", - "weight": 321, + "weight": 322, "cookies": false, "type": "", "demo": "databases\/list-logs.md", @@ -13196,7 +13214,7 @@ "x-appwrite": { "method": "getUsage", "group": null, - "weight": 322, + "weight": 323, "cookies": false, "type": "", "demo": "databases\/get-usage.md", @@ -13313,7 +13331,7 @@ "x-appwrite": { "method": "list", "group": "functions", - "weight": 456, + "weight": 457, "cookies": false, "type": "", "demo": "functions\/list.md", @@ -13398,7 +13416,7 @@ "x-appwrite": { "method": "create", "group": "functions", - "weight": 453, + "weight": 454, "cookies": false, "type": "", "demo": "functions\/create.md", @@ -13693,7 +13711,7 @@ "x-appwrite": { "method": "listRuntimes", "group": "runtimes", - "weight": 458, + "weight": 459, "cookies": false, "type": "", "demo": "functions\/list-runtimes.md", @@ -13743,7 +13761,7 @@ "x-appwrite": { "method": "listSpecifications", "group": "runtimes", - "weight": 459, + "weight": 460, "cookies": false, "type": "", "demo": "functions\/list-specifications.md", @@ -13793,7 +13811,7 @@ "x-appwrite": { "method": "listTemplates", "group": "templates", - "weight": 482, + "weight": 483, "cookies": false, "type": "", "demo": "functions\/list-templates.md", @@ -13985,7 +14003,7 @@ "x-appwrite": { "method": "getTemplate", "group": "templates", - "weight": 481, + "weight": 482, "cookies": false, "type": "", "demo": "functions\/get-template.md", @@ -14045,7 +14063,7 @@ "x-appwrite": { "method": "listUsage", "group": null, - "weight": 475, + "weight": 476, "cookies": false, "type": "", "demo": "functions\/list-usage.md", @@ -14117,7 +14135,7 @@ "x-appwrite": { "method": "get", "group": "functions", - "weight": 454, + "weight": 455, "cookies": false, "type": "", "demo": "functions\/get.md", @@ -14177,7 +14195,7 @@ "x-appwrite": { "method": "update", "group": "functions", - "weight": 455, + "weight": 456, "cookies": false, "type": "", "demo": "functions\/update.md", @@ -14469,7 +14487,7 @@ "x-appwrite": { "method": "delete", "group": "functions", - "weight": 457, + "weight": 458, "cookies": false, "type": "", "demo": "functions\/delete.md", @@ -14531,7 +14549,7 @@ "x-appwrite": { "method": "updateFunctionDeployment", "group": "functions", - "weight": 462, + "weight": 463, "cookies": false, "type": "", "demo": "functions\/update-function-deployment.md", @@ -14612,7 +14630,7 @@ "x-appwrite": { "method": "listDeployments", "group": "deployments", - "weight": 463, + "weight": 464, "cookies": false, "type": "", "demo": "functions\/list-deployments.md", @@ -14707,7 +14725,7 @@ "x-appwrite": { "method": "createDeployment", "group": "deployments", - "weight": 460, + "weight": 461, "cookies": false, "type": "upload", "demo": "functions\/create-deployment.md", @@ -14806,7 +14824,7 @@ "x-appwrite": { "method": "createDuplicateDeployment", "group": "deployments", - "weight": 468, + "weight": 469, "cookies": false, "type": "", "demo": "functions\/create-duplicate-deployment.md", @@ -14892,7 +14910,7 @@ "x-appwrite": { "method": "createTemplateDeployment", "group": "deployments", - "weight": 465, + "weight": 466, "cookies": false, "type": "", "demo": "functions\/create-template-deployment.md", @@ -15009,7 +15027,7 @@ "x-appwrite": { "method": "createVcsDeployment", "group": "deployments", - "weight": 466, + "weight": 467, "cookies": false, "type": "", "demo": "functions\/create-vcs-deployment.md", @@ -15107,7 +15125,7 @@ "x-appwrite": { "method": "getDeployment", "group": "deployments", - "weight": 461, + "weight": 462, "cookies": false, "type": "", "demo": "functions\/get-deployment.md", @@ -15170,7 +15188,7 @@ "x-appwrite": { "method": "deleteDeployment", "group": "deployments", - "weight": 464, + "weight": 465, "cookies": false, "type": "", "demo": "functions\/delete-deployment.md", @@ -15235,7 +15253,7 @@ "x-appwrite": { "method": "getDeploymentDownload", "group": "deployments", - "weight": 467, + "weight": 468, "cookies": false, "type": "location", "demo": "functions\/get-deployment-download.md", @@ -15326,7 +15344,7 @@ "x-appwrite": { "method": "updateDeploymentStatus", "group": "deployments", - "weight": 469, + "weight": 470, "cookies": false, "type": "", "demo": "functions\/update-deployment-status.md", @@ -15398,7 +15416,7 @@ "x-appwrite": { "method": "listExecutions", "group": "executions", - "weight": 472, + "weight": 473, "cookies": false, "type": "", "demo": "functions\/list-executions.md", @@ -15485,7 +15503,7 @@ "x-appwrite": { "method": "createExecution", "group": "executions", - "weight": 470, + "weight": 471, "cookies": false, "type": "", "demo": "functions\/create-execution.md", @@ -15603,7 +15621,7 @@ "x-appwrite": { "method": "getExecution", "group": "executions", - "weight": 471, + "weight": 472, "cookies": false, "type": "", "demo": "functions\/get-execution.md", @@ -15669,7 +15687,7 @@ "x-appwrite": { "method": "deleteExecution", "group": "executions", - "weight": 473, + "weight": 474, "cookies": false, "type": "", "demo": "functions\/delete-execution.md", @@ -15741,7 +15759,7 @@ "x-appwrite": { "method": "getUsage", "group": null, - "weight": 474, + "weight": 475, "cookies": false, "type": "", "demo": "functions\/get-usage.md", @@ -15823,7 +15841,7 @@ "x-appwrite": { "method": "listVariables", "group": "variables", - "weight": 478, + "weight": 479, "cookies": false, "type": "", "demo": "functions\/list-variables.md", @@ -15883,7 +15901,7 @@ "x-appwrite": { "method": "createVariable", "group": "variables", - "weight": 476, + "weight": 477, "cookies": false, "type": "", "demo": "functions\/create-variable.md", @@ -15975,7 +15993,7 @@ "x-appwrite": { "method": "getVariable", "group": "variables", - "weight": 477, + "weight": 478, "cookies": false, "type": "", "demo": "functions\/get-variable.md", @@ -16045,7 +16063,7 @@ "x-appwrite": { "method": "updateVariable", "group": "variables", - "weight": 479, + "weight": 480, "cookies": false, "type": "", "demo": "functions\/update-variable.md", @@ -16139,7 +16157,7 @@ "x-appwrite": { "method": "deleteVariable", "group": "variables", - "weight": 480, + "weight": 481, "cookies": false, "type": "", "demo": "functions\/delete-variable.md", @@ -16211,7 +16229,7 @@ "x-appwrite": { "method": "query", "group": "graphql", - "weight": 241, + "weight": 242, "cookies": false, "type": "graphql", "demo": "graphql\/query.md", @@ -16265,7 +16283,7 @@ "x-appwrite": { "method": "mutation", "group": "graphql", - "weight": 240, + "weight": 241, "cookies": false, "type": "graphql", "demo": "graphql\/mutation.md", @@ -18090,7 +18108,7 @@ "x-appwrite": { "method": "listMessages", "group": "messages", - "weight": 298, + "weight": 299, "cookies": false, "type": "", "demo": "messaging\/list-messages.md", @@ -18178,7 +18196,7 @@ "x-appwrite": { "method": "createEmail", "group": "messages", - "weight": 295, + "weight": 296, "cookies": false, "type": "", "demo": "messaging\/create-email.md", @@ -18324,7 +18342,7 @@ "x-appwrite": { "method": "updateEmail", "group": "messages", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "demo": "messaging\/update-email.md", @@ -18482,7 +18500,7 @@ "x-appwrite": { "method": "createPush", "group": "messages", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "demo": "messaging\/create-push.md", @@ -18659,7 +18677,7 @@ "x-appwrite": { "method": "updatePush", "group": "messages", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "demo": "messaging\/update-push.md", @@ -18856,7 +18874,7 @@ "x-appwrite": { "method": "createSms", "group": "messages", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "demo": "messaging\/create-sms.md", @@ -19037,7 +19055,7 @@ "x-appwrite": { "method": "updateSms", "group": "messages", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "demo": "messaging\/update-sms.md", @@ -19224,7 +19242,7 @@ "x-appwrite": { "method": "getMessage", "group": "messages", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "demo": "messaging\/get-message.md", @@ -19278,7 +19296,7 @@ "x-appwrite": { "method": "delete", "group": "messages", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "demo": "messaging\/delete.md", @@ -19341,7 +19359,7 @@ "x-appwrite": { "method": "listMessageLogs", "group": "logs", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "demo": "messaging\/list-message-logs.md", @@ -19428,7 +19446,7 @@ "x-appwrite": { "method": "listTargets", "group": "messages", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "demo": "messaging\/list-targets.md", @@ -19515,7 +19533,7 @@ "x-appwrite": { "method": "listProviders", "group": "providers", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "demo": "messaging\/list-providers.md", @@ -19603,7 +19621,7 @@ "x-appwrite": { "method": "createApnsProvider", "group": "providers", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "demo": "messaging\/create-apns-provider.md", @@ -19782,7 +19800,7 @@ "x-appwrite": { "method": "updateApnsProvider", "group": "providers", - "weight": 282, + "weight": 283, "cookies": false, "type": "", "demo": "messaging\/update-apns-provider.md", @@ -19963,7 +19981,7 @@ "x-appwrite": { "method": "createFcmProvider", "group": "providers", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "demo": "messaging\/create-fcm-provider.md", @@ -20115,7 +20133,7 @@ "x-appwrite": { "method": "updateFcmProvider", "group": "providers", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "demo": "messaging\/update-fcm-provider.md", @@ -20268,7 +20286,7 @@ "x-appwrite": { "method": "createMailgunProvider", "group": "providers", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "demo": "messaging\/create-mailgun-provider.md", @@ -20386,7 +20404,7 @@ "x-appwrite": { "method": "updateMailgunProvider", "group": "providers", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "demo": "messaging\/update-mailgun-provider.md", @@ -20507,7 +20525,7 @@ "x-appwrite": { "method": "createMsg91Provider", "group": "providers", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "demo": "messaging\/create-msg-91-provider.md", @@ -20604,7 +20622,7 @@ "x-appwrite": { "method": "updateMsg91Provider", "group": "providers", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "demo": "messaging\/update-msg-91-provider.md", @@ -20704,7 +20722,7 @@ "x-appwrite": { "method": "createResendProvider", "group": "providers", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "demo": "messaging\/create-resend-provider.md", @@ -20811,7 +20829,7 @@ "x-appwrite": { "method": "updateResendProvider", "group": "providers", - "weight": 274, + "weight": 275, "cookies": false, "type": "", "demo": "messaging\/update-resend-provider.md", @@ -20921,7 +20939,7 @@ "x-appwrite": { "method": "createSendgridProvider", "group": "providers", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "demo": "messaging\/create-sendgrid-provider.md", @@ -21028,7 +21046,7 @@ "x-appwrite": { "method": "updateSendgridProvider", "group": "providers", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "demo": "messaging\/update-sendgrid-provider.md", @@ -21138,7 +21156,7 @@ "x-appwrite": { "method": "createSmtpProvider", "group": "providers", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "demo": "messaging\/create-smtp-provider.md", @@ -21369,7 +21387,7 @@ "x-appwrite": { "method": "updateSmtpProvider", "group": "providers", - "weight": 275, + "weight": 276, "cookies": false, "type": "", "demo": "messaging\/update-smtp-provider.md", @@ -21600,7 +21618,7 @@ "x-appwrite": { "method": "createTelesignProvider", "group": "providers", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "demo": "messaging\/create-telesign-provider.md", @@ -21697,7 +21715,7 @@ "x-appwrite": { "method": "updateTelesignProvider", "group": "providers", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "demo": "messaging\/update-telesign-provider.md", @@ -21797,7 +21815,7 @@ "x-appwrite": { "method": "createTextmagicProvider", "group": "providers", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "demo": "messaging\/create-textmagic-provider.md", @@ -21894,7 +21912,7 @@ "x-appwrite": { "method": "updateTextmagicProvider", "group": "providers", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "demo": "messaging\/update-textmagic-provider.md", @@ -21994,7 +22012,7 @@ "x-appwrite": { "method": "createTwilioProvider", "group": "providers", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "demo": "messaging\/create-twilio-provider.md", @@ -22091,7 +22109,7 @@ "x-appwrite": { "method": "updateTwilioProvider", "group": "providers", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "demo": "messaging\/update-twilio-provider.md", @@ -22191,7 +22209,7 @@ "x-appwrite": { "method": "createVonageProvider", "group": "providers", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "demo": "messaging\/create-vonage-provider.md", @@ -22288,7 +22306,7 @@ "x-appwrite": { "method": "updateVonageProvider", "group": "providers", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "demo": "messaging\/update-vonage-provider.md", @@ -22388,7 +22406,7 @@ "x-appwrite": { "method": "getProvider", "group": "providers", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "demo": "messaging\/get-provider.md", @@ -22442,7 +22460,7 @@ "x-appwrite": { "method": "deleteProvider", "group": "providers", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "demo": "messaging\/delete-provider.md", @@ -22505,7 +22523,7 @@ "x-appwrite": { "method": "listProviderLogs", "group": "providers", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "demo": "messaging\/list-provider-logs.md", @@ -22592,7 +22610,7 @@ "x-appwrite": { "method": "listSubscriberLogs", "group": "subscribers", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "demo": "messaging\/list-subscriber-logs.md", @@ -22679,7 +22697,7 @@ "x-appwrite": { "method": "listTopics", "group": "topics", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "demo": "messaging\/list-topics.md", @@ -22765,7 +22783,7 @@ "x-appwrite": { "method": "createTopic", "group": "topics", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "demo": "messaging\/create-topic.md", @@ -22849,7 +22867,7 @@ "x-appwrite": { "method": "getTopic", "group": "topics", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "demo": "messaging\/get-topic.md", @@ -22910,7 +22928,7 @@ "x-appwrite": { "method": "updateTopic", "group": "topics", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "demo": "messaging\/update-topic.md", @@ -22990,7 +23008,7 @@ "x-appwrite": { "method": "deleteTopic", "group": "topics", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "demo": "messaging\/delete-topic.md", @@ -23053,7 +23071,7 @@ "x-appwrite": { "method": "listTopicLogs", "group": "topics", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "demo": "messaging\/list-topic-logs.md", @@ -23140,7 +23158,7 @@ "x-appwrite": { "method": "listSubscribers", "group": "subscribers", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "demo": "messaging\/list-subscribers.md", @@ -23236,7 +23254,7 @@ "x-appwrite": { "method": "createSubscriber", "group": "subscribers", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "demo": "messaging\/create-subscriber.md", @@ -23327,7 +23345,7 @@ "x-appwrite": { "method": "getSubscriber", "group": "subscribers", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "demo": "messaging\/get-subscriber.md", @@ -23391,7 +23409,7 @@ "x-appwrite": { "method": "deleteSubscriber", "group": "subscribers", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "demo": "messaging\/delete-subscriber.md", @@ -23467,7 +23485,7 @@ "x-appwrite": { "method": "list", "group": null, - "weight": 250, + "weight": 251, "cookies": false, "type": "", "demo": "migrations\/list.md", @@ -23553,7 +23571,7 @@ "x-appwrite": { "method": "createAppwriteMigration", "group": null, - "weight": 244, + "weight": 245, "cookies": false, "type": "", "demo": "migrations\/create-appwrite-migration.md", @@ -23662,7 +23680,7 @@ "x-appwrite": { "method": "getAppwriteReport", "group": null, - "weight": 252, + "weight": 253, "cookies": false, "type": "", "demo": "migrations\/get-appwrite-report.md", @@ -23776,7 +23794,7 @@ "x-appwrite": { "method": "createCSVExport", "group": null, - "weight": 249, + "weight": 250, "cookies": false, "type": "", "demo": "migrations\/create-csv-export.md", @@ -23891,7 +23909,7 @@ "x-appwrite": { "method": "createCSVImport", "group": null, - "weight": 248, + "weight": 249, "cookies": false, "type": "", "demo": "migrations\/create-csv-import.md", @@ -23976,7 +23994,7 @@ "x-appwrite": { "method": "createFirebaseMigration", "group": null, - "weight": 245, + "weight": 246, "cookies": false, "type": "", "demo": "migrations\/create-firebase-migration.md", @@ -24067,7 +24085,7 @@ "x-appwrite": { "method": "getFirebaseReport", "group": null, - "weight": 253, + "weight": 254, "cookies": false, "type": "", "demo": "migrations\/get-firebase-report.md", @@ -24154,7 +24172,7 @@ "x-appwrite": { "method": "createNHostMigration", "group": null, - "weight": 247, + "weight": 248, "cookies": false, "type": "", "demo": "migrations\/create-n-host-migration.md", @@ -24281,7 +24299,7 @@ "x-appwrite": { "method": "getNHostReport", "group": null, - "weight": 255, + "weight": 256, "cookies": false, "type": "", "demo": "migrations\/get-n-host-report.md", @@ -24430,7 +24448,7 @@ "x-appwrite": { "method": "createSupabaseMigration", "group": null, - "weight": 246, + "weight": 247, "cookies": false, "type": "", "demo": "migrations\/create-supabase-migration.md", @@ -24551,7 +24569,7 @@ "x-appwrite": { "method": "getSupabaseReport", "group": null, - "weight": 254, + "weight": 255, "cookies": false, "type": "", "demo": "migrations\/get-supabase-report.md", @@ -24691,7 +24709,7 @@ "x-appwrite": { "method": "get", "group": null, - "weight": 251, + "weight": 252, "cookies": false, "type": "", "demo": "migrations\/get.md", @@ -24750,7 +24768,7 @@ "x-appwrite": { "method": "retry", "group": null, - "weight": 256, + "weight": 257, "cookies": false, "type": "", "demo": "migrations\/retry.md", @@ -24802,7 +24820,7 @@ "x-appwrite": { "method": "delete", "group": null, - "weight": 257, + "weight": 258, "cookies": false, "type": "", "demo": "migrations\/delete.md", @@ -25281,7 +25299,7 @@ "x-appwrite": { "method": "list", "group": "projects", - "weight": 452, + "weight": 453, "cookies": false, "type": "", "demo": "projects\/list.md", @@ -26948,14 +26966,14 @@ "x-appwrite": { "method": "listDevKeys", "group": "devKeys", - "weight": 450, + "weight": 451, "cookies": false, "type": "", "demo": "projects\/list-dev-keys.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "devKeys.read", "platforms": [ "console" ], @@ -27019,14 +27037,14 @@ "x-appwrite": { "method": "createDevKey", "group": "devKeys", - "weight": 447, + "weight": 448, "cookies": false, "type": "", "demo": "projects\/create-dev-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "devKeys.write", "platforms": [ "console" ], @@ -27104,14 +27122,14 @@ "x-appwrite": { "method": "getDevKey", "group": "devKeys", - "weight": 449, + "weight": 450, "cookies": false, "type": "", "demo": "projects\/get-dev-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "devKeys.read", "platforms": [ "console" ], @@ -27172,14 +27190,14 @@ "x-appwrite": { "method": "updateDevKey", "group": "devKeys", - "weight": 448, + "weight": 449, "cookies": false, "type": "", "demo": "projects\/update-dev-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "devKeys.write", "platforms": [ "console" ], @@ -27258,14 +27276,14 @@ "x-appwrite": { "method": "deleteDevKey", "group": "devKeys", - "weight": 451, + "weight": 452, "cookies": false, "type": "", "demo": "projects\/delete-dev-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "devKeys.write", "platforms": [ "console" ], @@ -28081,7 +28099,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [] @@ -31348,7 +31367,7 @@ "x-appwrite": { "method": "listRules", "group": null, - "weight": 518, + "weight": 519, "cookies": false, "type": "", "demo": "proxy\/list-rules.md", @@ -31433,7 +31452,7 @@ "x-appwrite": { "method": "createAPIRule", "group": null, - "weight": 513, + "weight": 514, "cookies": false, "type": "", "demo": "proxy\/create-api-rule.md", @@ -31500,7 +31519,7 @@ "x-appwrite": { "method": "createFunctionRule", "group": null, - "weight": 515, + "weight": 516, "cookies": false, "type": "", "demo": "proxy\/create-function-rule.md", @@ -31578,7 +31597,7 @@ "x-appwrite": { "method": "createRedirectRule", "group": null, - "weight": 516, + "weight": 517, "cookies": false, "type": "", "demo": "proxy\/create-redirect-rule.md", @@ -31691,7 +31710,7 @@ "x-appwrite": { "method": "createSiteRule", "group": null, - "weight": 514, + "weight": 515, "cookies": false, "type": "", "demo": "proxy\/create-site-rule.md", @@ -31769,7 +31788,7 @@ "x-appwrite": { "method": "getRule", "group": null, - "weight": 517, + "weight": 518, "cookies": false, "type": "", "demo": "proxy\/get-rule.md", @@ -31820,7 +31839,7 @@ "x-appwrite": { "method": "deleteRule", "group": null, - "weight": 519, + "weight": 520, "cookies": false, "type": "", "demo": "proxy\/delete-rule.md", @@ -31880,7 +31899,7 @@ "x-appwrite": { "method": "updateRuleVerification", "group": null, - "weight": 520, + "weight": 521, "cookies": false, "type": "", "demo": "proxy\/update-rule-verification.md", @@ -31940,7 +31959,7 @@ "x-appwrite": { "method": "list", "group": "sites", - "weight": 485, + "weight": 486, "cookies": false, "type": "", "demo": "sites\/list.md", @@ -32025,7 +32044,7 @@ "x-appwrite": { "method": "create", "group": "sites", - "weight": 483, + "weight": 484, "cookies": false, "type": "", "demo": "sites\/create.md", @@ -32278,7 +32297,7 @@ "x-appwrite": { "method": "listFrameworks", "group": "frameworks", - "weight": 488, + "weight": 489, "cookies": false, "type": "", "demo": "sites\/list-frameworks.md", @@ -32328,7 +32347,7 @@ "x-appwrite": { "method": "listSpecifications", "group": "frameworks", - "weight": 511, + "weight": 512, "cookies": false, "type": "", "demo": "sites\/list-specifications.md", @@ -32378,7 +32397,7 @@ "x-appwrite": { "method": "listTemplates", "group": "templates", - "weight": 507, + "weight": 508, "cookies": false, "type": "", "demo": "sites\/list-templates.md", @@ -32507,7 +32526,7 @@ "x-appwrite": { "method": "getTemplate", "group": "templates", - "weight": 508, + "weight": 509, "cookies": false, "type": "", "demo": "sites\/get-template.md", @@ -32567,7 +32586,7 @@ "x-appwrite": { "method": "listUsage", "group": null, - "weight": 509, + "weight": 510, "cookies": false, "type": "", "demo": "sites\/list-usage.md", @@ -32639,7 +32658,7 @@ "x-appwrite": { "method": "get", "group": "sites", - "weight": 484, + "weight": 485, "cookies": false, "type": "", "demo": "sites\/get.md", @@ -32699,7 +32718,7 @@ "x-appwrite": { "method": "update", "group": "sites", - "weight": 486, + "weight": 487, "cookies": false, "type": "", "demo": "sites\/update.md", @@ -32948,7 +32967,7 @@ "x-appwrite": { "method": "delete", "group": "sites", - "weight": 487, + "weight": 488, "cookies": false, "type": "", "demo": "sites\/delete.md", @@ -33010,7 +33029,7 @@ "x-appwrite": { "method": "updateSiteDeployment", "group": "sites", - "weight": 494, + "weight": 495, "cookies": false, "type": "", "demo": "sites\/update-site-deployment.md", @@ -33091,7 +33110,7 @@ "x-appwrite": { "method": "listDeployments", "group": "deployments", - "weight": 493, + "weight": 494, "cookies": false, "type": "", "demo": "sites\/list-deployments.md", @@ -33186,7 +33205,7 @@ "x-appwrite": { "method": "createDeployment", "group": "deployments", - "weight": 489, + "weight": 490, "cookies": false, "type": "upload", "demo": "sites\/create-deployment.md", @@ -33291,7 +33310,7 @@ "x-appwrite": { "method": "createDuplicateDeployment", "group": "deployments", - "weight": 497, + "weight": 498, "cookies": false, "type": "", "demo": "sites\/create-duplicate-deployment.md", @@ -33372,7 +33391,7 @@ "x-appwrite": { "method": "createTemplateDeployment", "group": "deployments", - "weight": 490, + "weight": 491, "cookies": false, "type": "", "demo": "sites\/create-template-deployment.md", @@ -33489,7 +33508,7 @@ "x-appwrite": { "method": "createVcsDeployment", "group": "deployments", - "weight": 491, + "weight": 492, "cookies": false, "type": "", "demo": "sites\/create-vcs-deployment.md", @@ -33588,7 +33607,7 @@ "x-appwrite": { "method": "getDeployment", "group": "deployments", - "weight": 492, + "weight": 493, "cookies": false, "type": "", "demo": "sites\/get-deployment.md", @@ -33651,7 +33670,7 @@ "x-appwrite": { "method": "deleteDeployment", "group": "deployments", - "weight": 495, + "weight": 496, "cookies": false, "type": "", "demo": "sites\/delete-deployment.md", @@ -33716,7 +33735,7 @@ "x-appwrite": { "method": "getDeploymentDownload", "group": "deployments", - "weight": 496, + "weight": 497, "cookies": false, "type": "location", "demo": "sites\/get-deployment-download.md", @@ -33807,7 +33826,7 @@ "x-appwrite": { "method": "updateDeploymentStatus", "group": "deployments", - "weight": 498, + "weight": 499, "cookies": false, "type": "", "demo": "sites\/update-deployment-status.md", @@ -33879,7 +33898,7 @@ "x-appwrite": { "method": "listLogs", "group": "logs", - "weight": 500, + "weight": 501, "cookies": false, "type": "", "demo": "sites\/list-logs.md", @@ -33965,7 +33984,7 @@ "x-appwrite": { "method": "getLog", "group": "logs", - "weight": 499, + "weight": 500, "cookies": false, "type": "", "demo": "sites\/get-log.md", @@ -34028,7 +34047,7 @@ "x-appwrite": { "method": "deleteLog", "group": "logs", - "weight": 501, + "weight": 502, "cookies": false, "type": "", "demo": "sites\/delete-log.md", @@ -34100,7 +34119,7 @@ "x-appwrite": { "method": "getUsage", "group": null, - "weight": 510, + "weight": 511, "cookies": false, "type": "", "demo": "sites\/get-usage.md", @@ -34182,7 +34201,7 @@ "x-appwrite": { "method": "listVariables", "group": "variables", - "weight": 504, + "weight": 505, "cookies": false, "type": "", "demo": "sites\/list-variables.md", @@ -34242,7 +34261,7 @@ "x-appwrite": { "method": "createVariable", "group": "variables", - "weight": 502, + "weight": 503, "cookies": false, "type": "", "demo": "sites\/create-variable.md", @@ -34334,7 +34353,7 @@ "x-appwrite": { "method": "getVariable", "group": "variables", - "weight": 503, + "weight": 504, "cookies": false, "type": "", "demo": "sites\/get-variable.md", @@ -34404,7 +34423,7 @@ "x-appwrite": { "method": "updateVariable", "group": "variables", - "weight": 505, + "weight": 506, "cookies": false, "type": "", "demo": "sites\/update-variable.md", @@ -34498,7 +34517,7 @@ "x-appwrite": { "method": "deleteVariable", "group": "variables", - "weight": 506, + "weight": 507, "cookies": false, "type": "", "demo": "sites\/delete-variable.md", @@ -36036,7 +36055,7 @@ "x-appwrite": { "method": "list", "group": "tablesdb", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "demo": "tablesdb\/list.md", @@ -36122,7 +36141,7 @@ "x-appwrite": { "method": "create", "group": "tablesdb", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "demo": "tablesdb\/create.md", @@ -36203,7 +36222,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 445, + "weight": 446, "cookies": false, "type": "", "demo": "tablesdb\/list-transactions.md", @@ -36273,7 +36292,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 441, + "weight": 442, "cookies": false, "type": "", "demo": "tablesdb\/create-transaction.md", @@ -36346,7 +36365,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 442, + "weight": 443, "cookies": false, "type": "", "demo": "tablesdb\/get-transaction.md", @@ -36413,7 +36432,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 443, + "weight": 444, "cookies": false, "type": "", "demo": "tablesdb\/update-transaction.md", @@ -36494,7 +36513,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 444, + "weight": 445, "cookies": false, "type": "", "demo": "tablesdb\/delete-transaction.md", @@ -36563,7 +36582,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 446, + "weight": 447, "cookies": false, "type": "", "demo": "tablesdb\/create-operations.md", @@ -36651,7 +36670,7 @@ "x-appwrite": { "method": "listUsage", "group": null, - "weight": 388, + "weight": 389, "cookies": false, "type": "", "demo": "tablesdb\/list-usage.md", @@ -36750,7 +36769,7 @@ "x-appwrite": { "method": "get", "group": "tablesdb", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "demo": "tablesdb\/get.md", @@ -36811,7 +36830,7 @@ "x-appwrite": { "method": "update", "group": "tablesdb", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "demo": "tablesdb\/update.md", @@ -36889,7 +36908,7 @@ "x-appwrite": { "method": "delete", "group": "tablesdb", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "demo": "tablesdb\/delete.md", @@ -36952,7 +36971,7 @@ "x-appwrite": { "method": "listTables", "group": "tables", - "weight": 393, + "weight": 394, "cookies": false, "type": "", "demo": "tablesdb\/list-tables.md", @@ -37051,7 +37070,7 @@ "x-appwrite": { "method": "createTable", "group": "tables", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "demo": "tablesdb\/create-table.md", @@ -37177,7 +37196,7 @@ "x-appwrite": { "method": "getTable", "group": "tables", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "demo": "tablesdb\/get-table.md", @@ -37251,7 +37270,7 @@ "x-appwrite": { "method": "updateTable", "group": "tables", - "weight": 391, + "weight": 392, "cookies": false, "type": "", "demo": "tablesdb\/update-table.md", @@ -37356,7 +37375,7 @@ "x-appwrite": { "method": "deleteTable", "group": "tables", - "weight": 392, + "weight": 393, "cookies": false, "type": "", "demo": "tablesdb\/delete-table.md", @@ -37432,7 +37451,7 @@ "x-appwrite": { "method": "listColumns", "group": "columns", - "weight": 398, + "weight": 399, "cookies": false, "type": "", "demo": "tablesdb\/list-columns.md", @@ -37532,7 +37551,7 @@ "x-appwrite": { "method": "createBooleanColumn", "group": "columns", - "weight": 399, + "weight": 400, "cookies": false, "type": "", "demo": "tablesdb\/create-boolean-column.md", @@ -37644,7 +37663,7 @@ "x-appwrite": { "method": "updateBooleanColumn", "group": "columns", - "weight": 400, + "weight": 401, "cookies": false, "type": "", "demo": "tablesdb\/update-boolean-column.md", @@ -37761,7 +37780,7 @@ "x-appwrite": { "method": "createDatetimeColumn", "group": "columns", - "weight": 401, + "weight": 402, "cookies": false, "type": "", "demo": "tablesdb\/create-datetime-column.md", @@ -37873,7 +37892,7 @@ "x-appwrite": { "method": "updateDatetimeColumn", "group": "columns", - "weight": 402, + "weight": 403, "cookies": false, "type": "", "demo": "tablesdb\/update-datetime-column.md", @@ -37990,7 +38009,7 @@ "x-appwrite": { "method": "createEmailColumn", "group": "columns", - "weight": 403, + "weight": 404, "cookies": false, "type": "", "demo": "tablesdb\/create-email-column.md", @@ -38102,7 +38121,7 @@ "x-appwrite": { "method": "updateEmailColumn", "group": "columns", - "weight": 404, + "weight": 405, "cookies": false, "type": "", "demo": "tablesdb\/update-email-column.md", @@ -38219,7 +38238,7 @@ "x-appwrite": { "method": "createEnumColumn", "group": "columns", - "weight": 405, + "weight": 406, "cookies": false, "type": "", "demo": "tablesdb\/create-enum-column.md", @@ -38340,7 +38359,7 @@ "x-appwrite": { "method": "updateEnumColumn", "group": "columns", - "weight": 406, + "weight": 407, "cookies": false, "type": "", "demo": "tablesdb\/update-enum-column.md", @@ -38466,7 +38485,7 @@ "x-appwrite": { "method": "createFloatColumn", "group": "columns", - "weight": 407, + "weight": 408, "cookies": false, "type": "", "demo": "tablesdb\/create-float-column.md", @@ -38590,7 +38609,7 @@ "x-appwrite": { "method": "updateFloatColumn", "group": "columns", - "weight": 408, + "weight": 409, "cookies": false, "type": "", "demo": "tablesdb\/update-float-column.md", @@ -38719,7 +38738,7 @@ "x-appwrite": { "method": "createIntegerColumn", "group": "columns", - "weight": 409, + "weight": 410, "cookies": false, "type": "", "demo": "tablesdb\/create-integer-column.md", @@ -38843,7 +38862,7 @@ "x-appwrite": { "method": "updateIntegerColumn", "group": "columns", - "weight": 410, + "weight": 411, "cookies": false, "type": "", "demo": "tablesdb\/update-integer-column.md", @@ -38972,7 +38991,7 @@ "x-appwrite": { "method": "createIpColumn", "group": "columns", - "weight": 411, + "weight": 412, "cookies": false, "type": "", "demo": "tablesdb\/create-ip-column.md", @@ -39084,7 +39103,7 @@ "x-appwrite": { "method": "updateIpColumn", "group": "columns", - "weight": 412, + "weight": 413, "cookies": false, "type": "", "demo": "tablesdb\/update-ip-column.md", @@ -39201,7 +39220,7 @@ "x-appwrite": { "method": "createLineColumn", "group": "columns", - "weight": 413, + "weight": 414, "cookies": false, "type": "", "demo": "tablesdb\/create-line-column.md", @@ -39315,7 +39334,7 @@ "x-appwrite": { "method": "updateLineColumn", "group": "columns", - "weight": 414, + "weight": 415, "cookies": false, "type": "", "demo": "tablesdb\/update-line-column.md", @@ -39438,7 +39457,7 @@ "x-appwrite": { "method": "createPointColumn", "group": "columns", - "weight": 415, + "weight": 416, "cookies": false, "type": "", "demo": "tablesdb\/create-point-column.md", @@ -39552,7 +39571,7 @@ "x-appwrite": { "method": "updatePointColumn", "group": "columns", - "weight": 416, + "weight": 417, "cookies": false, "type": "", "demo": "tablesdb\/update-point-column.md", @@ -39675,7 +39694,7 @@ "x-appwrite": { "method": "createPolygonColumn", "group": "columns", - "weight": 417, + "weight": 418, "cookies": false, "type": "", "demo": "tablesdb\/create-polygon-column.md", @@ -39789,7 +39808,7 @@ "x-appwrite": { "method": "updatePolygonColumn", "group": "columns", - "weight": 418, + "weight": 419, "cookies": false, "type": "", "demo": "tablesdb\/update-polygon-column.md", @@ -39912,7 +39931,7 @@ "x-appwrite": { "method": "createRelationshipColumn", "group": "columns", - "weight": 419, + "weight": 420, "cookies": false, "type": "", "demo": "tablesdb\/create-relationship-column.md", @@ -40050,7 +40069,7 @@ "x-appwrite": { "method": "createStringColumn", "group": "columns", - "weight": 421, + "weight": 422, "cookies": false, "type": "", "demo": "tablesdb\/create-string-column.md", @@ -40173,7 +40192,7 @@ "x-appwrite": { "method": "updateStringColumn", "group": "columns", - "weight": 422, + "weight": 423, "cookies": false, "type": "", "demo": "tablesdb\/update-string-column.md", @@ -40296,7 +40315,7 @@ "x-appwrite": { "method": "createUrlColumn", "group": "columns", - "weight": 423, + "weight": 424, "cookies": false, "type": "", "demo": "tablesdb\/create-url-column.md", @@ -40408,7 +40427,7 @@ "x-appwrite": { "method": "updateUrlColumn", "group": "columns", - "weight": 424, + "weight": 425, "cookies": false, "type": "", "demo": "tablesdb\/update-url-column.md", @@ -40556,7 +40575,7 @@ "x-appwrite": { "method": "getColumn", "group": "columns", - "weight": 396, + "weight": 397, "cookies": false, "type": "", "demo": "tablesdb\/get-column.md", @@ -40632,7 +40651,7 @@ "x-appwrite": { "method": "deleteColumn", "group": "columns", - "weight": 397, + "weight": 398, "cookies": false, "type": "", "demo": "tablesdb\/delete-column.md", @@ -40717,7 +40736,7 @@ "x-appwrite": { "method": "updateRelationshipColumn", "group": "columns", - "weight": 420, + "weight": 421, "cookies": false, "type": "", "demo": "tablesdb\/update-relationship-column.md", @@ -40832,7 +40851,7 @@ "x-appwrite": { "method": "listIndexes", "group": "indexes", - "weight": 428, + "weight": 429, "cookies": false, "type": "", "demo": "tablesdb\/list-indexes.md", @@ -40930,7 +40949,7 @@ "x-appwrite": { "method": "createIndex", "group": "indexes", - "weight": 425, + "weight": 426, "cookies": false, "type": "", "demo": "tablesdb\/create-index.md", @@ -41070,7 +41089,7 @@ "x-appwrite": { "method": "getIndex", "group": "indexes", - "weight": 426, + "weight": 427, "cookies": false, "type": "", "demo": "tablesdb\/get-index.md", @@ -41146,7 +41165,7 @@ "x-appwrite": { "method": "deleteIndex", "group": "indexes", - "weight": 427, + "weight": 428, "cookies": false, "type": "", "demo": "tablesdb\/delete-index.md", @@ -41231,7 +41250,7 @@ "x-appwrite": { "method": "listTableLogs", "group": "tables", - "weight": 394, + "weight": 395, "cookies": false, "type": "", "demo": "tablesdb\/list-table-logs.md", @@ -41318,7 +41337,7 @@ "x-appwrite": { "method": "listRows", "group": "rows", - "weight": 437, + "weight": 438, "cookies": false, "type": "", "demo": "tablesdb\/list-rows.md", @@ -41429,7 +41448,7 @@ "x-appwrite": { "method": "createRow", "group": "rows", - "weight": 429, + "weight": 430, "cookies": false, "type": "", "demo": "tablesdb\/create-row.md", @@ -41611,7 +41630,7 @@ "x-appwrite": { "method": "upsertRows", "group": "rows", - "weight": 434, + "weight": 435, "cookies": false, "type": "", "demo": "tablesdb\/upsert-rows.md", @@ -41743,7 +41762,7 @@ "x-appwrite": { "method": "updateRows", "group": "rows", - "weight": 432, + "weight": 433, "cookies": false, "type": "", "demo": "tablesdb\/update-rows.md", @@ -41847,7 +41866,7 @@ "x-appwrite": { "method": "deleteRows", "group": "rows", - "weight": 436, + "weight": 437, "cookies": false, "type": "", "demo": "tablesdb\/delete-rows.md", @@ -41948,7 +41967,7 @@ "x-appwrite": { "method": "getRow", "group": "rows", - "weight": 430, + "weight": 431, "cookies": false, "type": "", "demo": "tablesdb\/get-row.md", @@ -42058,7 +42077,7 @@ "x-appwrite": { "method": "upsertRow", "group": "rows", - "weight": 433, + "weight": 434, "cookies": false, "type": "", "demo": "tablesdb\/upsert-row.md", @@ -42208,7 +42227,7 @@ "x-appwrite": { "method": "updateRow", "group": "rows", - "weight": 431, + "weight": 432, "cookies": false, "type": "", "demo": "tablesdb\/update-row.md", @@ -42319,7 +42338,7 @@ "x-appwrite": { "method": "deleteRow", "group": "rows", - "weight": 435, + "weight": 436, "cookies": false, "type": "", "demo": "tablesdb\/delete-row.md", @@ -42425,7 +42444,7 @@ "x-appwrite": { "method": "listRowLogs", "group": "logs", - "weight": 438, + "weight": 439, "cookies": false, "type": "", "demo": "tablesdb\/list-row-logs.md", @@ -42522,7 +42541,7 @@ "x-appwrite": { "method": "decrementRowColumn", "group": "rows", - "weight": 440, + "weight": 441, "cookies": false, "type": "", "demo": "tablesdb\/decrement-row-column.md", @@ -42648,7 +42667,7 @@ "x-appwrite": { "method": "incrementRowColumn", "group": "rows", - "weight": 439, + "weight": 440, "cookies": false, "type": "", "demo": "tablesdb\/increment-row-column.md", @@ -42774,7 +42793,7 @@ "x-appwrite": { "method": "getTableUsage", "group": null, - "weight": 395, + "weight": 396, "cookies": false, "type": "", "demo": "tablesdb\/get-table-usage.md", @@ -42870,7 +42889,7 @@ "x-appwrite": { "method": "getUsage", "group": null, - "weight": 387, + "weight": 388, "cookies": false, "type": "", "demo": "tablesdb\/get-usage.md", @@ -44158,7 +44177,7 @@ "x-appwrite": { "method": "list", "group": "files", - "weight": 523, + "weight": 524, "cookies": false, "type": "", "demo": "tokens\/list.md", @@ -44252,7 +44271,7 @@ "x-appwrite": { "method": "createFileToken", "group": "files", - "weight": 521, + "weight": 522, "cookies": false, "type": "", "demo": "tokens\/create-file-token.md", @@ -44341,7 +44360,7 @@ "x-appwrite": { "method": "get", "group": "tokens", - "weight": 522, + "weight": 523, "cookies": false, "type": "", "demo": "tokens\/get.md", @@ -44401,7 +44420,7 @@ "x-appwrite": { "method": "update", "group": "tokens", - "weight": 524, + "weight": 525, "cookies": false, "type": "", "demo": "tokens\/update.md", @@ -44471,7 +44490,7 @@ "x-appwrite": { "method": "delete", "group": "tokens", - "weight": 525, + "weight": 526, "cookies": false, "type": "", "demo": "tokens\/delete.md", diff --git a/app/config/specs/open-api3-latest-server.json b/app/config/specs/open-api3-latest-server.json index ecb8bc4dcf..83cf8ed676 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -435,7 +435,23 @@ "Session": [], "JWT": [] } - ] + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "duration": { + "type": "integer", + "description": "Time in seconds before JWT expires. Default duration is 900 seconds, and maximum is 3600 seconds.", + "x-example": 0 + } + } + } + } + } + } } }, "\/account\/logs": { @@ -542,7 +558,7 @@ "x-appwrite": { "method": "updateMFA", "group": "mfa", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "demo": "account\/update-mfa.md", @@ -615,7 +631,7 @@ "x-appwrite": { "method": "createMfaAuthenticator", "group": "mfa", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "demo": "account\/create-mfa-authenticator.md", @@ -742,7 +758,7 @@ "x-appwrite": { "method": "updateMfaAuthenticator", "group": "mfa", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "demo": "account\/update-mfa-authenticator.md", @@ -885,7 +901,7 @@ "x-appwrite": { "method": "deleteMfaAuthenticator", "group": "mfa", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "demo": "account\/delete-mfa-authenticator.md", @@ -1012,7 +1028,7 @@ "x-appwrite": { "method": "createMfaChallenge", "group": "mfa", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "demo": "account\/create-mfa-challenge.md", @@ -1149,7 +1165,7 @@ "x-appwrite": { "method": "updateMfaChallenge", "group": "mfa", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "demo": "account\/update-mfa-challenge.md", @@ -1290,7 +1306,7 @@ "x-appwrite": { "method": "listMfaFactors", "group": "mfa", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "demo": "account\/list-mfa-factors.md", @@ -1394,7 +1410,7 @@ "x-appwrite": { "method": "getMfaRecoveryCodes", "group": "mfa", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "demo": "account\/get-mfa-recovery-codes.md", @@ -1496,7 +1512,7 @@ "x-appwrite": { "method": "createMfaRecoveryCodes", "group": "mfa", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "demo": "account\/create-mfa-recovery-codes.md", @@ -1598,7 +1614,7 @@ "x-appwrite": { "method": "updateMfaRecoveryCodes", "group": "mfa", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "demo": "account\/update-mfa-recovery-codes.md", @@ -3188,7 +3204,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [] @@ -5583,7 +5600,7 @@ "x-appwrite": { "method": "list", "group": "databases", - "weight": 320, + "weight": 321, "cookies": false, "type": "", "demo": "databases\/list.md", @@ -5704,7 +5721,7 @@ "x-appwrite": { "method": "create", "group": "databases", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "demo": "databases\/create.md", @@ -5823,7 +5840,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "demo": "databases\/list-transactions.md", @@ -5892,7 +5909,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "demo": "databases\/create-transaction.md", @@ -5964,7 +5981,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "demo": "databases\/get-transaction.md", @@ -6030,7 +6047,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "demo": "databases\/update-transaction.md", @@ -6110,7 +6127,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "demo": "databases\/delete-transaction.md", @@ -6178,7 +6195,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "demo": "databases\/create-operations.md", @@ -6265,7 +6282,7 @@ "x-appwrite": { "method": "get", "group": "databases", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "demo": "databases\/get.md", @@ -6361,7 +6378,7 @@ "x-appwrite": { "method": "update", "group": "databases", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "demo": "databases\/update.md", @@ -6477,7 +6494,7 @@ "x-appwrite": { "method": "delete", "group": "databases", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "demo": "databases\/delete.md", @@ -6574,7 +6591,7 @@ "x-appwrite": { "method": "listCollections", "group": "collections", - "weight": 328, + "weight": 329, "cookies": false, "type": "", "demo": "databases\/list-collections.md", @@ -6675,7 +6692,7 @@ "x-appwrite": { "method": "createCollection", "group": "collections", - "weight": 324, + "weight": 325, "cookies": false, "type": "", "demo": "databases\/create-collection.md", @@ -6754,7 +6771,7 @@ }, "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.", + "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.", "x-example": null, "items": { "type": "object" @@ -6803,7 +6820,7 @@ "x-appwrite": { "method": "getCollection", "group": "collections", - "weight": 325, + "weight": 326, "cookies": false, "type": "", "demo": "databases\/get-collection.md", @@ -6879,7 +6896,7 @@ "x-appwrite": { "method": "updateCollection", "group": "collections", - "weight": 326, + "weight": 327, "cookies": false, "type": "", "demo": "databases\/update-collection.md", @@ -6986,7 +7003,7 @@ "x-appwrite": { "method": "deleteCollection", "group": "collections", - "weight": 327, + "weight": 328, "cookies": false, "type": "", "demo": "databases\/delete-collection.md", @@ -7064,7 +7081,7 @@ "x-appwrite": { "method": "listAttributes", "group": "attributes", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "demo": "databases\/list-attributes.md", @@ -7166,7 +7183,7 @@ "x-appwrite": { "method": "createBooleanAttribute", "group": "attributes", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "demo": "databases\/create-boolean-attribute.md", @@ -7280,7 +7297,7 @@ "x-appwrite": { "method": "updateBooleanAttribute", "group": "attributes", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "demo": "databases\/update-boolean-attribute.md", @@ -7399,7 +7416,7 @@ "x-appwrite": { "method": "createDatetimeAttribute", "group": "attributes", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "demo": "databases\/create-datetime-attribute.md", @@ -7513,7 +7530,7 @@ "x-appwrite": { "method": "updateDatetimeAttribute", "group": "attributes", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "demo": "databases\/update-datetime-attribute.md", @@ -7632,7 +7649,7 @@ "x-appwrite": { "method": "createEmailAttribute", "group": "attributes", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "demo": "databases\/create-email-attribute.md", @@ -7746,7 +7763,7 @@ "x-appwrite": { "method": "updateEmailAttribute", "group": "attributes", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "demo": "databases\/update-email-attribute.md", @@ -7865,7 +7882,7 @@ "x-appwrite": { "method": "createEnumAttribute", "group": "attributes", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "demo": "databases\/create-enum-attribute.md", @@ -7988,7 +8005,7 @@ "x-appwrite": { "method": "updateEnumAttribute", "group": "attributes", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "demo": "databases\/update-enum-attribute.md", @@ -8116,7 +8133,7 @@ "x-appwrite": { "method": "createFloatAttribute", "group": "attributes", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "demo": "databases\/create-float-attribute.md", @@ -8242,7 +8259,7 @@ "x-appwrite": { "method": "updateFloatAttribute", "group": "attributes", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "demo": "databases\/update-float-attribute.md", @@ -8373,7 +8390,7 @@ "x-appwrite": { "method": "createIntegerAttribute", "group": "attributes", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "demo": "databases\/create-integer-attribute.md", @@ -8499,7 +8516,7 @@ "x-appwrite": { "method": "updateIntegerAttribute", "group": "attributes", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "demo": "databases\/update-integer-attribute.md", @@ -8630,7 +8647,7 @@ "x-appwrite": { "method": "createIpAttribute", "group": "attributes", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "demo": "databases\/create-ip-attribute.md", @@ -8744,7 +8761,7 @@ "x-appwrite": { "method": "updateIpAttribute", "group": "attributes", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "demo": "databases\/update-ip-attribute.md", @@ -8863,7 +8880,7 @@ "x-appwrite": { "method": "createLineAttribute", "group": "attributes", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "demo": "databases\/create-line-attribute.md", @@ -8979,7 +8996,7 @@ "x-appwrite": { "method": "updateLineAttribute", "group": "attributes", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "demo": "databases\/update-line-attribute.md", @@ -9104,7 +9121,7 @@ "x-appwrite": { "method": "createPointAttribute", "group": "attributes", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "demo": "databases\/create-point-attribute.md", @@ -9220,7 +9237,7 @@ "x-appwrite": { "method": "updatePointAttribute", "group": "attributes", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "demo": "databases\/update-point-attribute.md", @@ -9345,7 +9362,7 @@ "x-appwrite": { "method": "createPolygonAttribute", "group": "attributes", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "demo": "databases\/create-polygon-attribute.md", @@ -9461,7 +9478,7 @@ "x-appwrite": { "method": "updatePolygonAttribute", "group": "attributes", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "demo": "databases\/update-polygon-attribute.md", @@ -9586,7 +9603,7 @@ "x-appwrite": { "method": "createRelationshipAttribute", "group": "attributes", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "demo": "databases\/create-relationship-attribute.md", @@ -9726,7 +9743,7 @@ "x-appwrite": { "method": "createStringAttribute", "group": "attributes", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "demo": "databases\/create-string-attribute.md", @@ -9851,7 +9868,7 @@ "x-appwrite": { "method": "updateStringAttribute", "group": "attributes", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "demo": "databases\/update-string-attribute.md", @@ -9976,7 +9993,7 @@ "x-appwrite": { "method": "createUrlAttribute", "group": "attributes", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "demo": "databases\/create-url-attribute.md", @@ -10090,7 +10107,7 @@ "x-appwrite": { "method": "updateUrlAttribute", "group": "attributes", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "demo": "databases\/update-url-attribute.md", @@ -10240,7 +10257,7 @@ "x-appwrite": { "method": "getAttribute", "group": "attributes", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "demo": "databases\/get-attribute.md", @@ -10318,7 +10335,7 @@ "x-appwrite": { "method": "deleteAttribute", "group": "attributes", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "demo": "databases\/delete-attribute.md", @@ -10405,7 +10422,7 @@ "x-appwrite": { "method": "updateRelationshipAttribute", "group": "attributes", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "demo": "databases\/update-relationship-attribute.md", @@ -10522,7 +10539,7 @@ "x-appwrite": { "method": "listDocuments", "group": "documents", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "demo": "databases\/list-documents.md", @@ -10636,7 +10653,7 @@ "x-appwrite": { "method": "createDocument", "group": "documents", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "demo": "databases\/create-document.md", @@ -10831,7 +10848,7 @@ "x-appwrite": { "method": "upsertDocuments", "group": "documents", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "demo": "databases\/upsert-documents.md", @@ -10970,7 +10987,7 @@ "x-appwrite": { "method": "updateDocuments", "group": "documents", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "demo": "databases\/update-documents.md", @@ -11076,7 +11093,7 @@ "x-appwrite": { "method": "deleteDocuments", "group": "documents", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "demo": "databases\/delete-documents.md", @@ -11179,7 +11196,7 @@ "x-appwrite": { "method": "getDocument", "group": "documents", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "demo": "databases\/get-document.md", @@ -11292,7 +11309,7 @@ "x-appwrite": { "method": "upsertDocument", "group": "documents", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "demo": "databases\/upsert-document.md", @@ -11450,7 +11467,7 @@ "x-appwrite": { "method": "updateDocument", "group": "documents", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "demo": "databases\/update-document.md", @@ -11564,7 +11581,7 @@ "x-appwrite": { "method": "deleteDocument", "group": "documents", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "demo": "databases\/delete-document.md", @@ -11673,7 +11690,7 @@ "x-appwrite": { "method": "decrementDocumentAttribute", "group": "documents", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "demo": "databases\/decrement-document-attribute.md", @@ -11802,7 +11819,7 @@ "x-appwrite": { "method": "incrementDocumentAttribute", "group": "documents", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "demo": "databases\/increment-document-attribute.md", @@ -11931,7 +11948,7 @@ "x-appwrite": { "method": "listIndexes", "group": "indexes", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "demo": "databases\/list-indexes.md", @@ -12031,7 +12048,7 @@ "x-appwrite": { "method": "createIndex", "group": "indexes", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "demo": "databases\/create-index.md", @@ -12173,7 +12190,7 @@ "x-appwrite": { "method": "getIndex", "group": "indexes", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "demo": "databases\/get-index.md", @@ -12251,7 +12268,7 @@ "x-appwrite": { "method": "deleteIndex", "group": "indexes", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "demo": "databases\/delete-index.md", @@ -12338,7 +12355,7 @@ "x-appwrite": { "method": "list", "group": "functions", - "weight": 456, + "weight": 457, "cookies": false, "type": "", "demo": "functions\/list.md", @@ -12424,7 +12441,7 @@ "x-appwrite": { "method": "create", "group": "functions", - "weight": 453, + "weight": 454, "cookies": false, "type": "", "demo": "functions\/create.md", @@ -12720,7 +12737,7 @@ "x-appwrite": { "method": "listRuntimes", "group": "runtimes", - "weight": 458, + "weight": 459, "cookies": false, "type": "", "demo": "functions\/list-runtimes.md", @@ -12771,7 +12788,7 @@ "x-appwrite": { "method": "listSpecifications", "group": "runtimes", - "weight": 459, + "weight": 460, "cookies": false, "type": "", "demo": "functions\/list-specifications.md", @@ -12822,7 +12839,7 @@ "x-appwrite": { "method": "get", "group": "functions", - "weight": 454, + "weight": 455, "cookies": false, "type": "", "demo": "functions\/get.md", @@ -12883,7 +12900,7 @@ "x-appwrite": { "method": "update", "group": "functions", - "weight": 455, + "weight": 456, "cookies": false, "type": "", "demo": "functions\/update.md", @@ -13176,7 +13193,7 @@ "x-appwrite": { "method": "delete", "group": "functions", - "weight": 457, + "weight": 458, "cookies": false, "type": "", "demo": "functions\/delete.md", @@ -13239,7 +13256,7 @@ "x-appwrite": { "method": "updateFunctionDeployment", "group": "functions", - "weight": 462, + "weight": 463, "cookies": false, "type": "", "demo": "functions\/update-function-deployment.md", @@ -13321,7 +13338,7 @@ "x-appwrite": { "method": "listDeployments", "group": "deployments", - "weight": 463, + "weight": 464, "cookies": false, "type": "", "demo": "functions\/list-deployments.md", @@ -13417,7 +13434,7 @@ "x-appwrite": { "method": "createDeployment", "group": "deployments", - "weight": 460, + "weight": 461, "cookies": false, "type": "upload", "demo": "functions\/create-deployment.md", @@ -13517,7 +13534,7 @@ "x-appwrite": { "method": "createDuplicateDeployment", "group": "deployments", - "weight": 468, + "weight": 469, "cookies": false, "type": "", "demo": "functions\/create-duplicate-deployment.md", @@ -13604,7 +13621,7 @@ "x-appwrite": { "method": "createTemplateDeployment", "group": "deployments", - "weight": 465, + "weight": 466, "cookies": false, "type": "", "demo": "functions\/create-template-deployment.md", @@ -13722,7 +13739,7 @@ "x-appwrite": { "method": "createVcsDeployment", "group": "deployments", - "weight": 466, + "weight": 467, "cookies": false, "type": "", "demo": "functions\/create-vcs-deployment.md", @@ -13821,7 +13838,7 @@ "x-appwrite": { "method": "getDeployment", "group": "deployments", - "weight": 461, + "weight": 462, "cookies": false, "type": "", "demo": "functions\/get-deployment.md", @@ -13885,7 +13902,7 @@ "x-appwrite": { "method": "deleteDeployment", "group": "deployments", - "weight": 464, + "weight": 465, "cookies": false, "type": "", "demo": "functions\/delete-deployment.md", @@ -13951,7 +13968,7 @@ "x-appwrite": { "method": "getDeploymentDownload", "group": "deployments", - "weight": 467, + "weight": 468, "cookies": false, "type": "location", "demo": "functions\/get-deployment-download.md", @@ -14043,7 +14060,7 @@ "x-appwrite": { "method": "updateDeploymentStatus", "group": "deployments", - "weight": 469, + "weight": 470, "cookies": false, "type": "", "demo": "functions\/update-deployment-status.md", @@ -14116,7 +14133,7 @@ "x-appwrite": { "method": "listExecutions", "group": "executions", - "weight": 472, + "weight": 473, "cookies": false, "type": "", "demo": "functions\/list-executions.md", @@ -14205,7 +14222,7 @@ "x-appwrite": { "method": "createExecution", "group": "executions", - "weight": 470, + "weight": 471, "cookies": false, "type": "", "demo": "functions\/create-execution.md", @@ -14325,7 +14342,7 @@ "x-appwrite": { "method": "getExecution", "group": "executions", - "weight": 471, + "weight": 472, "cookies": false, "type": "", "demo": "functions\/get-execution.md", @@ -14393,7 +14410,7 @@ "x-appwrite": { "method": "deleteExecution", "group": "executions", - "weight": 473, + "weight": 474, "cookies": false, "type": "", "demo": "functions\/delete-execution.md", @@ -14466,7 +14483,7 @@ "x-appwrite": { "method": "listVariables", "group": "variables", - "weight": 478, + "weight": 479, "cookies": false, "type": "", "demo": "functions\/list-variables.md", @@ -14527,7 +14544,7 @@ "x-appwrite": { "method": "createVariable", "group": "variables", - "weight": 476, + "weight": 477, "cookies": false, "type": "", "demo": "functions\/create-variable.md", @@ -14620,7 +14637,7 @@ "x-appwrite": { "method": "getVariable", "group": "variables", - "weight": 477, + "weight": 478, "cookies": false, "type": "", "demo": "functions\/get-variable.md", @@ -14691,7 +14708,7 @@ "x-appwrite": { "method": "updateVariable", "group": "variables", - "weight": 479, + "weight": 480, "cookies": false, "type": "", "demo": "functions\/update-variable.md", @@ -14786,7 +14803,7 @@ "x-appwrite": { "method": "deleteVariable", "group": "variables", - "weight": 480, + "weight": 481, "cookies": false, "type": "", "demo": "functions\/delete-variable.md", @@ -14859,7 +14876,7 @@ "x-appwrite": { "method": "query", "group": "graphql", - "weight": 241, + "weight": 242, "cookies": false, "type": "graphql", "demo": "graphql\/query.md", @@ -14915,7 +14932,7 @@ "x-appwrite": { "method": "mutation", "group": "graphql", - "weight": 240, + "weight": 241, "cookies": false, "type": "graphql", "demo": "graphql\/mutation.md", @@ -16780,7 +16797,7 @@ "x-appwrite": { "method": "listMessages", "group": "messages", - "weight": 298, + "weight": 299, "cookies": false, "type": "", "demo": "messaging\/list-messages.md", @@ -16869,7 +16886,7 @@ "x-appwrite": { "method": "createEmail", "group": "messages", - "weight": 295, + "weight": 296, "cookies": false, "type": "", "demo": "messaging\/create-email.md", @@ -17016,7 +17033,7 @@ "x-appwrite": { "method": "updateEmail", "group": "messages", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "demo": "messaging\/update-email.md", @@ -17175,7 +17192,7 @@ "x-appwrite": { "method": "createPush", "group": "messages", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "demo": "messaging\/create-push.md", @@ -17353,7 +17370,7 @@ "x-appwrite": { "method": "updatePush", "group": "messages", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "demo": "messaging\/update-push.md", @@ -17551,7 +17568,7 @@ "x-appwrite": { "method": "createSms", "group": "messages", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "demo": "messaging\/create-sms.md", @@ -17735,7 +17752,7 @@ "x-appwrite": { "method": "updateSms", "group": "messages", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "demo": "messaging\/update-sms.md", @@ -17925,7 +17942,7 @@ "x-appwrite": { "method": "getMessage", "group": "messages", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "demo": "messaging\/get-message.md", @@ -17980,7 +17997,7 @@ "x-appwrite": { "method": "delete", "group": "messages", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "demo": "messaging\/delete.md", @@ -18044,7 +18061,7 @@ "x-appwrite": { "method": "listMessageLogs", "group": "logs", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "demo": "messaging\/list-message-logs.md", @@ -18132,7 +18149,7 @@ "x-appwrite": { "method": "listTargets", "group": "messages", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "demo": "messaging\/list-targets.md", @@ -18220,7 +18237,7 @@ "x-appwrite": { "method": "listProviders", "group": "providers", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "demo": "messaging\/list-providers.md", @@ -18309,7 +18326,7 @@ "x-appwrite": { "method": "createApnsProvider", "group": "providers", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "demo": "messaging\/create-apns-provider.md", @@ -18491,7 +18508,7 @@ "x-appwrite": { "method": "updateApnsProvider", "group": "providers", - "weight": 282, + "weight": 283, "cookies": false, "type": "", "demo": "messaging\/update-apns-provider.md", @@ -18675,7 +18692,7 @@ "x-appwrite": { "method": "createFcmProvider", "group": "providers", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "demo": "messaging\/create-fcm-provider.md", @@ -18830,7 +18847,7 @@ "x-appwrite": { "method": "updateFcmProvider", "group": "providers", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "demo": "messaging\/update-fcm-provider.md", @@ -18986,7 +19003,7 @@ "x-appwrite": { "method": "createMailgunProvider", "group": "providers", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "demo": "messaging\/create-mailgun-provider.md", @@ -19105,7 +19122,7 @@ "x-appwrite": { "method": "updateMailgunProvider", "group": "providers", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "demo": "messaging\/update-mailgun-provider.md", @@ -19227,7 +19244,7 @@ "x-appwrite": { "method": "createMsg91Provider", "group": "providers", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "demo": "messaging\/create-msg-91-provider.md", @@ -19325,7 +19342,7 @@ "x-appwrite": { "method": "updateMsg91Provider", "group": "providers", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "demo": "messaging\/update-msg-91-provider.md", @@ -19426,7 +19443,7 @@ "x-appwrite": { "method": "createResendProvider", "group": "providers", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "demo": "messaging\/create-resend-provider.md", @@ -19534,7 +19551,7 @@ "x-appwrite": { "method": "updateResendProvider", "group": "providers", - "weight": 274, + "weight": 275, "cookies": false, "type": "", "demo": "messaging\/update-resend-provider.md", @@ -19645,7 +19662,7 @@ "x-appwrite": { "method": "createSendgridProvider", "group": "providers", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "demo": "messaging\/create-sendgrid-provider.md", @@ -19753,7 +19770,7 @@ "x-appwrite": { "method": "updateSendgridProvider", "group": "providers", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "demo": "messaging\/update-sendgrid-provider.md", @@ -19864,7 +19881,7 @@ "x-appwrite": { "method": "createSmtpProvider", "group": "providers", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "demo": "messaging\/create-smtp-provider.md", @@ -20098,7 +20115,7 @@ "x-appwrite": { "method": "updateSmtpProvider", "group": "providers", - "weight": 275, + "weight": 276, "cookies": false, "type": "", "demo": "messaging\/update-smtp-provider.md", @@ -20332,7 +20349,7 @@ "x-appwrite": { "method": "createTelesignProvider", "group": "providers", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "demo": "messaging\/create-telesign-provider.md", @@ -20430,7 +20447,7 @@ "x-appwrite": { "method": "updateTelesignProvider", "group": "providers", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "demo": "messaging\/update-telesign-provider.md", @@ -20531,7 +20548,7 @@ "x-appwrite": { "method": "createTextmagicProvider", "group": "providers", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "demo": "messaging\/create-textmagic-provider.md", @@ -20629,7 +20646,7 @@ "x-appwrite": { "method": "updateTextmagicProvider", "group": "providers", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "demo": "messaging\/update-textmagic-provider.md", @@ -20730,7 +20747,7 @@ "x-appwrite": { "method": "createTwilioProvider", "group": "providers", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "demo": "messaging\/create-twilio-provider.md", @@ -20828,7 +20845,7 @@ "x-appwrite": { "method": "updateTwilioProvider", "group": "providers", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "demo": "messaging\/update-twilio-provider.md", @@ -20929,7 +20946,7 @@ "x-appwrite": { "method": "createVonageProvider", "group": "providers", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "demo": "messaging\/create-vonage-provider.md", @@ -21027,7 +21044,7 @@ "x-appwrite": { "method": "updateVonageProvider", "group": "providers", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "demo": "messaging\/update-vonage-provider.md", @@ -21128,7 +21145,7 @@ "x-appwrite": { "method": "getProvider", "group": "providers", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "demo": "messaging\/get-provider.md", @@ -21183,7 +21200,7 @@ "x-appwrite": { "method": "deleteProvider", "group": "providers", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "demo": "messaging\/delete-provider.md", @@ -21247,7 +21264,7 @@ "x-appwrite": { "method": "listProviderLogs", "group": "providers", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "demo": "messaging\/list-provider-logs.md", @@ -21335,7 +21352,7 @@ "x-appwrite": { "method": "listSubscriberLogs", "group": "subscribers", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "demo": "messaging\/list-subscriber-logs.md", @@ -21423,7 +21440,7 @@ "x-appwrite": { "method": "listTopics", "group": "topics", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "demo": "messaging\/list-topics.md", @@ -21510,7 +21527,7 @@ "x-appwrite": { "method": "createTopic", "group": "topics", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "demo": "messaging\/create-topic.md", @@ -21595,7 +21612,7 @@ "x-appwrite": { "method": "getTopic", "group": "topics", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "demo": "messaging\/get-topic.md", @@ -21657,7 +21674,7 @@ "x-appwrite": { "method": "updateTopic", "group": "topics", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "demo": "messaging\/update-topic.md", @@ -21738,7 +21755,7 @@ "x-appwrite": { "method": "deleteTopic", "group": "topics", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "demo": "messaging\/delete-topic.md", @@ -21802,7 +21819,7 @@ "x-appwrite": { "method": "listTopicLogs", "group": "topics", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "demo": "messaging\/list-topic-logs.md", @@ -21890,7 +21907,7 @@ "x-appwrite": { "method": "listSubscribers", "group": "subscribers", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "demo": "messaging\/list-subscribers.md", @@ -21987,7 +22004,7 @@ "x-appwrite": { "method": "createSubscriber", "group": "subscribers", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "demo": "messaging\/create-subscriber.md", @@ -22080,7 +22097,7 @@ "x-appwrite": { "method": "getSubscriber", "group": "subscribers", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "demo": "messaging\/get-subscriber.md", @@ -22145,7 +22162,7 @@ "x-appwrite": { "method": "deleteSubscriber", "group": "subscribers", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "demo": "messaging\/delete-subscriber.md", @@ -22223,7 +22240,7 @@ "x-appwrite": { "method": "list", "group": "sites", - "weight": 485, + "weight": 486, "cookies": false, "type": "", "demo": "sites\/list.md", @@ -22309,7 +22326,7 @@ "x-appwrite": { "method": "create", "group": "sites", - "weight": 483, + "weight": 484, "cookies": false, "type": "", "demo": "sites\/create.md", @@ -22563,7 +22580,7 @@ "x-appwrite": { "method": "listFrameworks", "group": "frameworks", - "weight": 488, + "weight": 489, "cookies": false, "type": "", "demo": "sites\/list-frameworks.md", @@ -22614,7 +22631,7 @@ "x-appwrite": { "method": "listSpecifications", "group": "frameworks", - "weight": 511, + "weight": 512, "cookies": false, "type": "", "demo": "sites\/list-specifications.md", @@ -22665,7 +22682,7 @@ "x-appwrite": { "method": "get", "group": "sites", - "weight": 484, + "weight": 485, "cookies": false, "type": "", "demo": "sites\/get.md", @@ -22726,7 +22743,7 @@ "x-appwrite": { "method": "update", "group": "sites", - "weight": 486, + "weight": 487, "cookies": false, "type": "", "demo": "sites\/update.md", @@ -22976,7 +22993,7 @@ "x-appwrite": { "method": "delete", "group": "sites", - "weight": 487, + "weight": 488, "cookies": false, "type": "", "demo": "sites\/delete.md", @@ -23039,7 +23056,7 @@ "x-appwrite": { "method": "updateSiteDeployment", "group": "sites", - "weight": 494, + "weight": 495, "cookies": false, "type": "", "demo": "sites\/update-site-deployment.md", @@ -23121,7 +23138,7 @@ "x-appwrite": { "method": "listDeployments", "group": "deployments", - "weight": 493, + "weight": 494, "cookies": false, "type": "", "demo": "sites\/list-deployments.md", @@ -23217,7 +23234,7 @@ "x-appwrite": { "method": "createDeployment", "group": "deployments", - "weight": 489, + "weight": 490, "cookies": false, "type": "upload", "demo": "sites\/create-deployment.md", @@ -23323,7 +23340,7 @@ "x-appwrite": { "method": "createDuplicateDeployment", "group": "deployments", - "weight": 497, + "weight": 498, "cookies": false, "type": "", "demo": "sites\/create-duplicate-deployment.md", @@ -23405,7 +23422,7 @@ "x-appwrite": { "method": "createTemplateDeployment", "group": "deployments", - "weight": 490, + "weight": 491, "cookies": false, "type": "", "demo": "sites\/create-template-deployment.md", @@ -23523,7 +23540,7 @@ "x-appwrite": { "method": "createVcsDeployment", "group": "deployments", - "weight": 491, + "weight": 492, "cookies": false, "type": "", "demo": "sites\/create-vcs-deployment.md", @@ -23623,7 +23640,7 @@ "x-appwrite": { "method": "getDeployment", "group": "deployments", - "weight": 492, + "weight": 493, "cookies": false, "type": "", "demo": "sites\/get-deployment.md", @@ -23687,7 +23704,7 @@ "x-appwrite": { "method": "deleteDeployment", "group": "deployments", - "weight": 495, + "weight": 496, "cookies": false, "type": "", "demo": "sites\/delete-deployment.md", @@ -23753,7 +23770,7 @@ "x-appwrite": { "method": "getDeploymentDownload", "group": "deployments", - "weight": 496, + "weight": 497, "cookies": false, "type": "location", "demo": "sites\/get-deployment-download.md", @@ -23845,7 +23862,7 @@ "x-appwrite": { "method": "updateDeploymentStatus", "group": "deployments", - "weight": 498, + "weight": 499, "cookies": false, "type": "", "demo": "sites\/update-deployment-status.md", @@ -23918,7 +23935,7 @@ "x-appwrite": { "method": "listLogs", "group": "logs", - "weight": 500, + "weight": 501, "cookies": false, "type": "", "demo": "sites\/list-logs.md", @@ -24005,7 +24022,7 @@ "x-appwrite": { "method": "getLog", "group": "logs", - "weight": 499, + "weight": 500, "cookies": false, "type": "", "demo": "sites\/get-log.md", @@ -24069,7 +24086,7 @@ "x-appwrite": { "method": "deleteLog", "group": "logs", - "weight": 501, + "weight": 502, "cookies": false, "type": "", "demo": "sites\/delete-log.md", @@ -24142,7 +24159,7 @@ "x-appwrite": { "method": "listVariables", "group": "variables", - "weight": 504, + "weight": 505, "cookies": false, "type": "", "demo": "sites\/list-variables.md", @@ -24203,7 +24220,7 @@ "x-appwrite": { "method": "createVariable", "group": "variables", - "weight": 502, + "weight": 503, "cookies": false, "type": "", "demo": "sites\/create-variable.md", @@ -24296,7 +24313,7 @@ "x-appwrite": { "method": "getVariable", "group": "variables", - "weight": 503, + "weight": 504, "cookies": false, "type": "", "demo": "sites\/get-variable.md", @@ -24367,7 +24384,7 @@ "x-appwrite": { "method": "updateVariable", "group": "variables", - "weight": 505, + "weight": 506, "cookies": false, "type": "", "demo": "sites\/update-variable.md", @@ -24462,7 +24479,7 @@ "x-appwrite": { "method": "deleteVariable", "group": "variables", - "weight": 506, + "weight": 507, "cookies": false, "type": "", "demo": "sites\/delete-variable.md", @@ -25866,7 +25883,7 @@ "x-appwrite": { "method": "list", "group": "tablesdb", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "demo": "tablesdb\/list.md", @@ -25953,7 +25970,7 @@ "x-appwrite": { "method": "create", "group": "tablesdb", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "demo": "tablesdb\/create.md", @@ -26035,7 +26052,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 445, + "weight": 446, "cookies": false, "type": "", "demo": "tablesdb\/list-transactions.md", @@ -26107,7 +26124,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 441, + "weight": 442, "cookies": false, "type": "", "demo": "tablesdb\/create-transaction.md", @@ -26182,7 +26199,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 442, + "weight": 443, "cookies": false, "type": "", "demo": "tablesdb\/get-transaction.md", @@ -26251,7 +26268,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 443, + "weight": 444, "cookies": false, "type": "", "demo": "tablesdb\/update-transaction.md", @@ -26334,7 +26351,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 444, + "weight": 445, "cookies": false, "type": "", "demo": "tablesdb\/delete-transaction.md", @@ -26405,7 +26422,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 446, + "weight": 447, "cookies": false, "type": "", "demo": "tablesdb\/create-operations.md", @@ -26495,7 +26512,7 @@ "x-appwrite": { "method": "get", "group": "tablesdb", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "demo": "tablesdb\/get.md", @@ -26557,7 +26574,7 @@ "x-appwrite": { "method": "update", "group": "tablesdb", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "demo": "tablesdb\/update.md", @@ -26636,7 +26653,7 @@ "x-appwrite": { "method": "delete", "group": "tablesdb", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "demo": "tablesdb\/delete.md", @@ -26700,7 +26717,7 @@ "x-appwrite": { "method": "listTables", "group": "tables", - "weight": 393, + "weight": 394, "cookies": false, "type": "", "demo": "tablesdb\/list-tables.md", @@ -26800,7 +26817,7 @@ "x-appwrite": { "method": "createTable", "group": "tables", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "demo": "tablesdb\/create-table.md", @@ -26927,7 +26944,7 @@ "x-appwrite": { "method": "getTable", "group": "tables", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "demo": "tablesdb\/get-table.md", @@ -27002,7 +27019,7 @@ "x-appwrite": { "method": "updateTable", "group": "tables", - "weight": 391, + "weight": 392, "cookies": false, "type": "", "demo": "tablesdb\/update-table.md", @@ -27108,7 +27125,7 @@ "x-appwrite": { "method": "deleteTable", "group": "tables", - "weight": 392, + "weight": 393, "cookies": false, "type": "", "demo": "tablesdb\/delete-table.md", @@ -27185,7 +27202,7 @@ "x-appwrite": { "method": "listColumns", "group": "columns", - "weight": 398, + "weight": 399, "cookies": false, "type": "", "demo": "tablesdb\/list-columns.md", @@ -27286,7 +27303,7 @@ "x-appwrite": { "method": "createBooleanColumn", "group": "columns", - "weight": 399, + "weight": 400, "cookies": false, "type": "", "demo": "tablesdb\/create-boolean-column.md", @@ -27399,7 +27416,7 @@ "x-appwrite": { "method": "updateBooleanColumn", "group": "columns", - "weight": 400, + "weight": 401, "cookies": false, "type": "", "demo": "tablesdb\/update-boolean-column.md", @@ -27517,7 +27534,7 @@ "x-appwrite": { "method": "createDatetimeColumn", "group": "columns", - "weight": 401, + "weight": 402, "cookies": false, "type": "", "demo": "tablesdb\/create-datetime-column.md", @@ -27630,7 +27647,7 @@ "x-appwrite": { "method": "updateDatetimeColumn", "group": "columns", - "weight": 402, + "weight": 403, "cookies": false, "type": "", "demo": "tablesdb\/update-datetime-column.md", @@ -27748,7 +27765,7 @@ "x-appwrite": { "method": "createEmailColumn", "group": "columns", - "weight": 403, + "weight": 404, "cookies": false, "type": "", "demo": "tablesdb\/create-email-column.md", @@ -27861,7 +27878,7 @@ "x-appwrite": { "method": "updateEmailColumn", "group": "columns", - "weight": 404, + "weight": 405, "cookies": false, "type": "", "demo": "tablesdb\/update-email-column.md", @@ -27979,7 +27996,7 @@ "x-appwrite": { "method": "createEnumColumn", "group": "columns", - "weight": 405, + "weight": 406, "cookies": false, "type": "", "demo": "tablesdb\/create-enum-column.md", @@ -28101,7 +28118,7 @@ "x-appwrite": { "method": "updateEnumColumn", "group": "columns", - "weight": 406, + "weight": 407, "cookies": false, "type": "", "demo": "tablesdb\/update-enum-column.md", @@ -28228,7 +28245,7 @@ "x-appwrite": { "method": "createFloatColumn", "group": "columns", - "weight": 407, + "weight": 408, "cookies": false, "type": "", "demo": "tablesdb\/create-float-column.md", @@ -28353,7 +28370,7 @@ "x-appwrite": { "method": "updateFloatColumn", "group": "columns", - "weight": 408, + "weight": 409, "cookies": false, "type": "", "demo": "tablesdb\/update-float-column.md", @@ -28483,7 +28500,7 @@ "x-appwrite": { "method": "createIntegerColumn", "group": "columns", - "weight": 409, + "weight": 410, "cookies": false, "type": "", "demo": "tablesdb\/create-integer-column.md", @@ -28608,7 +28625,7 @@ "x-appwrite": { "method": "updateIntegerColumn", "group": "columns", - "weight": 410, + "weight": 411, "cookies": false, "type": "", "demo": "tablesdb\/update-integer-column.md", @@ -28738,7 +28755,7 @@ "x-appwrite": { "method": "createIpColumn", "group": "columns", - "weight": 411, + "weight": 412, "cookies": false, "type": "", "demo": "tablesdb\/create-ip-column.md", @@ -28851,7 +28868,7 @@ "x-appwrite": { "method": "updateIpColumn", "group": "columns", - "weight": 412, + "weight": 413, "cookies": false, "type": "", "demo": "tablesdb\/update-ip-column.md", @@ -28969,7 +28986,7 @@ "x-appwrite": { "method": "createLineColumn", "group": "columns", - "weight": 413, + "weight": 414, "cookies": false, "type": "", "demo": "tablesdb\/create-line-column.md", @@ -29084,7 +29101,7 @@ "x-appwrite": { "method": "updateLineColumn", "group": "columns", - "weight": 414, + "weight": 415, "cookies": false, "type": "", "demo": "tablesdb\/update-line-column.md", @@ -29208,7 +29225,7 @@ "x-appwrite": { "method": "createPointColumn", "group": "columns", - "weight": 415, + "weight": 416, "cookies": false, "type": "", "demo": "tablesdb\/create-point-column.md", @@ -29323,7 +29340,7 @@ "x-appwrite": { "method": "updatePointColumn", "group": "columns", - "weight": 416, + "weight": 417, "cookies": false, "type": "", "demo": "tablesdb\/update-point-column.md", @@ -29447,7 +29464,7 @@ "x-appwrite": { "method": "createPolygonColumn", "group": "columns", - "weight": 417, + "weight": 418, "cookies": false, "type": "", "demo": "tablesdb\/create-polygon-column.md", @@ -29562,7 +29579,7 @@ "x-appwrite": { "method": "updatePolygonColumn", "group": "columns", - "weight": 418, + "weight": 419, "cookies": false, "type": "", "demo": "tablesdb\/update-polygon-column.md", @@ -29686,7 +29703,7 @@ "x-appwrite": { "method": "createRelationshipColumn", "group": "columns", - "weight": 419, + "weight": 420, "cookies": false, "type": "", "demo": "tablesdb\/create-relationship-column.md", @@ -29825,7 +29842,7 @@ "x-appwrite": { "method": "createStringColumn", "group": "columns", - "weight": 421, + "weight": 422, "cookies": false, "type": "", "demo": "tablesdb\/create-string-column.md", @@ -29949,7 +29966,7 @@ "x-appwrite": { "method": "updateStringColumn", "group": "columns", - "weight": 422, + "weight": 423, "cookies": false, "type": "", "demo": "tablesdb\/update-string-column.md", @@ -30073,7 +30090,7 @@ "x-appwrite": { "method": "createUrlColumn", "group": "columns", - "weight": 423, + "weight": 424, "cookies": false, "type": "", "demo": "tablesdb\/create-url-column.md", @@ -30186,7 +30203,7 @@ "x-appwrite": { "method": "updateUrlColumn", "group": "columns", - "weight": 424, + "weight": 425, "cookies": false, "type": "", "demo": "tablesdb\/update-url-column.md", @@ -30335,7 +30352,7 @@ "x-appwrite": { "method": "getColumn", "group": "columns", - "weight": 396, + "weight": 397, "cookies": false, "type": "", "demo": "tablesdb\/get-column.md", @@ -30412,7 +30429,7 @@ "x-appwrite": { "method": "deleteColumn", "group": "columns", - "weight": 397, + "weight": 398, "cookies": false, "type": "", "demo": "tablesdb\/delete-column.md", @@ -30498,7 +30515,7 @@ "x-appwrite": { "method": "updateRelationshipColumn", "group": "columns", - "weight": 420, + "weight": 421, "cookies": false, "type": "", "demo": "tablesdb\/update-relationship-column.md", @@ -30614,7 +30631,7 @@ "x-appwrite": { "method": "listIndexes", "group": "indexes", - "weight": 428, + "weight": 429, "cookies": false, "type": "", "demo": "tablesdb\/list-indexes.md", @@ -30713,7 +30730,7 @@ "x-appwrite": { "method": "createIndex", "group": "indexes", - "weight": 425, + "weight": 426, "cookies": false, "type": "", "demo": "tablesdb\/create-index.md", @@ -30854,7 +30871,7 @@ "x-appwrite": { "method": "getIndex", "group": "indexes", - "weight": 426, + "weight": 427, "cookies": false, "type": "", "demo": "tablesdb\/get-index.md", @@ -30931,7 +30948,7 @@ "x-appwrite": { "method": "deleteIndex", "group": "indexes", - "weight": 427, + "weight": 428, "cookies": false, "type": "", "demo": "tablesdb\/delete-index.md", @@ -31017,7 +31034,7 @@ "x-appwrite": { "method": "listRows", "group": "rows", - "weight": 437, + "weight": 438, "cookies": false, "type": "", "demo": "tablesdb\/list-rows.md", @@ -31130,7 +31147,7 @@ "x-appwrite": { "method": "createRow", "group": "rows", - "weight": 429, + "weight": 430, "cookies": false, "type": "", "demo": "tablesdb\/create-row.md", @@ -31316,7 +31333,7 @@ "x-appwrite": { "method": "upsertRows", "group": "rows", - "weight": 434, + "weight": 435, "cookies": false, "type": "", "demo": "tablesdb\/upsert-rows.md", @@ -31450,7 +31467,7 @@ "x-appwrite": { "method": "updateRows", "group": "rows", - "weight": 432, + "weight": 433, "cookies": false, "type": "", "demo": "tablesdb\/update-rows.md", @@ -31555,7 +31572,7 @@ "x-appwrite": { "method": "deleteRows", "group": "rows", - "weight": 436, + "weight": 437, "cookies": false, "type": "", "demo": "tablesdb\/delete-rows.md", @@ -31657,7 +31674,7 @@ "x-appwrite": { "method": "getRow", "group": "rows", - "weight": 430, + "weight": 431, "cookies": false, "type": "", "demo": "tablesdb\/get-row.md", @@ -31769,7 +31786,7 @@ "x-appwrite": { "method": "upsertRow", "group": "rows", - "weight": 433, + "weight": 434, "cookies": false, "type": "", "demo": "tablesdb\/upsert-row.md", @@ -31922,7 +31939,7 @@ "x-appwrite": { "method": "updateRow", "group": "rows", - "weight": 431, + "weight": 432, "cookies": false, "type": "", "demo": "tablesdb\/update-row.md", @@ -32035,7 +32052,7 @@ "x-appwrite": { "method": "deleteRow", "group": "rows", - "weight": 435, + "weight": 436, "cookies": false, "type": "", "demo": "tablesdb\/delete-row.md", @@ -32143,7 +32160,7 @@ "x-appwrite": { "method": "decrementRowColumn", "group": "rows", - "weight": 440, + "weight": 441, "cookies": false, "type": "", "demo": "tablesdb\/decrement-row-column.md", @@ -32271,7 +32288,7 @@ "x-appwrite": { "method": "incrementRowColumn", "group": "rows", - "weight": 439, + "weight": 440, "cookies": false, "type": "", "demo": "tablesdb\/increment-row-column.md", @@ -33516,7 +33533,7 @@ "x-appwrite": { "method": "list", "group": "files", - "weight": 523, + "weight": 524, "cookies": false, "type": "", "demo": "tokens\/list.md", @@ -33611,7 +33628,7 @@ "x-appwrite": { "method": "createFileToken", "group": "files", - "weight": 521, + "weight": 522, "cookies": false, "type": "", "demo": "tokens\/create-file-token.md", @@ -33701,7 +33718,7 @@ "x-appwrite": { "method": "get", "group": "tokens", - "weight": 522, + "weight": 523, "cookies": false, "type": "", "demo": "tokens\/get.md", @@ -33762,7 +33779,7 @@ "x-appwrite": { "method": "update", "group": "tokens", - "weight": 524, + "weight": 525, "cookies": false, "type": "", "demo": "tokens\/update.md", @@ -33833,7 +33850,7 @@ "x-appwrite": { "method": "delete", "group": "tokens", - "weight": 525, + "weight": 526, "cookies": false, "type": "", "demo": "tokens\/delete.md", diff --git a/app/config/specs/swagger2-1.8.x-console.json b/app/config/specs/swagger2-1.8.x-console.json index c6565fe46c..36e54a5c4d 100644 --- a/app/config/specs/swagger2-1.8.x-console.json +++ b/app/config/specs/swagger2-1.8.x-console.json @@ -7393,7 +7393,7 @@ }, "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.", + "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": { diff --git a/app/config/specs/swagger2-1.8.x-server.json b/app/config/specs/swagger2-1.8.x-server.json index 090a44e742..5ce8c4b74c 100644 --- a/app/config/specs/swagger2-1.8.x-server.json +++ b/app/config/specs/swagger2-1.8.x-server.json @@ -6857,7 +6857,7 @@ }, "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.", + "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": { diff --git a/app/config/specs/swagger2-latest-client.json b/app/config/specs/swagger2-latest-client.json index 3abbc9cde5..36725bc0d7 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -486,6 +486,23 @@ "Session": [], "JWT": [] } + ], + "parameters": [ + { + "name": "payload", + "in": "body", + "schema": { + "type": "object", + "properties": { + "duration": { + "type": "integer", + "description": "Time in seconds before JWT expires. Default duration is 900 seconds, and maximum is 3600 seconds.", + "default": 900, + "x-example": 0 + } + } + } + } ] } }, @@ -591,7 +608,7 @@ "x-appwrite": { "method": "updateMFA", "group": "mfa", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "demo": "account\/update-mfa.md", @@ -666,7 +683,7 @@ "x-appwrite": { "method": "createMfaAuthenticator", "group": "mfa", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "demo": "account\/create-mfa-authenticator.md", @@ -790,7 +807,7 @@ "x-appwrite": { "method": "updateMfaAuthenticator", "group": "mfa", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "demo": "account\/update-mfa-authenticator.md", @@ -931,7 +948,7 @@ "x-appwrite": { "method": "deleteMfaAuthenticator", "group": "mfa", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "demo": "account\/delete-mfa-authenticator.md", @@ -1055,7 +1072,7 @@ "x-appwrite": { "method": "createMfaChallenge", "group": "mfa", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "demo": "account\/create-mfa-challenge.md", @@ -1192,7 +1209,7 @@ "x-appwrite": { "method": "updateMfaChallenge", "group": "mfa", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "demo": "account\/update-mfa-challenge.md", @@ -1332,7 +1349,7 @@ "x-appwrite": { "method": "listMfaFactors", "group": "mfa", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "demo": "account\/list-mfa-factors.md", @@ -1433,7 +1450,7 @@ "x-appwrite": { "method": "getMfaRecoveryCodes", "group": "mfa", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "demo": "account\/get-mfa-recovery-codes.md", @@ -1534,7 +1551,7 @@ "x-appwrite": { "method": "createMfaRecoveryCodes", "group": "mfa", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "demo": "account\/create-mfa-recovery-codes.md", @@ -1635,7 +1652,7 @@ "x-appwrite": { "method": "updateMfaRecoveryCodes", "group": "mfa", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "demo": "account\/update-mfa-recovery-codes.md", @@ -2667,7 +2684,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [], @@ -3621,7 +3639,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [], @@ -5963,7 +5982,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "demo": "databases\/list-transactions.md", @@ -6030,7 +6049,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "demo": "databases\/create-transaction.md", @@ -6100,7 +6119,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "demo": "databases\/get-transaction.md", @@ -6163,7 +6182,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "demo": "databases\/update-transaction.md", @@ -6242,7 +6261,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "demo": "databases\/delete-transaction.md", @@ -6307,7 +6326,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "demo": "databases\/create-operations.md", @@ -6388,7 +6407,7 @@ "x-appwrite": { "method": "listDocuments", "group": "documents", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "demo": "databases\/list-documents.md", @@ -6492,7 +6511,7 @@ "x-appwrite": { "method": "createDocument", "group": "documents", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "demo": "databases\/create-document.md", @@ -6651,7 +6670,7 @@ "x-appwrite": { "method": "getDocument", "group": "documents", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "demo": "databases\/get-document.md", @@ -6754,7 +6773,7 @@ "x-appwrite": { "method": "upsertDocument", "group": "documents", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "demo": "databases\/upsert-document.md", @@ -6905,7 +6924,7 @@ "x-appwrite": { "method": "updateDocument", "group": "documents", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "demo": "databases\/update-document.md", @@ -7015,7 +7034,7 @@ "x-appwrite": { "method": "deleteDocument", "group": "documents", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "demo": "databases\/delete-document.md", @@ -7116,7 +7135,7 @@ "x-appwrite": { "method": "decrementDocumentAttribute", "group": "documents", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "demo": "databases\/decrement-document-attribute.md", @@ -7237,7 +7256,7 @@ "x-appwrite": { "method": "incrementDocumentAttribute", "group": "documents", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "demo": "databases\/increment-document-attribute.md", @@ -7356,7 +7375,7 @@ "x-appwrite": { "method": "listExecutions", "group": "executions", - "weight": 472, + "weight": 473, "cookies": false, "type": "", "demo": "functions\/list-executions.md", @@ -7439,7 +7458,7 @@ "x-appwrite": { "method": "createExecution", "group": "executions", - "weight": 470, + "weight": 471, "cookies": false, "type": "", "demo": "functions\/create-execution.md", @@ -7558,7 +7577,7 @@ "x-appwrite": { "method": "getExecution", "group": "executions", - "weight": 471, + "weight": 472, "cookies": false, "type": "", "demo": "functions\/get-execution.md", @@ -7630,7 +7649,7 @@ "x-appwrite": { "method": "query", "group": "graphql", - "weight": 241, + "weight": 242, "cookies": false, "type": "graphql", "demo": "graphql\/query.md", @@ -7705,7 +7724,7 @@ "x-appwrite": { "method": "mutation", "group": "graphql", - "weight": 240, + "weight": 241, "cookies": false, "type": "graphql", "demo": "graphql\/mutation.md", @@ -8204,7 +8223,7 @@ "x-appwrite": { "method": "createSubscriber", "group": "subscribers", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "demo": "messaging\/create-subscriber.md", @@ -8289,7 +8308,7 @@ "x-appwrite": { "method": "deleteSubscriber", "group": "subscribers", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "demo": "messaging\/delete-subscriber.md", @@ -9146,7 +9165,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 445, + "weight": 446, "cookies": false, "type": "", "demo": "tablesdb\/list-transactions.md", @@ -9216,7 +9235,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 441, + "weight": 442, "cookies": false, "type": "", "demo": "tablesdb\/create-transaction.md", @@ -9289,7 +9308,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 442, + "weight": 443, "cookies": false, "type": "", "demo": "tablesdb\/get-transaction.md", @@ -9355,7 +9374,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 443, + "weight": 444, "cookies": false, "type": "", "demo": "tablesdb\/update-transaction.md", @@ -9437,7 +9456,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 444, + "weight": 445, "cookies": false, "type": "", "demo": "tablesdb\/delete-transaction.md", @@ -9505,7 +9524,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 446, + "weight": 447, "cookies": false, "type": "", "demo": "tablesdb\/create-operations.md", @@ -9589,7 +9608,7 @@ "x-appwrite": { "method": "listRows", "group": "rows", - "weight": 437, + "weight": 438, "cookies": false, "type": "", "demo": "tablesdb\/list-rows.md", @@ -9692,7 +9711,7 @@ "x-appwrite": { "method": "createRow", "group": "rows", - "weight": 429, + "weight": 430, "cookies": false, "type": "", "demo": "tablesdb\/create-row.md", @@ -9846,7 +9865,7 @@ "x-appwrite": { "method": "getRow", "group": "rows", - "weight": 430, + "weight": 431, "cookies": false, "type": "", "demo": "tablesdb\/get-row.md", @@ -9948,7 +9967,7 @@ "x-appwrite": { "method": "upsertRow", "group": "rows", - "weight": 433, + "weight": 434, "cookies": false, "type": "", "demo": "tablesdb\/upsert-row.md", @@ -10094,7 +10113,7 @@ "x-appwrite": { "method": "updateRow", "group": "rows", - "weight": 431, + "weight": 432, "cookies": false, "type": "", "demo": "tablesdb\/update-row.md", @@ -10203,7 +10222,7 @@ "x-appwrite": { "method": "deleteRow", "group": "rows", - "weight": 435, + "weight": 436, "cookies": false, "type": "", "demo": "tablesdb\/delete-row.md", @@ -10303,7 +10322,7 @@ "x-appwrite": { "method": "decrementRowColumn", "group": "rows", - "weight": 440, + "weight": 441, "cookies": false, "type": "", "demo": "tablesdb\/decrement-row-column.md", @@ -10423,7 +10442,7 @@ "x-appwrite": { "method": "incrementRowColumn", "group": "rows", - "weight": 439, + "weight": 440, "cookies": false, "type": "", "demo": "tablesdb\/increment-row-column.md", diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index c6565fe46c..de579e2874 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -530,6 +530,23 @@ "Project": [], "JWT": [] } + ], + "parameters": [ + { + "name": "payload", + "in": "body", + "schema": { + "type": "object", + "properties": { + "duration": { + "type": "integer", + "description": "Time in seconds before JWT expires. Default duration is 900 seconds, and maximum is 3600 seconds.", + "default": 900, + "x-example": 0 + } + } + } + } ] } }, @@ -634,7 +651,7 @@ "x-appwrite": { "method": "updateMFA", "group": "mfa", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "demo": "account\/update-mfa.md", @@ -708,7 +725,7 @@ "x-appwrite": { "method": "createMfaAuthenticator", "group": "mfa", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "demo": "account\/create-mfa-authenticator.md", @@ -831,7 +848,7 @@ "x-appwrite": { "method": "updateMfaAuthenticator", "group": "mfa", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "demo": "account\/update-mfa-authenticator.md", @@ -971,7 +988,7 @@ "x-appwrite": { "method": "deleteMfaAuthenticator", "group": "mfa", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "demo": "account\/delete-mfa-authenticator.md", @@ -1094,7 +1111,7 @@ "x-appwrite": { "method": "createMfaChallenge", "group": "mfa", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "demo": "account\/create-mfa-challenge.md", @@ -1230,7 +1247,7 @@ "x-appwrite": { "method": "updateMfaChallenge", "group": "mfa", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "demo": "account\/update-mfa-challenge.md", @@ -1369,7 +1386,7 @@ "x-appwrite": { "method": "listMfaFactors", "group": "mfa", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "demo": "account\/list-mfa-factors.md", @@ -1469,7 +1486,7 @@ "x-appwrite": { "method": "getMfaRecoveryCodes", "group": "mfa", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "demo": "account\/get-mfa-recovery-codes.md", @@ -1569,7 +1586,7 @@ "x-appwrite": { "method": "createMfaRecoveryCodes", "group": "mfa", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "demo": "account\/create-mfa-recovery-codes.md", @@ -1669,7 +1686,7 @@ "x-appwrite": { "method": "updateMfaRecoveryCodes", "group": "mfa", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "demo": "account\/update-mfa-recovery-codes.md", @@ -2687,7 +2704,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [], @@ -3629,7 +3647,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [], @@ -5968,7 +5987,7 @@ "x-appwrite": { "method": "chat", "group": "console", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "demo": "assistant\/chat.md", @@ -6032,7 +6051,7 @@ "x-appwrite": { "method": "getResource", "group": null, - "weight": 512, + "weight": 513, "cookies": false, "type": "", "demo": "console\/get-resource.md", @@ -6103,7 +6122,7 @@ "x-appwrite": { "method": "variables", "group": "console", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "demo": "console\/variables.md", @@ -6152,7 +6171,7 @@ "x-appwrite": { "method": "list", "group": "databases", - "weight": 320, + "weight": 321, "cookies": false, "type": "", "demo": "databases\/list.md", @@ -6268,7 +6287,7 @@ "x-appwrite": { "method": "create", "group": "databases", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "demo": "databases\/create.md", @@ -6388,7 +6407,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "demo": "databases\/list-transactions.md", @@ -6455,7 +6474,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "demo": "databases\/create-transaction.md", @@ -6525,7 +6544,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "demo": "databases\/get-transaction.md", @@ -6588,7 +6607,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "demo": "databases\/update-transaction.md", @@ -6667,7 +6686,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "demo": "databases\/delete-transaction.md", @@ -6732,7 +6751,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "demo": "databases\/create-operations.md", @@ -6813,7 +6832,7 @@ "x-appwrite": { "method": "listUsage", "group": null, - "weight": 323, + "weight": 324, "cookies": false, "type": "", "demo": "databases\/list-usage.md", @@ -6915,7 +6934,7 @@ "x-appwrite": { "method": "get", "group": "databases", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "demo": "databases\/get.md", @@ -7009,7 +7028,7 @@ "x-appwrite": { "method": "update", "group": "databases", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "demo": "databases\/update.md", @@ -7125,7 +7144,7 @@ "x-appwrite": { "method": "delete", "group": "databases", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "demo": "databases\/delete.md", @@ -7218,7 +7237,7 @@ "x-appwrite": { "method": "listCollections", "group": "collections", - "weight": 328, + "weight": 329, "cookies": false, "type": "", "demo": "databases\/list-collections.md", @@ -7313,7 +7332,7 @@ "x-appwrite": { "method": "createCollection", "group": "collections", - "weight": 324, + "weight": 325, "cookies": false, "type": "", "demo": "databases\/create-collection.md", @@ -7393,7 +7412,7 @@ }, "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.", + "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": { @@ -7443,7 +7462,7 @@ "x-appwrite": { "method": "getCollection", "group": "collections", - "weight": 325, + "weight": 326, "cookies": false, "type": "", "demo": "databases\/get-collection.md", @@ -7516,7 +7535,7 @@ "x-appwrite": { "method": "updateCollection", "group": "collections", - "weight": 326, + "weight": 327, "cookies": false, "type": "", "demo": "databases\/update-collection.md", @@ -7624,7 +7643,7 @@ "x-appwrite": { "method": "deleteCollection", "group": "collections", - "weight": 327, + "weight": 328, "cookies": false, "type": "", "demo": "databases\/delete-collection.md", @@ -7697,7 +7716,7 @@ "x-appwrite": { "method": "listAttributes", "group": "attributes", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "demo": "databases\/list-attributes.md", @@ -7793,7 +7812,7 @@ "x-appwrite": { "method": "createBooleanAttribute", "group": "attributes", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "demo": "databases\/create-boolean-attribute.md", @@ -7906,7 +7925,7 @@ "x-appwrite": { "method": "updateBooleanAttribute", "group": "attributes", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "demo": "databases\/update-boolean-attribute.md", @@ -8021,7 +8040,7 @@ "x-appwrite": { "method": "createDatetimeAttribute", "group": "attributes", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "demo": "databases\/create-datetime-attribute.md", @@ -8134,7 +8153,7 @@ "x-appwrite": { "method": "updateDatetimeAttribute", "group": "attributes", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "demo": "databases\/update-datetime-attribute.md", @@ -8249,7 +8268,7 @@ "x-appwrite": { "method": "createEmailAttribute", "group": "attributes", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "demo": "databases\/create-email-attribute.md", @@ -8362,7 +8381,7 @@ "x-appwrite": { "method": "updateEmailAttribute", "group": "attributes", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "demo": "databases\/update-email-attribute.md", @@ -8477,7 +8496,7 @@ "x-appwrite": { "method": "createEnumAttribute", "group": "attributes", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "demo": "databases\/create-enum-attribute.md", @@ -8600,7 +8619,7 @@ "x-appwrite": { "method": "updateEnumAttribute", "group": "attributes", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "demo": "databases\/update-enum-attribute.md", @@ -8725,7 +8744,7 @@ "x-appwrite": { "method": "createFloatAttribute", "group": "attributes", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "demo": "databases\/create-float-attribute.md", @@ -8852,7 +8871,7 @@ "x-appwrite": { "method": "updateFloatAttribute", "group": "attributes", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "demo": "databases\/update-float-attribute.md", @@ -8981,7 +9000,7 @@ "x-appwrite": { "method": "createIntegerAttribute", "group": "attributes", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "demo": "databases\/create-integer-attribute.md", @@ -9108,7 +9127,7 @@ "x-appwrite": { "method": "updateIntegerAttribute", "group": "attributes", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "demo": "databases\/update-integer-attribute.md", @@ -9237,7 +9256,7 @@ "x-appwrite": { "method": "createIpAttribute", "group": "attributes", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "demo": "databases\/create-ip-attribute.md", @@ -9350,7 +9369,7 @@ "x-appwrite": { "method": "updateIpAttribute", "group": "attributes", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "demo": "databases\/update-ip-attribute.md", @@ -9465,7 +9484,7 @@ "x-appwrite": { "method": "createLineAttribute", "group": "attributes", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "demo": "databases\/create-line-attribute.md", @@ -9572,7 +9591,7 @@ "x-appwrite": { "method": "updateLineAttribute", "group": "attributes", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "demo": "databases\/update-line-attribute.md", @@ -9686,7 +9705,7 @@ "x-appwrite": { "method": "createPointAttribute", "group": "attributes", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "demo": "databases\/create-point-attribute.md", @@ -9793,7 +9812,7 @@ "x-appwrite": { "method": "updatePointAttribute", "group": "attributes", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "demo": "databases\/update-point-attribute.md", @@ -9907,7 +9926,7 @@ "x-appwrite": { "method": "createPolygonAttribute", "group": "attributes", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "demo": "databases\/create-polygon-attribute.md", @@ -10014,7 +10033,7 @@ "x-appwrite": { "method": "updatePolygonAttribute", "group": "attributes", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "demo": "databases\/update-polygon-attribute.md", @@ -10128,7 +10147,7 @@ "x-appwrite": { "method": "createRelationshipAttribute", "group": "attributes", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "demo": "databases\/create-relationship-attribute.md", @@ -10269,7 +10288,7 @@ "x-appwrite": { "method": "createStringAttribute", "group": "attributes", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "demo": "databases\/create-string-attribute.md", @@ -10395,7 +10414,7 @@ "x-appwrite": { "method": "updateStringAttribute", "group": "attributes", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "demo": "databases\/update-string-attribute.md", @@ -10517,7 +10536,7 @@ "x-appwrite": { "method": "createUrlAttribute", "group": "attributes", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "demo": "databases\/create-url-attribute.md", @@ -10630,7 +10649,7 @@ "x-appwrite": { "method": "updateUrlAttribute", "group": "attributes", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "demo": "databases\/update-url-attribute.md", @@ -10774,7 +10793,7 @@ "x-appwrite": { "method": "getAttribute", "group": "attributes", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "demo": "databases\/get-attribute.md", @@ -10849,7 +10868,7 @@ "x-appwrite": { "method": "deleteAttribute", "group": "attributes", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "demo": "databases\/delete-attribute.md", @@ -10931,7 +10950,7 @@ "x-appwrite": { "method": "updateRelationshipAttribute", "group": "attributes", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "demo": "databases\/update-relationship-attribute.md", @@ -11041,7 +11060,7 @@ "x-appwrite": { "method": "listDocuments", "group": "documents", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "demo": "databases\/list-documents.md", @@ -11145,7 +11164,7 @@ "x-appwrite": { "method": "createDocument", "group": "documents", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "demo": "databases\/create-document.md", @@ -11336,7 +11355,7 @@ "x-appwrite": { "method": "upsertDocuments", "group": "documents", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "demo": "databases\/upsert-documents.md", @@ -11471,7 +11490,7 @@ "x-appwrite": { "method": "updateDocuments", "group": "documents", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "demo": "databases\/update-documents.md", @@ -11575,7 +11594,7 @@ "x-appwrite": { "method": "deleteDocuments", "group": "documents", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "demo": "databases\/delete-documents.md", @@ -11673,7 +11692,7 @@ "x-appwrite": { "method": "getDocument", "group": "documents", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "demo": "databases\/get-document.md", @@ -11776,7 +11795,7 @@ "x-appwrite": { "method": "upsertDocument", "group": "documents", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "demo": "databases\/upsert-document.md", @@ -11927,7 +11946,7 @@ "x-appwrite": { "method": "updateDocument", "group": "documents", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "demo": "databases\/update-document.md", @@ -12037,7 +12056,7 @@ "x-appwrite": { "method": "deleteDocument", "group": "documents", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "demo": "databases\/delete-document.md", @@ -12136,7 +12155,7 @@ "x-appwrite": { "method": "listDocumentLogs", "group": "logs", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "demo": "databases\/list-document-logs.md", @@ -12229,7 +12248,7 @@ "x-appwrite": { "method": "decrementDocumentAttribute", "group": "documents", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "demo": "databases\/decrement-document-attribute.md", @@ -12350,7 +12369,7 @@ "x-appwrite": { "method": "incrementDocumentAttribute", "group": "documents", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "demo": "databases\/increment-document-attribute.md", @@ -12469,7 +12488,7 @@ "x-appwrite": { "method": "listIndexes", "group": "indexes", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "demo": "databases\/list-indexes.md", @@ -12563,7 +12582,7 @@ "x-appwrite": { "method": "createIndex", "group": "indexes", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "demo": "databases\/create-index.md", @@ -12703,7 +12722,7 @@ "x-appwrite": { "method": "getIndex", "group": "indexes", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "demo": "databases\/get-index.md", @@ -12778,7 +12797,7 @@ "x-appwrite": { "method": "deleteIndex", "group": "indexes", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "demo": "databases\/delete-index.md", @@ -12858,7 +12877,7 @@ "x-appwrite": { "method": "listCollectionLogs", "group": "collections", - "weight": 329, + "weight": 330, "cookies": false, "type": "", "demo": "databases\/list-collection-logs.md", @@ -12941,7 +12960,7 @@ "x-appwrite": { "method": "getCollectionUsage", "group": null, - "weight": 330, + "weight": 331, "cookies": false, "type": "", "demo": "databases\/get-collection-usage.md", @@ -13032,7 +13051,7 @@ "x-appwrite": { "method": "listLogs", "group": "logs", - "weight": 321, + "weight": 322, "cookies": false, "type": "", "demo": "databases\/list-logs.md", @@ -13137,7 +13156,7 @@ "x-appwrite": { "method": "getUsage", "group": null, - "weight": 322, + "weight": 323, "cookies": false, "type": "", "demo": "databases\/get-usage.md", @@ -13250,7 +13269,7 @@ "x-appwrite": { "method": "list", "group": "functions", - "weight": 456, + "weight": 457, "cookies": false, "type": "", "demo": "functions\/list.md", @@ -13332,7 +13351,7 @@ "x-appwrite": { "method": "create", "group": "functions", - "weight": 453, + "weight": 454, "cookies": false, "type": "", "demo": "functions\/create.md", @@ -13645,7 +13664,7 @@ "x-appwrite": { "method": "listRuntimes", "group": "runtimes", - "weight": 458, + "weight": 459, "cookies": false, "type": "", "demo": "functions\/list-runtimes.md", @@ -13695,7 +13714,7 @@ "x-appwrite": { "method": "listSpecifications", "group": "runtimes", - "weight": 459, + "weight": 460, "cookies": false, "type": "", "demo": "functions\/list-specifications.md", @@ -13745,7 +13764,7 @@ "x-appwrite": { "method": "listTemplates", "group": "templates", - "weight": 482, + "weight": 483, "cookies": false, "type": "", "demo": "functions\/list-templates.md", @@ -13929,7 +13948,7 @@ "x-appwrite": { "method": "getTemplate", "group": "templates", - "weight": 481, + "weight": 482, "cookies": false, "type": "", "demo": "functions\/get-template.md", @@ -13987,7 +14006,7 @@ "x-appwrite": { "method": "listUsage", "group": null, - "weight": 475, + "weight": 476, "cookies": false, "type": "", "demo": "functions\/list-usage.md", @@ -14057,7 +14076,7 @@ "x-appwrite": { "method": "get", "group": "functions", - "weight": 454, + "weight": 455, "cookies": false, "type": "", "demo": "functions\/get.md", @@ -14117,7 +14136,7 @@ "x-appwrite": { "method": "update", "group": "functions", - "weight": 455, + "weight": 456, "cookies": false, "type": "", "demo": "functions\/update.md", @@ -14426,7 +14445,7 @@ "x-appwrite": { "method": "delete", "group": "functions", - "weight": 457, + "weight": 458, "cookies": false, "type": "", "demo": "functions\/delete.md", @@ -14488,7 +14507,7 @@ "x-appwrite": { "method": "updateFunctionDeployment", "group": "functions", - "weight": 462, + "weight": 463, "cookies": false, "type": "", "demo": "functions\/update-function-deployment.md", @@ -14566,7 +14585,7 @@ "x-appwrite": { "method": "listDeployments", "group": "deployments", - "weight": 463, + "weight": 464, "cookies": false, "type": "", "demo": "functions\/list-deployments.md", @@ -14656,7 +14675,7 @@ "x-appwrite": { "method": "createDeployment", "group": "deployments", - "weight": 460, + "weight": 461, "cookies": false, "type": "upload", "demo": "functions\/create-deployment.md", @@ -14749,7 +14768,7 @@ "x-appwrite": { "method": "createDuplicateDeployment", "group": "deployments", - "weight": 468, + "weight": 469, "cookies": false, "type": "", "demo": "functions\/create-duplicate-deployment.md", @@ -14835,7 +14854,7 @@ "x-appwrite": { "method": "createTemplateDeployment", "group": "deployments", - "weight": 465, + "weight": 466, "cookies": false, "type": "", "demo": "functions\/create-template-deployment.md", @@ -14956,7 +14975,7 @@ "x-appwrite": { "method": "createVcsDeployment", "group": "deployments", - "weight": 466, + "weight": 467, "cookies": false, "type": "", "demo": "functions\/create-vcs-deployment.md", @@ -15053,7 +15072,7 @@ "x-appwrite": { "method": "getDeployment", "group": "deployments", - "weight": 461, + "weight": 462, "cookies": false, "type": "", "demo": "functions\/get-deployment.md", @@ -15116,7 +15135,7 @@ "x-appwrite": { "method": "deleteDeployment", "group": "deployments", - "weight": 464, + "weight": 465, "cookies": false, "type": "", "demo": "functions\/delete-deployment.md", @@ -15184,7 +15203,7 @@ "x-appwrite": { "method": "getDeploymentDownload", "group": "deployments", - "weight": 467, + "weight": 468, "cookies": false, "type": "location", "demo": "functions\/get-deployment-download.md", @@ -15270,7 +15289,7 @@ "x-appwrite": { "method": "updateDeploymentStatus", "group": "deployments", - "weight": 469, + "weight": 470, "cookies": false, "type": "", "demo": "functions\/update-deployment-status.md", @@ -15338,7 +15357,7 @@ "x-appwrite": { "method": "listExecutions", "group": "executions", - "weight": 472, + "weight": 473, "cookies": false, "type": "", "demo": "functions\/list-executions.md", @@ -15421,7 +15440,7 @@ "x-appwrite": { "method": "createExecution", "group": "executions", - "weight": 470, + "weight": 471, "cookies": false, "type": "", "demo": "functions\/create-execution.md", @@ -15540,7 +15559,7 @@ "x-appwrite": { "method": "getExecution", "group": "executions", - "weight": 471, + "weight": 472, "cookies": false, "type": "", "demo": "functions\/get-execution.md", @@ -15605,7 +15624,7 @@ "x-appwrite": { "method": "deleteExecution", "group": "executions", - "weight": 473, + "weight": 474, "cookies": false, "type": "", "demo": "functions\/delete-execution.md", @@ -15673,7 +15692,7 @@ "x-appwrite": { "method": "getUsage", "group": null, - "weight": 474, + "weight": 475, "cookies": false, "type": "", "demo": "functions\/get-usage.md", @@ -15751,7 +15770,7 @@ "x-appwrite": { "method": "listVariables", "group": "variables", - "weight": 478, + "weight": 479, "cookies": false, "type": "", "demo": "functions\/list-variables.md", @@ -15811,7 +15830,7 @@ "x-appwrite": { "method": "createVariable", "group": "variables", - "weight": 476, + "weight": 477, "cookies": false, "type": "", "demo": "functions\/create-variable.md", @@ -15902,7 +15921,7 @@ "x-appwrite": { "method": "getVariable", "group": "variables", - "weight": 477, + "weight": 478, "cookies": false, "type": "", "demo": "functions\/get-variable.md", @@ -15970,7 +15989,7 @@ "x-appwrite": { "method": "updateVariable", "group": "variables", - "weight": 479, + "weight": 480, "cookies": false, "type": "", "demo": "functions\/update-variable.md", @@ -16065,7 +16084,7 @@ "x-appwrite": { "method": "deleteVariable", "group": "variables", - "weight": 480, + "weight": 481, "cookies": false, "type": "", "demo": "functions\/delete-variable.md", @@ -16135,7 +16154,7 @@ "x-appwrite": { "method": "query", "group": "graphql", - "weight": 241, + "weight": 242, "cookies": false, "type": "graphql", "demo": "graphql\/query.md", @@ -16210,7 +16229,7 @@ "x-appwrite": { "method": "mutation", "group": "graphql", - "weight": 240, + "weight": 241, "cookies": false, "type": "graphql", "demo": "graphql\/mutation.md", @@ -18014,7 +18033,7 @@ "x-appwrite": { "method": "listMessages", "group": "messages", - "weight": 298, + "weight": 299, "cookies": false, "type": "", "demo": "messaging\/list-messages.md", @@ -18099,7 +18118,7 @@ "x-appwrite": { "method": "createEmail", "group": "messages", - "weight": 295, + "weight": 296, "cookies": false, "type": "", "demo": "messaging\/create-email.md", @@ -18259,7 +18278,7 @@ "x-appwrite": { "method": "updateEmail", "group": "messages", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "demo": "messaging\/update-email.md", @@ -18426,7 +18445,7 @@ "x-appwrite": { "method": "createPush", "group": "messages", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "demo": "messaging\/create-push.md", @@ -18624,7 +18643,7 @@ "x-appwrite": { "method": "updatePush", "group": "messages", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "demo": "messaging\/update-push.md", @@ -18837,7 +18856,7 @@ "x-appwrite": { "method": "createSms", "group": "messages", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "demo": "messaging\/create-sms.md", @@ -19027,7 +19046,7 @@ "x-appwrite": { "method": "updateSms", "group": "messages", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "demo": "messaging\/update-sms.md", @@ -19216,7 +19235,7 @@ "x-appwrite": { "method": "getMessage", "group": "messages", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "demo": "messaging\/get-message.md", @@ -19272,7 +19291,7 @@ "x-appwrite": { "method": "delete", "group": "messages", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "demo": "messaging\/delete.md", @@ -19333,7 +19352,7 @@ "x-appwrite": { "method": "listMessageLogs", "group": "logs", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "demo": "messaging\/list-message-logs.md", @@ -19415,7 +19434,7 @@ "x-appwrite": { "method": "listTargets", "group": "messages", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "demo": "messaging\/list-targets.md", @@ -19497,7 +19516,7 @@ "x-appwrite": { "method": "listProviders", "group": "providers", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "demo": "messaging\/list-providers.md", @@ -19582,7 +19601,7 @@ "x-appwrite": { "method": "createApnsProvider", "group": "providers", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "demo": "messaging\/create-apns-provider.md", @@ -19771,7 +19790,7 @@ "x-appwrite": { "method": "updateApnsProvider", "group": "providers", - "weight": 282, + "weight": 283, "cookies": false, "type": "", "demo": "messaging\/update-apns-provider.md", @@ -19957,7 +19976,7 @@ "x-appwrite": { "method": "createFcmProvider", "group": "providers", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "demo": "messaging\/create-fcm-provider.md", @@ -20115,7 +20134,7 @@ "x-appwrite": { "method": "updateFcmProvider", "group": "providers", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "demo": "messaging\/update-fcm-provider.md", @@ -20269,7 +20288,7 @@ "x-appwrite": { "method": "createMailgunProvider", "group": "providers", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "demo": "messaging\/create-mailgun-provider.md", @@ -20399,7 +20418,7 @@ "x-appwrite": { "method": "updateMailgunProvider", "group": "providers", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "demo": "messaging\/update-mailgun-provider.md", @@ -20527,7 +20546,7 @@ "x-appwrite": { "method": "createMsg91Provider", "group": "providers", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "demo": "messaging\/create-msg-91-provider.md", @@ -20632,7 +20651,7 @@ "x-appwrite": { "method": "updateMsg91Provider", "group": "providers", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "demo": "messaging\/update-msg-91-provider.md", @@ -20735,7 +20754,7 @@ "x-appwrite": { "method": "createResendProvider", "group": "providers", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "demo": "messaging\/create-resend-provider.md", @@ -20852,7 +20871,7 @@ "x-appwrite": { "method": "updateResendProvider", "group": "providers", - "weight": 274, + "weight": 275, "cookies": false, "type": "", "demo": "messaging\/update-resend-provider.md", @@ -20967,7 +20986,7 @@ "x-appwrite": { "method": "createSendgridProvider", "group": "providers", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "demo": "messaging\/create-sendgrid-provider.md", @@ -21084,7 +21103,7 @@ "x-appwrite": { "method": "updateSendgridProvider", "group": "providers", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "demo": "messaging\/update-sendgrid-provider.md", @@ -21199,7 +21218,7 @@ "x-appwrite": { "method": "createSmtpProvider", "group": "providers", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "demo": "messaging\/create-smtp-provider.md", @@ -21446,7 +21465,7 @@ "x-appwrite": { "method": "updateSmtpProvider", "group": "providers", - "weight": 275, + "weight": 276, "cookies": false, "type": "", "demo": "messaging\/update-smtp-provider.md", @@ -21688,7 +21707,7 @@ "x-appwrite": { "method": "createTelesignProvider", "group": "providers", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "demo": "messaging\/create-telesign-provider.md", @@ -21793,7 +21812,7 @@ "x-appwrite": { "method": "updateTelesignProvider", "group": "providers", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "demo": "messaging\/update-telesign-provider.md", @@ -21896,7 +21915,7 @@ "x-appwrite": { "method": "createTextmagicProvider", "group": "providers", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "demo": "messaging\/create-textmagic-provider.md", @@ -22001,7 +22020,7 @@ "x-appwrite": { "method": "updateTextmagicProvider", "group": "providers", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "demo": "messaging\/update-textmagic-provider.md", @@ -22104,7 +22123,7 @@ "x-appwrite": { "method": "createTwilioProvider", "group": "providers", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "demo": "messaging\/create-twilio-provider.md", @@ -22209,7 +22228,7 @@ "x-appwrite": { "method": "updateTwilioProvider", "group": "providers", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "demo": "messaging\/update-twilio-provider.md", @@ -22312,7 +22331,7 @@ "x-appwrite": { "method": "createVonageProvider", "group": "providers", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "demo": "messaging\/create-vonage-provider.md", @@ -22417,7 +22436,7 @@ "x-appwrite": { "method": "updateVonageProvider", "group": "providers", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "demo": "messaging\/update-vonage-provider.md", @@ -22518,7 +22537,7 @@ "x-appwrite": { "method": "getProvider", "group": "providers", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "demo": "messaging\/get-provider.md", @@ -22574,7 +22593,7 @@ "x-appwrite": { "method": "deleteProvider", "group": "providers", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "demo": "messaging\/delete-provider.md", @@ -22635,7 +22654,7 @@ "x-appwrite": { "method": "listProviderLogs", "group": "providers", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "demo": "messaging\/list-provider-logs.md", @@ -22717,7 +22736,7 @@ "x-appwrite": { "method": "listSubscriberLogs", "group": "subscribers", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "demo": "messaging\/list-subscriber-logs.md", @@ -22799,7 +22818,7 @@ "x-appwrite": { "method": "listTopics", "group": "topics", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "demo": "messaging\/list-topics.md", @@ -22882,7 +22901,7 @@ "x-appwrite": { "method": "createTopic", "group": "topics", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "demo": "messaging\/create-topic.md", @@ -22971,7 +22990,7 @@ "x-appwrite": { "method": "getTopic", "group": "topics", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "demo": "messaging\/get-topic.md", @@ -23032,7 +23051,7 @@ "x-appwrite": { "method": "updateTopic", "group": "topics", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "demo": "messaging\/update-topic.md", @@ -23114,7 +23133,7 @@ "x-appwrite": { "method": "deleteTopic", "group": "topics", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "demo": "messaging\/delete-topic.md", @@ -23175,7 +23194,7 @@ "x-appwrite": { "method": "listTopicLogs", "group": "topics", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "demo": "messaging\/list-topic-logs.md", @@ -23257,7 +23276,7 @@ "x-appwrite": { "method": "listSubscribers", "group": "subscribers", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "demo": "messaging\/list-subscribers.md", @@ -23348,7 +23367,7 @@ "x-appwrite": { "method": "createSubscriber", "group": "subscribers", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "demo": "messaging\/create-subscriber.md", @@ -23436,7 +23455,7 @@ "x-appwrite": { "method": "getSubscriber", "group": "subscribers", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "demo": "messaging\/get-subscriber.md", @@ -23500,7 +23519,7 @@ "x-appwrite": { "method": "deleteSubscriber", "group": "subscribers", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "demo": "messaging\/delete-subscriber.md", @@ -23571,7 +23590,7 @@ "x-appwrite": { "method": "list", "group": null, - "weight": 250, + "weight": 251, "cookies": false, "type": "", "demo": "migrations\/list.md", @@ -23654,7 +23673,7 @@ "x-appwrite": { "method": "createAppwriteMigration", "group": null, - "weight": 244, + "weight": 245, "cookies": false, "type": "", "demo": "migrations\/create-appwrite-migration.md", @@ -23767,7 +23786,7 @@ "x-appwrite": { "method": "getAppwriteReport", "group": null, - "weight": 252, + "weight": 253, "cookies": false, "type": "", "demo": "migrations\/get-appwrite-report.md", @@ -23876,7 +23895,7 @@ "x-appwrite": { "method": "createCSVExport", "group": null, - "weight": 249, + "weight": 250, "cookies": false, "type": "", "demo": "migrations\/create-csv-export.md", @@ -24002,7 +24021,7 @@ "x-appwrite": { "method": "createCSVImport", "group": null, - "weight": 248, + "weight": 249, "cookies": false, "type": "", "demo": "migrations\/create-csv-import.md", @@ -24093,7 +24112,7 @@ "x-appwrite": { "method": "createFirebaseMigration", "group": null, - "weight": 245, + "weight": 246, "cookies": false, "type": "", "demo": "migrations\/create-firebase-migration.md", @@ -24186,7 +24205,7 @@ "x-appwrite": { "method": "getFirebaseReport", "group": null, - "weight": 253, + "weight": 254, "cookies": false, "type": "", "demo": "migrations\/get-firebase-report.md", @@ -24272,7 +24291,7 @@ "x-appwrite": { "method": "createNHostMigration", "group": null, - "weight": 247, + "weight": 248, "cookies": false, "type": "", "demo": "migrations\/create-n-host-migration.md", @@ -24407,7 +24426,7 @@ "x-appwrite": { "method": "getNHostReport", "group": null, - "weight": 255, + "weight": 256, "cookies": false, "type": "", "demo": "migrations\/get-n-host-report.md", @@ -24543,7 +24562,7 @@ "x-appwrite": { "method": "createSupabaseMigration", "group": null, - "weight": 246, + "weight": 247, "cookies": false, "type": "", "demo": "migrations\/create-supabase-migration.md", @@ -24671,7 +24690,7 @@ "x-appwrite": { "method": "getSupabaseReport", "group": null, - "weight": 254, + "weight": 255, "cookies": false, "type": "", "demo": "migrations\/get-supabase-report.md", @@ -24798,7 +24817,7 @@ "x-appwrite": { "method": "get", "group": null, - "weight": 251, + "weight": 252, "cookies": false, "type": "", "demo": "migrations\/get.md", @@ -24857,7 +24876,7 @@ "x-appwrite": { "method": "retry", "group": null, - "weight": 256, + "weight": 257, "cookies": false, "type": "", "demo": "migrations\/retry.md", @@ -24911,7 +24930,7 @@ "x-appwrite": { "method": "delete", "group": null, - "weight": 257, + "weight": 258, "cookies": false, "type": "", "demo": "migrations\/delete.md", @@ -25388,7 +25407,7 @@ "x-appwrite": { "method": "list", "group": "projects", - "weight": 452, + "weight": 453, "cookies": false, "type": "", "demo": "projects\/list.md", @@ -27061,14 +27080,14 @@ "x-appwrite": { "method": "listDevKeys", "group": "devKeys", - "weight": 450, + "weight": 451, "cookies": false, "type": "", "demo": "projects\/list-dev-keys.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "devKeys.read", "platforms": [ "console" ], @@ -27131,14 +27150,14 @@ "x-appwrite": { "method": "createDevKey", "group": "devKeys", - "weight": 447, + "weight": 448, "cookies": false, "type": "", "demo": "projects\/create-dev-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "devKeys.write", "platforms": [ "console" ], @@ -27214,14 +27233,14 @@ "x-appwrite": { "method": "getDevKey", "group": "devKeys", - "weight": 449, + "weight": 450, "cookies": false, "type": "", "demo": "projects\/get-dev-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.read", + "scope": "devKeys.read", "platforms": [ "console" ], @@ -27280,14 +27299,14 @@ "x-appwrite": { "method": "updateDevKey", "group": "devKeys", - "weight": 448, + "weight": 449, "cookies": false, "type": "", "demo": "projects\/update-dev-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "devKeys.write", "platforms": [ "console" ], @@ -27366,14 +27385,14 @@ "x-appwrite": { "method": "deleteDevKey", "group": "devKeys", - "weight": 451, + "weight": 452, "cookies": false, "type": "", "demo": "projects\/delete-dev-key.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "projects.write", + "scope": "devKeys.write", "platforms": [ "console" ], @@ -28177,7 +28196,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [] @@ -31429,7 +31449,7 @@ "x-appwrite": { "method": "listRules", "group": null, - "weight": 518, + "weight": 519, "cookies": false, "type": "", "demo": "proxy\/list-rules.md", @@ -31511,7 +31531,7 @@ "x-appwrite": { "method": "createAPIRule", "group": null, - "weight": 513, + "weight": 514, "cookies": false, "type": "", "demo": "proxy\/create-api-rule.md", @@ -31581,7 +31601,7 @@ "x-appwrite": { "method": "createFunctionRule", "group": null, - "weight": 515, + "weight": 516, "cookies": false, "type": "", "demo": "proxy\/create-function-rule.md", @@ -31664,7 +31684,7 @@ "x-appwrite": { "method": "createRedirectRule", "group": null, - "weight": 516, + "weight": 517, "cookies": false, "type": "", "demo": "proxy\/create-redirect-rule.md", @@ -31784,7 +31804,7 @@ "x-appwrite": { "method": "createSiteRule", "group": null, - "weight": 514, + "weight": 515, "cookies": false, "type": "", "demo": "proxy\/create-site-rule.md", @@ -31865,7 +31885,7 @@ "x-appwrite": { "method": "getRule", "group": null, - "weight": 517, + "weight": 518, "cookies": false, "type": "", "demo": "proxy\/get-rule.md", @@ -31918,7 +31938,7 @@ "x-appwrite": { "method": "deleteRule", "group": null, - "weight": 519, + "weight": 520, "cookies": false, "type": "", "demo": "proxy\/delete-rule.md", @@ -31978,7 +31998,7 @@ "x-appwrite": { "method": "updateRuleVerification", "group": null, - "weight": 520, + "weight": 521, "cookies": false, "type": "", "demo": "proxy\/update-rule-verification.md", @@ -32036,7 +32056,7 @@ "x-appwrite": { "method": "list", "group": "sites", - "weight": 485, + "weight": 486, "cookies": false, "type": "", "demo": "sites\/list.md", @@ -32118,7 +32138,7 @@ "x-appwrite": { "method": "create", "group": "sites", - "weight": 483, + "weight": 484, "cookies": false, "type": "", "demo": "sites\/create.md", @@ -32389,7 +32409,7 @@ "x-appwrite": { "method": "listFrameworks", "group": "frameworks", - "weight": 488, + "weight": 489, "cookies": false, "type": "", "demo": "sites\/list-frameworks.md", @@ -32439,7 +32459,7 @@ "x-appwrite": { "method": "listSpecifications", "group": "frameworks", - "weight": 511, + "weight": 512, "cookies": false, "type": "", "demo": "sites\/list-specifications.md", @@ -32489,7 +32509,7 @@ "x-appwrite": { "method": "listTemplates", "group": "templates", - "weight": 507, + "weight": 508, "cookies": false, "type": "", "demo": "sites\/list-templates.md", @@ -32612,7 +32632,7 @@ "x-appwrite": { "method": "getTemplate", "group": "templates", - "weight": 508, + "weight": 509, "cookies": false, "type": "", "demo": "sites\/get-template.md", @@ -32670,7 +32690,7 @@ "x-appwrite": { "method": "listUsage", "group": null, - "weight": 509, + "weight": 510, "cookies": false, "type": "", "demo": "sites\/list-usage.md", @@ -32740,7 +32760,7 @@ "x-appwrite": { "method": "get", "group": "sites", - "weight": 484, + "weight": 485, "cookies": false, "type": "", "demo": "sites\/get.md", @@ -32800,7 +32820,7 @@ "x-appwrite": { "method": "update", "group": "sites", - "weight": 486, + "weight": 487, "cookies": false, "type": "", "demo": "sites\/update.md", @@ -33066,7 +33086,7 @@ "x-appwrite": { "method": "delete", "group": "sites", - "weight": 487, + "weight": 488, "cookies": false, "type": "", "demo": "sites\/delete.md", @@ -33128,7 +33148,7 @@ "x-appwrite": { "method": "updateSiteDeployment", "group": "sites", - "weight": 494, + "weight": 495, "cookies": false, "type": "", "demo": "sites\/update-site-deployment.md", @@ -33206,7 +33226,7 @@ "x-appwrite": { "method": "listDeployments", "group": "deployments", - "weight": 493, + "weight": 494, "cookies": false, "type": "", "demo": "sites\/list-deployments.md", @@ -33296,7 +33316,7 @@ "x-appwrite": { "method": "createDeployment", "group": "deployments", - "weight": 489, + "weight": 490, "cookies": false, "type": "upload", "demo": "sites\/create-deployment.md", @@ -33397,7 +33417,7 @@ "x-appwrite": { "method": "createDuplicateDeployment", "group": "deployments", - "weight": 497, + "weight": 498, "cookies": false, "type": "", "demo": "sites\/create-duplicate-deployment.md", @@ -33477,7 +33497,7 @@ "x-appwrite": { "method": "createTemplateDeployment", "group": "deployments", - "weight": 490, + "weight": 491, "cookies": false, "type": "", "demo": "sites\/create-template-deployment.md", @@ -33598,7 +33618,7 @@ "x-appwrite": { "method": "createVcsDeployment", "group": "deployments", - "weight": 491, + "weight": 492, "cookies": false, "type": "", "demo": "sites\/create-vcs-deployment.md", @@ -33696,7 +33716,7 @@ "x-appwrite": { "method": "getDeployment", "group": "deployments", - "weight": 492, + "weight": 493, "cookies": false, "type": "", "demo": "sites\/get-deployment.md", @@ -33759,7 +33779,7 @@ "x-appwrite": { "method": "deleteDeployment", "group": "deployments", - "weight": 495, + "weight": 496, "cookies": false, "type": "", "demo": "sites\/delete-deployment.md", @@ -33827,7 +33847,7 @@ "x-appwrite": { "method": "getDeploymentDownload", "group": "deployments", - "weight": 496, + "weight": 497, "cookies": false, "type": "location", "demo": "sites\/get-deployment-download.md", @@ -33913,7 +33933,7 @@ "x-appwrite": { "method": "updateDeploymentStatus", "group": "deployments", - "weight": 498, + "weight": 499, "cookies": false, "type": "", "demo": "sites\/update-deployment-status.md", @@ -33981,7 +34001,7 @@ "x-appwrite": { "method": "listLogs", "group": "logs", - "weight": 500, + "weight": 501, "cookies": false, "type": "", "demo": "sites\/list-logs.md", @@ -34062,7 +34082,7 @@ "x-appwrite": { "method": "getLog", "group": "logs", - "weight": 499, + "weight": 500, "cookies": false, "type": "", "demo": "sites\/get-log.md", @@ -34127,7 +34147,7 @@ "x-appwrite": { "method": "deleteLog", "group": "logs", - "weight": 501, + "weight": 502, "cookies": false, "type": "", "demo": "sites\/delete-log.md", @@ -34195,7 +34215,7 @@ "x-appwrite": { "method": "getUsage", "group": null, - "weight": 510, + "weight": 511, "cookies": false, "type": "", "demo": "sites\/get-usage.md", @@ -34273,7 +34293,7 @@ "x-appwrite": { "method": "listVariables", "group": "variables", - "weight": 504, + "weight": 505, "cookies": false, "type": "", "demo": "sites\/list-variables.md", @@ -34333,7 +34353,7 @@ "x-appwrite": { "method": "createVariable", "group": "variables", - "weight": 502, + "weight": 503, "cookies": false, "type": "", "demo": "sites\/create-variable.md", @@ -34424,7 +34444,7 @@ "x-appwrite": { "method": "getVariable", "group": "variables", - "weight": 503, + "weight": 504, "cookies": false, "type": "", "demo": "sites\/get-variable.md", @@ -34492,7 +34512,7 @@ "x-appwrite": { "method": "updateVariable", "group": "variables", - "weight": 505, + "weight": 506, "cookies": false, "type": "", "demo": "sites\/update-variable.md", @@ -34587,7 +34607,7 @@ "x-appwrite": { "method": "deleteVariable", "group": "variables", - "weight": 506, + "weight": 507, "cookies": false, "type": "", "demo": "sites\/delete-variable.md", @@ -36084,7 +36104,7 @@ "x-appwrite": { "method": "list", "group": "tablesdb", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "demo": "tablesdb\/list.md", @@ -36167,7 +36187,7 @@ "x-appwrite": { "method": "create", "group": "tablesdb", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "demo": "tablesdb\/create.md", @@ -36251,7 +36271,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 445, + "weight": 446, "cookies": false, "type": "", "demo": "tablesdb\/list-transactions.md", @@ -36321,7 +36341,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 441, + "weight": 442, "cookies": false, "type": "", "demo": "tablesdb\/create-transaction.md", @@ -36394,7 +36414,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 442, + "weight": 443, "cookies": false, "type": "", "demo": "tablesdb\/get-transaction.md", @@ -36460,7 +36480,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 443, + "weight": 444, "cookies": false, "type": "", "demo": "tablesdb\/update-transaction.md", @@ -36542,7 +36562,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 444, + "weight": 445, "cookies": false, "type": "", "demo": "tablesdb\/delete-transaction.md", @@ -36610,7 +36630,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 446, + "weight": 447, "cookies": false, "type": "", "demo": "tablesdb\/create-operations.md", @@ -36694,7 +36714,7 @@ "x-appwrite": { "method": "listUsage", "group": null, - "weight": 388, + "weight": 389, "cookies": false, "type": "", "demo": "tablesdb\/list-usage.md", @@ -36791,7 +36811,7 @@ "x-appwrite": { "method": "get", "group": "tablesdb", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "demo": "tablesdb\/get.md", @@ -36852,7 +36872,7 @@ "x-appwrite": { "method": "update", "group": "tablesdb", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "demo": "tablesdb\/update.md", @@ -36932,7 +36952,7 @@ "x-appwrite": { "method": "delete", "group": "tablesdb", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "demo": "tablesdb\/delete.md", @@ -36993,7 +37013,7 @@ "x-appwrite": { "method": "listTables", "group": "tables", - "weight": 393, + "weight": 394, "cookies": false, "type": "", "demo": "tablesdb\/list-tables.md", @@ -37087,7 +37107,7 @@ "x-appwrite": { "method": "createTable", "group": "tables", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "demo": "tablesdb\/create-table.md", @@ -37216,7 +37236,7 @@ "x-appwrite": { "method": "getTable", "group": "tables", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "demo": "tablesdb\/get-table.md", @@ -37288,7 +37308,7 @@ "x-appwrite": { "method": "updateTable", "group": "tables", - "weight": 391, + "weight": 392, "cookies": false, "type": "", "demo": "tablesdb\/update-table.md", @@ -37395,7 +37415,7 @@ "x-appwrite": { "method": "deleteTable", "group": "tables", - "weight": 392, + "weight": 393, "cookies": false, "type": "", "demo": "tablesdb\/delete-table.md", @@ -37467,7 +37487,7 @@ "x-appwrite": { "method": "listColumns", "group": "columns", - "weight": 398, + "weight": 399, "cookies": false, "type": "", "demo": "tablesdb\/list-columns.md", @@ -37562,7 +37582,7 @@ "x-appwrite": { "method": "createBooleanColumn", "group": "columns", - "weight": 399, + "weight": 400, "cookies": false, "type": "", "demo": "tablesdb\/create-boolean-column.md", @@ -37674,7 +37694,7 @@ "x-appwrite": { "method": "updateBooleanColumn", "group": "columns", - "weight": 400, + "weight": 401, "cookies": false, "type": "", "demo": "tablesdb\/update-boolean-column.md", @@ -37788,7 +37808,7 @@ "x-appwrite": { "method": "createDatetimeColumn", "group": "columns", - "weight": 401, + "weight": 402, "cookies": false, "type": "", "demo": "tablesdb\/create-datetime-column.md", @@ -37900,7 +37920,7 @@ "x-appwrite": { "method": "updateDatetimeColumn", "group": "columns", - "weight": 402, + "weight": 403, "cookies": false, "type": "", "demo": "tablesdb\/update-datetime-column.md", @@ -38014,7 +38034,7 @@ "x-appwrite": { "method": "createEmailColumn", "group": "columns", - "weight": 403, + "weight": 404, "cookies": false, "type": "", "demo": "tablesdb\/create-email-column.md", @@ -38126,7 +38146,7 @@ "x-appwrite": { "method": "updateEmailColumn", "group": "columns", - "weight": 404, + "weight": 405, "cookies": false, "type": "", "demo": "tablesdb\/update-email-column.md", @@ -38240,7 +38260,7 @@ "x-appwrite": { "method": "createEnumColumn", "group": "columns", - "weight": 405, + "weight": 406, "cookies": false, "type": "", "demo": "tablesdb\/create-enum-column.md", @@ -38362,7 +38382,7 @@ "x-appwrite": { "method": "updateEnumColumn", "group": "columns", - "weight": 406, + "weight": 407, "cookies": false, "type": "", "demo": "tablesdb\/update-enum-column.md", @@ -38486,7 +38506,7 @@ "x-appwrite": { "method": "createFloatColumn", "group": "columns", - "weight": 407, + "weight": 408, "cookies": false, "type": "", "demo": "tablesdb\/create-float-column.md", @@ -38612,7 +38632,7 @@ "x-appwrite": { "method": "updateFloatColumn", "group": "columns", - "weight": 408, + "weight": 409, "cookies": false, "type": "", "demo": "tablesdb\/update-float-column.md", @@ -38740,7 +38760,7 @@ "x-appwrite": { "method": "createIntegerColumn", "group": "columns", - "weight": 409, + "weight": 410, "cookies": false, "type": "", "demo": "tablesdb\/create-integer-column.md", @@ -38866,7 +38886,7 @@ "x-appwrite": { "method": "updateIntegerColumn", "group": "columns", - "weight": 410, + "weight": 411, "cookies": false, "type": "", "demo": "tablesdb\/update-integer-column.md", @@ -38994,7 +39014,7 @@ "x-appwrite": { "method": "createIpColumn", "group": "columns", - "weight": 411, + "weight": 412, "cookies": false, "type": "", "demo": "tablesdb\/create-ip-column.md", @@ -39106,7 +39126,7 @@ "x-appwrite": { "method": "updateIpColumn", "group": "columns", - "weight": 412, + "weight": 413, "cookies": false, "type": "", "demo": "tablesdb\/update-ip-column.md", @@ -39220,7 +39240,7 @@ "x-appwrite": { "method": "createLineColumn", "group": "columns", - "weight": 413, + "weight": 414, "cookies": false, "type": "", "demo": "tablesdb\/create-line-column.md", @@ -39326,7 +39346,7 @@ "x-appwrite": { "method": "updateLineColumn", "group": "columns", - "weight": 414, + "weight": 415, "cookies": false, "type": "", "demo": "tablesdb\/update-line-column.md", @@ -39439,7 +39459,7 @@ "x-appwrite": { "method": "createPointColumn", "group": "columns", - "weight": 415, + "weight": 416, "cookies": false, "type": "", "demo": "tablesdb\/create-point-column.md", @@ -39545,7 +39565,7 @@ "x-appwrite": { "method": "updatePointColumn", "group": "columns", - "weight": 416, + "weight": 417, "cookies": false, "type": "", "demo": "tablesdb\/update-point-column.md", @@ -39658,7 +39678,7 @@ "x-appwrite": { "method": "createPolygonColumn", "group": "columns", - "weight": 417, + "weight": 418, "cookies": false, "type": "", "demo": "tablesdb\/create-polygon-column.md", @@ -39764,7 +39784,7 @@ "x-appwrite": { "method": "updatePolygonColumn", "group": "columns", - "weight": 418, + "weight": 419, "cookies": false, "type": "", "demo": "tablesdb\/update-polygon-column.md", @@ -39877,7 +39897,7 @@ "x-appwrite": { "method": "createRelationshipColumn", "group": "columns", - "weight": 419, + "weight": 420, "cookies": false, "type": "", "demo": "tablesdb\/create-relationship-column.md", @@ -40017,7 +40037,7 @@ "x-appwrite": { "method": "createStringColumn", "group": "columns", - "weight": 421, + "weight": 422, "cookies": false, "type": "", "demo": "tablesdb\/create-string-column.md", @@ -40142,7 +40162,7 @@ "x-appwrite": { "method": "updateStringColumn", "group": "columns", - "weight": 422, + "weight": 423, "cookies": false, "type": "", "demo": "tablesdb\/update-string-column.md", @@ -40263,7 +40283,7 @@ "x-appwrite": { "method": "createUrlColumn", "group": "columns", - "weight": 423, + "weight": 424, "cookies": false, "type": "", "demo": "tablesdb\/create-url-column.md", @@ -40375,7 +40395,7 @@ "x-appwrite": { "method": "updateUrlColumn", "group": "columns", - "weight": 424, + "weight": 425, "cookies": false, "type": "", "demo": "tablesdb\/update-url-column.md", @@ -40518,7 +40538,7 @@ "x-appwrite": { "method": "getColumn", "group": "columns", - "weight": 396, + "weight": 397, "cookies": false, "type": "", "demo": "tablesdb\/get-column.md", @@ -40592,7 +40612,7 @@ "x-appwrite": { "method": "deleteColumn", "group": "columns", - "weight": 397, + "weight": 398, "cookies": false, "type": "", "demo": "tablesdb\/delete-column.md", @@ -40673,7 +40693,7 @@ "x-appwrite": { "method": "updateRelationshipColumn", "group": "columns", - "weight": 420, + "weight": 421, "cookies": false, "type": "", "demo": "tablesdb\/update-relationship-column.md", @@ -40782,7 +40802,7 @@ "x-appwrite": { "method": "listIndexes", "group": "indexes", - "weight": 428, + "weight": 429, "cookies": false, "type": "", "demo": "tablesdb\/list-indexes.md", @@ -40875,7 +40895,7 @@ "x-appwrite": { "method": "createIndex", "group": "indexes", - "weight": 425, + "weight": 426, "cookies": false, "type": "", "demo": "tablesdb\/create-index.md", @@ -41014,7 +41034,7 @@ "x-appwrite": { "method": "getIndex", "group": "indexes", - "weight": 426, + "weight": 427, "cookies": false, "type": "", "demo": "tablesdb\/get-index.md", @@ -41088,7 +41108,7 @@ "x-appwrite": { "method": "deleteIndex", "group": "indexes", - "weight": 427, + "weight": 428, "cookies": false, "type": "", "demo": "tablesdb\/delete-index.md", @@ -41167,7 +41187,7 @@ "x-appwrite": { "method": "listTableLogs", "group": "tables", - "weight": 394, + "weight": 395, "cookies": false, "type": "", "demo": "tablesdb\/list-table-logs.md", @@ -41249,7 +41269,7 @@ "x-appwrite": { "method": "listRows", "group": "rows", - "weight": 437, + "weight": 438, "cookies": false, "type": "", "demo": "tablesdb\/list-rows.md", @@ -41352,7 +41372,7 @@ "x-appwrite": { "method": "createRow", "group": "rows", - "weight": 429, + "weight": 430, "cookies": false, "type": "", "demo": "tablesdb\/create-row.md", @@ -41534,7 +41554,7 @@ "x-appwrite": { "method": "upsertRows", "group": "rows", - "weight": 434, + "weight": 435, "cookies": false, "type": "", "demo": "tablesdb\/upsert-rows.md", @@ -41664,7 +41684,7 @@ "x-appwrite": { "method": "updateRows", "group": "rows", - "weight": 432, + "weight": 433, "cookies": false, "type": "", "demo": "tablesdb\/update-rows.md", @@ -41767,7 +41787,7 @@ "x-appwrite": { "method": "deleteRows", "group": "rows", - "weight": 436, + "weight": 437, "cookies": false, "type": "", "demo": "tablesdb\/delete-rows.md", @@ -41864,7 +41884,7 @@ "x-appwrite": { "method": "getRow", "group": "rows", - "weight": 430, + "weight": 431, "cookies": false, "type": "", "demo": "tablesdb\/get-row.md", @@ -41966,7 +41986,7 @@ "x-appwrite": { "method": "upsertRow", "group": "rows", - "weight": 433, + "weight": 434, "cookies": false, "type": "", "demo": "tablesdb\/upsert-row.md", @@ -42112,7 +42132,7 @@ "x-appwrite": { "method": "updateRow", "group": "rows", - "weight": 431, + "weight": 432, "cookies": false, "type": "", "demo": "tablesdb\/update-row.md", @@ -42221,7 +42241,7 @@ "x-appwrite": { "method": "deleteRow", "group": "rows", - "weight": 435, + "weight": 436, "cookies": false, "type": "", "demo": "tablesdb\/delete-row.md", @@ -42319,7 +42339,7 @@ "x-appwrite": { "method": "listRowLogs", "group": "logs", - "weight": 438, + "weight": 439, "cookies": false, "type": "", "demo": "tablesdb\/list-row-logs.md", @@ -42411,7 +42431,7 @@ "x-appwrite": { "method": "decrementRowColumn", "group": "rows", - "weight": 440, + "weight": 441, "cookies": false, "type": "", "demo": "tablesdb\/decrement-row-column.md", @@ -42531,7 +42551,7 @@ "x-appwrite": { "method": "incrementRowColumn", "group": "rows", - "weight": 439, + "weight": 440, "cookies": false, "type": "", "demo": "tablesdb\/increment-row-column.md", @@ -42649,7 +42669,7 @@ "x-appwrite": { "method": "getTableUsage", "group": null, - "weight": 395, + "weight": 396, "cookies": false, "type": "", "demo": "tablesdb\/get-table-usage.md", @@ -42739,7 +42759,7 @@ "x-appwrite": { "method": "getUsage", "group": null, - "weight": 387, + "weight": 388, "cookies": false, "type": "", "demo": "tablesdb\/get-usage.md", @@ -43994,7 +44014,7 @@ "x-appwrite": { "method": "list", "group": "files", - "weight": 523, + "weight": 524, "cookies": false, "type": "", "demo": "tokens\/list.md", @@ -44083,7 +44103,7 @@ "x-appwrite": { "method": "createFileToken", "group": "files", - "weight": 521, + "weight": 522, "cookies": false, "type": "", "demo": "tokens\/create-file-token.md", @@ -44167,7 +44187,7 @@ "x-appwrite": { "method": "get", "group": "tokens", - "weight": 522, + "weight": 523, "cookies": false, "type": "", "demo": "tokens\/get.md", @@ -44227,7 +44247,7 @@ "x-appwrite": { "method": "update", "group": "tokens", - "weight": 524, + "weight": 525, "cookies": false, "type": "", "demo": "tokens\/update.md", @@ -44298,7 +44318,7 @@ "x-appwrite": { "method": "delete", "group": "tokens", - "weight": 525, + "weight": 526, "cookies": false, "type": "", "demo": "tokens\/delete.md", diff --git a/app/config/specs/swagger2-latest-server.json b/app/config/specs/swagger2-latest-server.json index 090a44e742..fe749ccd99 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -501,6 +501,23 @@ "Session": [], "JWT": [] } + ], + "parameters": [ + { + "name": "payload", + "in": "body", + "schema": { + "type": "object", + "properties": { + "duration": { + "type": "integer", + "description": "Time in seconds before JWT expires. Default duration is 900 seconds, and maximum is 3600 seconds.", + "default": 900, + "x-example": 0 + } + } + } + } ] } }, @@ -607,7 +624,7 @@ "x-appwrite": { "method": "updateMFA", "group": "mfa", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "demo": "account\/update-mfa.md", @@ -683,7 +700,7 @@ "x-appwrite": { "method": "createMfaAuthenticator", "group": "mfa", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "demo": "account\/create-mfa-authenticator.md", @@ -810,7 +827,7 @@ "x-appwrite": { "method": "updateMfaAuthenticator", "group": "mfa", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "demo": "account\/update-mfa-authenticator.md", @@ -954,7 +971,7 @@ "x-appwrite": { "method": "deleteMfaAuthenticator", "group": "mfa", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "demo": "account\/delete-mfa-authenticator.md", @@ -1081,7 +1098,7 @@ "x-appwrite": { "method": "createMfaChallenge", "group": "mfa", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "demo": "account\/create-mfa-challenge.md", @@ -1221,7 +1238,7 @@ "x-appwrite": { "method": "updateMfaChallenge", "group": "mfa", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "demo": "account\/update-mfa-challenge.md", @@ -1364,7 +1381,7 @@ "x-appwrite": { "method": "listMfaFactors", "group": "mfa", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "demo": "account\/list-mfa-factors.md", @@ -1468,7 +1485,7 @@ "x-appwrite": { "method": "getMfaRecoveryCodes", "group": "mfa", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "demo": "account\/get-mfa-recovery-codes.md", @@ -1572,7 +1589,7 @@ "x-appwrite": { "method": "createMfaRecoveryCodes", "group": "mfa", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "demo": "account\/create-mfa-recovery-codes.md", @@ -1676,7 +1693,7 @@ "x-appwrite": { "method": "updateMfaRecoveryCodes", "group": "mfa", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "demo": "account\/update-mfa-recovery-codes.md", @@ -3327,7 +3344,8 @@ "yandex", "zoho", "zoom", - "mock" + "mock", + "mock-unverified" ], "x-enum-name": "OAuthProvider", "x-enum-keys": [], @@ -5694,7 +5712,7 @@ "x-appwrite": { "method": "list", "group": "databases", - "weight": 320, + "weight": 321, "cookies": false, "type": "", "demo": "databases\/list.md", @@ -5812,7 +5830,7 @@ "x-appwrite": { "method": "create", "group": "databases", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "demo": "databases\/create.md", @@ -5934,7 +5952,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "demo": "databases\/list-transactions.md", @@ -6003,7 +6021,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "demo": "databases\/create-transaction.md", @@ -6075,7 +6093,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "demo": "databases\/get-transaction.md", @@ -6140,7 +6158,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "demo": "databases\/update-transaction.md", @@ -6221,7 +6239,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "demo": "databases\/delete-transaction.md", @@ -6288,7 +6306,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "demo": "databases\/create-operations.md", @@ -6371,7 +6389,7 @@ "x-appwrite": { "method": "get", "group": "databases", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "demo": "databases\/get.md", @@ -6467,7 +6485,7 @@ "x-appwrite": { "method": "update", "group": "databases", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "demo": "databases\/update.md", @@ -6585,7 +6603,7 @@ "x-appwrite": { "method": "delete", "group": "databases", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "demo": "databases\/delete.md", @@ -6680,7 +6698,7 @@ "x-appwrite": { "method": "listCollections", "group": "collections", - "weight": 328, + "weight": 329, "cookies": false, "type": "", "demo": "databases\/list-collections.md", @@ -6776,7 +6794,7 @@ "x-appwrite": { "method": "createCollection", "group": "collections", - "weight": 324, + "weight": 325, "cookies": false, "type": "", "demo": "databases\/create-collection.md", @@ -6857,7 +6875,7 @@ }, "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.", + "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": { @@ -6907,7 +6925,7 @@ "x-appwrite": { "method": "getCollection", "group": "collections", - "weight": 325, + "weight": 326, "cookies": false, "type": "", "demo": "databases\/get-collection.md", @@ -6981,7 +6999,7 @@ "x-appwrite": { "method": "updateCollection", "group": "collections", - "weight": 326, + "weight": 327, "cookies": false, "type": "", "demo": "databases\/update-collection.md", @@ -7090,7 +7108,7 @@ "x-appwrite": { "method": "deleteCollection", "group": "collections", - "weight": 327, + "weight": 328, "cookies": false, "type": "", "demo": "databases\/delete-collection.md", @@ -7164,7 +7182,7 @@ "x-appwrite": { "method": "listAttributes", "group": "attributes", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "demo": "databases\/list-attributes.md", @@ -7261,7 +7279,7 @@ "x-appwrite": { "method": "createBooleanAttribute", "group": "attributes", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "demo": "databases\/create-boolean-attribute.md", @@ -7375,7 +7393,7 @@ "x-appwrite": { "method": "updateBooleanAttribute", "group": "attributes", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "demo": "databases\/update-boolean-attribute.md", @@ -7491,7 +7509,7 @@ "x-appwrite": { "method": "createDatetimeAttribute", "group": "attributes", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "demo": "databases\/create-datetime-attribute.md", @@ -7605,7 +7623,7 @@ "x-appwrite": { "method": "updateDatetimeAttribute", "group": "attributes", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "demo": "databases\/update-datetime-attribute.md", @@ -7721,7 +7739,7 @@ "x-appwrite": { "method": "createEmailAttribute", "group": "attributes", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "demo": "databases\/create-email-attribute.md", @@ -7835,7 +7853,7 @@ "x-appwrite": { "method": "updateEmailAttribute", "group": "attributes", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "demo": "databases\/update-email-attribute.md", @@ -7951,7 +7969,7 @@ "x-appwrite": { "method": "createEnumAttribute", "group": "attributes", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "demo": "databases\/create-enum-attribute.md", @@ -8075,7 +8093,7 @@ "x-appwrite": { "method": "updateEnumAttribute", "group": "attributes", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "demo": "databases\/update-enum-attribute.md", @@ -8201,7 +8219,7 @@ "x-appwrite": { "method": "createFloatAttribute", "group": "attributes", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "demo": "databases\/create-float-attribute.md", @@ -8329,7 +8347,7 @@ "x-appwrite": { "method": "updateFloatAttribute", "group": "attributes", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "demo": "databases\/update-float-attribute.md", @@ -8459,7 +8477,7 @@ "x-appwrite": { "method": "createIntegerAttribute", "group": "attributes", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "demo": "databases\/create-integer-attribute.md", @@ -8587,7 +8605,7 @@ "x-appwrite": { "method": "updateIntegerAttribute", "group": "attributes", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "demo": "databases\/update-integer-attribute.md", @@ -8717,7 +8735,7 @@ "x-appwrite": { "method": "createIpAttribute", "group": "attributes", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "demo": "databases\/create-ip-attribute.md", @@ -8831,7 +8849,7 @@ "x-appwrite": { "method": "updateIpAttribute", "group": "attributes", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "demo": "databases\/update-ip-attribute.md", @@ -8947,7 +8965,7 @@ "x-appwrite": { "method": "createLineAttribute", "group": "attributes", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "demo": "databases\/create-line-attribute.md", @@ -9055,7 +9073,7 @@ "x-appwrite": { "method": "updateLineAttribute", "group": "attributes", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "demo": "databases\/update-line-attribute.md", @@ -9170,7 +9188,7 @@ "x-appwrite": { "method": "createPointAttribute", "group": "attributes", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "demo": "databases\/create-point-attribute.md", @@ -9278,7 +9296,7 @@ "x-appwrite": { "method": "updatePointAttribute", "group": "attributes", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "demo": "databases\/update-point-attribute.md", @@ -9393,7 +9411,7 @@ "x-appwrite": { "method": "createPolygonAttribute", "group": "attributes", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "demo": "databases\/create-polygon-attribute.md", @@ -9501,7 +9519,7 @@ "x-appwrite": { "method": "updatePolygonAttribute", "group": "attributes", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "demo": "databases\/update-polygon-attribute.md", @@ -9616,7 +9634,7 @@ "x-appwrite": { "method": "createRelationshipAttribute", "group": "attributes", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "demo": "databases\/create-relationship-attribute.md", @@ -9758,7 +9776,7 @@ "x-appwrite": { "method": "createStringAttribute", "group": "attributes", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "demo": "databases\/create-string-attribute.md", @@ -9885,7 +9903,7 @@ "x-appwrite": { "method": "updateStringAttribute", "group": "attributes", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "demo": "databases\/update-string-attribute.md", @@ -10008,7 +10026,7 @@ "x-appwrite": { "method": "createUrlAttribute", "group": "attributes", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "demo": "databases\/create-url-attribute.md", @@ -10122,7 +10140,7 @@ "x-appwrite": { "method": "updateUrlAttribute", "group": "attributes", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "demo": "databases\/update-url-attribute.md", @@ -10267,7 +10285,7 @@ "x-appwrite": { "method": "getAttribute", "group": "attributes", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "demo": "databases\/get-attribute.md", @@ -10343,7 +10361,7 @@ "x-appwrite": { "method": "deleteAttribute", "group": "attributes", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "demo": "databases\/delete-attribute.md", @@ -10426,7 +10444,7 @@ "x-appwrite": { "method": "updateRelationshipAttribute", "group": "attributes", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "demo": "databases\/update-relationship-attribute.md", @@ -10537,7 +10555,7 @@ "x-appwrite": { "method": "listDocuments", "group": "documents", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "demo": "databases\/list-documents.md", @@ -10643,7 +10661,7 @@ "x-appwrite": { "method": "createDocument", "group": "documents", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "demo": "databases\/create-document.md", @@ -10838,7 +10856,7 @@ "x-appwrite": { "method": "upsertDocuments", "group": "documents", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "demo": "databases\/upsert-documents.md", @@ -10975,7 +10993,7 @@ "x-appwrite": { "method": "updateDocuments", "group": "documents", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "demo": "databases\/update-documents.md", @@ -11080,7 +11098,7 @@ "x-appwrite": { "method": "deleteDocuments", "group": "documents", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "demo": "databases\/delete-documents.md", @@ -11179,7 +11197,7 @@ "x-appwrite": { "method": "getDocument", "group": "documents", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "demo": "databases\/get-document.md", @@ -11284,7 +11302,7 @@ "x-appwrite": { "method": "upsertDocument", "group": "documents", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "demo": "databases\/upsert-document.md", @@ -11438,7 +11456,7 @@ "x-appwrite": { "method": "updateDocument", "group": "documents", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "demo": "databases\/update-document.md", @@ -11550,7 +11568,7 @@ "x-appwrite": { "method": "deleteDocument", "group": "documents", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "demo": "databases\/delete-document.md", @@ -11653,7 +11671,7 @@ "x-appwrite": { "method": "decrementDocumentAttribute", "group": "documents", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "demo": "databases\/decrement-document-attribute.md", @@ -11776,7 +11794,7 @@ "x-appwrite": { "method": "incrementDocumentAttribute", "group": "documents", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "demo": "databases\/increment-document-attribute.md", @@ -11897,7 +11915,7 @@ "x-appwrite": { "method": "listIndexes", "group": "indexes", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "demo": "databases\/list-indexes.md", @@ -11992,7 +12010,7 @@ "x-appwrite": { "method": "createIndex", "group": "indexes", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "demo": "databases\/create-index.md", @@ -12133,7 +12151,7 @@ "x-appwrite": { "method": "getIndex", "group": "indexes", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "demo": "databases\/get-index.md", @@ -12209,7 +12227,7 @@ "x-appwrite": { "method": "deleteIndex", "group": "indexes", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "demo": "databases\/delete-index.md", @@ -12290,7 +12308,7 @@ "x-appwrite": { "method": "list", "group": "functions", - "weight": 456, + "weight": 457, "cookies": false, "type": "", "demo": "functions\/list.md", @@ -12373,7 +12391,7 @@ "x-appwrite": { "method": "create", "group": "functions", - "weight": 453, + "weight": 454, "cookies": false, "type": "", "demo": "functions\/create.md", @@ -12687,7 +12705,7 @@ "x-appwrite": { "method": "listRuntimes", "group": "runtimes", - "weight": 458, + "weight": 459, "cookies": false, "type": "", "demo": "functions\/list-runtimes.md", @@ -12738,7 +12756,7 @@ "x-appwrite": { "method": "listSpecifications", "group": "runtimes", - "weight": 459, + "weight": 460, "cookies": false, "type": "", "demo": "functions\/list-specifications.md", @@ -12789,7 +12807,7 @@ "x-appwrite": { "method": "get", "group": "functions", - "weight": 454, + "weight": 455, "cookies": false, "type": "", "demo": "functions\/get.md", @@ -12850,7 +12868,7 @@ "x-appwrite": { "method": "update", "group": "functions", - "weight": 455, + "weight": 456, "cookies": false, "type": "", "demo": "functions\/update.md", @@ -13160,7 +13178,7 @@ "x-appwrite": { "method": "delete", "group": "functions", - "weight": 457, + "weight": 458, "cookies": false, "type": "", "demo": "functions\/delete.md", @@ -13223,7 +13241,7 @@ "x-appwrite": { "method": "updateFunctionDeployment", "group": "functions", - "weight": 462, + "weight": 463, "cookies": false, "type": "", "demo": "functions\/update-function-deployment.md", @@ -13302,7 +13320,7 @@ "x-appwrite": { "method": "listDeployments", "group": "deployments", - "weight": 463, + "weight": 464, "cookies": false, "type": "", "demo": "functions\/list-deployments.md", @@ -13393,7 +13411,7 @@ "x-appwrite": { "method": "createDeployment", "group": "deployments", - "weight": 460, + "weight": 461, "cookies": false, "type": "upload", "demo": "functions\/create-deployment.md", @@ -13487,7 +13505,7 @@ "x-appwrite": { "method": "createDuplicateDeployment", "group": "deployments", - "weight": 468, + "weight": 469, "cookies": false, "type": "", "demo": "functions\/create-duplicate-deployment.md", @@ -13574,7 +13592,7 @@ "x-appwrite": { "method": "createTemplateDeployment", "group": "deployments", - "weight": 465, + "weight": 466, "cookies": false, "type": "", "demo": "functions\/create-template-deployment.md", @@ -13696,7 +13714,7 @@ "x-appwrite": { "method": "createVcsDeployment", "group": "deployments", - "weight": 466, + "weight": 467, "cookies": false, "type": "", "demo": "functions\/create-vcs-deployment.md", @@ -13794,7 +13812,7 @@ "x-appwrite": { "method": "getDeployment", "group": "deployments", - "weight": 461, + "weight": 462, "cookies": false, "type": "", "demo": "functions\/get-deployment.md", @@ -13858,7 +13876,7 @@ "x-appwrite": { "method": "deleteDeployment", "group": "deployments", - "weight": 464, + "weight": 465, "cookies": false, "type": "", "demo": "functions\/delete-deployment.md", @@ -13927,7 +13945,7 @@ "x-appwrite": { "method": "getDeploymentDownload", "group": "deployments", - "weight": 467, + "weight": 468, "cookies": false, "type": "location", "demo": "functions\/get-deployment-download.md", @@ -14014,7 +14032,7 @@ "x-appwrite": { "method": "updateDeploymentStatus", "group": "deployments", - "weight": 469, + "weight": 470, "cookies": false, "type": "", "demo": "functions\/update-deployment-status.md", @@ -14083,7 +14101,7 @@ "x-appwrite": { "method": "listExecutions", "group": "executions", - "weight": 472, + "weight": 473, "cookies": false, "type": "", "demo": "functions\/list-executions.md", @@ -14168,7 +14186,7 @@ "x-appwrite": { "method": "createExecution", "group": "executions", - "weight": 470, + "weight": 471, "cookies": false, "type": "", "demo": "functions\/create-execution.md", @@ -14289,7 +14307,7 @@ "x-appwrite": { "method": "getExecution", "group": "executions", - "weight": 471, + "weight": 472, "cookies": false, "type": "", "demo": "functions\/get-execution.md", @@ -14356,7 +14374,7 @@ "x-appwrite": { "method": "deleteExecution", "group": "executions", - "weight": 473, + "weight": 474, "cookies": false, "type": "", "demo": "functions\/delete-execution.md", @@ -14425,7 +14443,7 @@ "x-appwrite": { "method": "listVariables", "group": "variables", - "weight": 478, + "weight": 479, "cookies": false, "type": "", "demo": "functions\/list-variables.md", @@ -14486,7 +14504,7 @@ "x-appwrite": { "method": "createVariable", "group": "variables", - "weight": 476, + "weight": 477, "cookies": false, "type": "", "demo": "functions\/create-variable.md", @@ -14578,7 +14596,7 @@ "x-appwrite": { "method": "getVariable", "group": "variables", - "weight": 477, + "weight": 478, "cookies": false, "type": "", "demo": "functions\/get-variable.md", @@ -14647,7 +14665,7 @@ "x-appwrite": { "method": "updateVariable", "group": "variables", - "weight": 479, + "weight": 480, "cookies": false, "type": "", "demo": "functions\/update-variable.md", @@ -14743,7 +14761,7 @@ "x-appwrite": { "method": "deleteVariable", "group": "variables", - "weight": 480, + "weight": 481, "cookies": false, "type": "", "demo": "functions\/delete-variable.md", @@ -14814,7 +14832,7 @@ "x-appwrite": { "method": "query", "group": "graphql", - "weight": 241, + "weight": 242, "cookies": false, "type": "graphql", "demo": "graphql\/query.md", @@ -14891,7 +14909,7 @@ "x-appwrite": { "method": "mutation", "group": "graphql", - "weight": 240, + "weight": 241, "cookies": false, "type": "graphql", "demo": "graphql\/mutation.md", @@ -16735,7 +16753,7 @@ "x-appwrite": { "method": "listMessages", "group": "messages", - "weight": 298, + "weight": 299, "cookies": false, "type": "", "demo": "messaging\/list-messages.md", @@ -16821,7 +16839,7 @@ "x-appwrite": { "method": "createEmail", "group": "messages", - "weight": 295, + "weight": 296, "cookies": false, "type": "", "demo": "messaging\/create-email.md", @@ -16982,7 +17000,7 @@ "x-appwrite": { "method": "updateEmail", "group": "messages", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "demo": "messaging\/update-email.md", @@ -17150,7 +17168,7 @@ "x-appwrite": { "method": "createPush", "group": "messages", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "demo": "messaging\/create-push.md", @@ -17349,7 +17367,7 @@ "x-appwrite": { "method": "updatePush", "group": "messages", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "demo": "messaging\/update-push.md", @@ -17563,7 +17581,7 @@ "x-appwrite": { "method": "createSms", "group": "messages", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "demo": "messaging\/create-sms.md", @@ -17756,7 +17774,7 @@ "x-appwrite": { "method": "updateSms", "group": "messages", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "demo": "messaging\/update-sms.md", @@ -17948,7 +17966,7 @@ "x-appwrite": { "method": "getMessage", "group": "messages", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "demo": "messaging\/get-message.md", @@ -18005,7 +18023,7 @@ "x-appwrite": { "method": "delete", "group": "messages", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "demo": "messaging\/delete.md", @@ -18067,7 +18085,7 @@ "x-appwrite": { "method": "listMessageLogs", "group": "logs", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "demo": "messaging\/list-message-logs.md", @@ -18150,7 +18168,7 @@ "x-appwrite": { "method": "listTargets", "group": "messages", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "demo": "messaging\/list-targets.md", @@ -18233,7 +18251,7 @@ "x-appwrite": { "method": "listProviders", "group": "providers", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "demo": "messaging\/list-providers.md", @@ -18319,7 +18337,7 @@ "x-appwrite": { "method": "createApnsProvider", "group": "providers", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "demo": "messaging\/create-apns-provider.md", @@ -18511,7 +18529,7 @@ "x-appwrite": { "method": "updateApnsProvider", "group": "providers", - "weight": 282, + "weight": 283, "cookies": false, "type": "", "demo": "messaging\/update-apns-provider.md", @@ -18700,7 +18718,7 @@ "x-appwrite": { "method": "createFcmProvider", "group": "providers", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "demo": "messaging\/create-fcm-provider.md", @@ -18861,7 +18879,7 @@ "x-appwrite": { "method": "updateFcmProvider", "group": "providers", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "demo": "messaging\/update-fcm-provider.md", @@ -19018,7 +19036,7 @@ "x-appwrite": { "method": "createMailgunProvider", "group": "providers", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "demo": "messaging\/create-mailgun-provider.md", @@ -19149,7 +19167,7 @@ "x-appwrite": { "method": "updateMailgunProvider", "group": "providers", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "demo": "messaging\/update-mailgun-provider.md", @@ -19278,7 +19296,7 @@ "x-appwrite": { "method": "createMsg91Provider", "group": "providers", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "demo": "messaging\/create-msg-91-provider.md", @@ -19384,7 +19402,7 @@ "x-appwrite": { "method": "updateMsg91Provider", "group": "providers", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "demo": "messaging\/update-msg-91-provider.md", @@ -19488,7 +19506,7 @@ "x-appwrite": { "method": "createResendProvider", "group": "providers", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "demo": "messaging\/create-resend-provider.md", @@ -19606,7 +19624,7 @@ "x-appwrite": { "method": "updateResendProvider", "group": "providers", - "weight": 274, + "weight": 275, "cookies": false, "type": "", "demo": "messaging\/update-resend-provider.md", @@ -19722,7 +19740,7 @@ "x-appwrite": { "method": "createSendgridProvider", "group": "providers", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "demo": "messaging\/create-sendgrid-provider.md", @@ -19840,7 +19858,7 @@ "x-appwrite": { "method": "updateSendgridProvider", "group": "providers", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "demo": "messaging\/update-sendgrid-provider.md", @@ -19956,7 +19974,7 @@ "x-appwrite": { "method": "createSmtpProvider", "group": "providers", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "demo": "messaging\/create-smtp-provider.md", @@ -20206,7 +20224,7 @@ "x-appwrite": { "method": "updateSmtpProvider", "group": "providers", - "weight": 275, + "weight": 276, "cookies": false, "type": "", "demo": "messaging\/update-smtp-provider.md", @@ -20451,7 +20469,7 @@ "x-appwrite": { "method": "createTelesignProvider", "group": "providers", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "demo": "messaging\/create-telesign-provider.md", @@ -20557,7 +20575,7 @@ "x-appwrite": { "method": "updateTelesignProvider", "group": "providers", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "demo": "messaging\/update-telesign-provider.md", @@ -20661,7 +20679,7 @@ "x-appwrite": { "method": "createTextmagicProvider", "group": "providers", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "demo": "messaging\/create-textmagic-provider.md", @@ -20767,7 +20785,7 @@ "x-appwrite": { "method": "updateTextmagicProvider", "group": "providers", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "demo": "messaging\/update-textmagic-provider.md", @@ -20871,7 +20889,7 @@ "x-appwrite": { "method": "createTwilioProvider", "group": "providers", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "demo": "messaging\/create-twilio-provider.md", @@ -20977,7 +20995,7 @@ "x-appwrite": { "method": "updateTwilioProvider", "group": "providers", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "demo": "messaging\/update-twilio-provider.md", @@ -21081,7 +21099,7 @@ "x-appwrite": { "method": "createVonageProvider", "group": "providers", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "demo": "messaging\/create-vonage-provider.md", @@ -21187,7 +21205,7 @@ "x-appwrite": { "method": "updateVonageProvider", "group": "providers", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "demo": "messaging\/update-vonage-provider.md", @@ -21289,7 +21307,7 @@ "x-appwrite": { "method": "getProvider", "group": "providers", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "demo": "messaging\/get-provider.md", @@ -21346,7 +21364,7 @@ "x-appwrite": { "method": "deleteProvider", "group": "providers", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "demo": "messaging\/delete-provider.md", @@ -21408,7 +21426,7 @@ "x-appwrite": { "method": "listProviderLogs", "group": "providers", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "demo": "messaging\/list-provider-logs.md", @@ -21491,7 +21509,7 @@ "x-appwrite": { "method": "listSubscriberLogs", "group": "subscribers", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "demo": "messaging\/list-subscriber-logs.md", @@ -21574,7 +21592,7 @@ "x-appwrite": { "method": "listTopics", "group": "topics", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "demo": "messaging\/list-topics.md", @@ -21658,7 +21676,7 @@ "x-appwrite": { "method": "createTopic", "group": "topics", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "demo": "messaging\/create-topic.md", @@ -21748,7 +21766,7 @@ "x-appwrite": { "method": "getTopic", "group": "topics", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "demo": "messaging\/get-topic.md", @@ -21810,7 +21828,7 @@ "x-appwrite": { "method": "updateTopic", "group": "topics", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "demo": "messaging\/update-topic.md", @@ -21893,7 +21911,7 @@ "x-appwrite": { "method": "deleteTopic", "group": "topics", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "demo": "messaging\/delete-topic.md", @@ -21955,7 +21973,7 @@ "x-appwrite": { "method": "listTopicLogs", "group": "topics", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "demo": "messaging\/list-topic-logs.md", @@ -22038,7 +22056,7 @@ "x-appwrite": { "method": "listSubscribers", "group": "subscribers", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "demo": "messaging\/list-subscribers.md", @@ -22130,7 +22148,7 @@ "x-appwrite": { "method": "createSubscriber", "group": "subscribers", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "demo": "messaging\/create-subscriber.md", @@ -22220,7 +22238,7 @@ "x-appwrite": { "method": "getSubscriber", "group": "subscribers", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "demo": "messaging\/get-subscriber.md", @@ -22285,7 +22303,7 @@ "x-appwrite": { "method": "deleteSubscriber", "group": "subscribers", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "demo": "messaging\/delete-subscriber.md", @@ -22358,7 +22376,7 @@ "x-appwrite": { "method": "list", "group": "sites", - "weight": 485, + "weight": 486, "cookies": false, "type": "", "demo": "sites\/list.md", @@ -22441,7 +22459,7 @@ "x-appwrite": { "method": "create", "group": "sites", - "weight": 483, + "weight": 484, "cookies": false, "type": "", "demo": "sites\/create.md", @@ -22713,7 +22731,7 @@ "x-appwrite": { "method": "listFrameworks", "group": "frameworks", - "weight": 488, + "weight": 489, "cookies": false, "type": "", "demo": "sites\/list-frameworks.md", @@ -22764,7 +22782,7 @@ "x-appwrite": { "method": "listSpecifications", "group": "frameworks", - "weight": 511, + "weight": 512, "cookies": false, "type": "", "demo": "sites\/list-specifications.md", @@ -22815,7 +22833,7 @@ "x-appwrite": { "method": "get", "group": "sites", - "weight": 484, + "weight": 485, "cookies": false, "type": "", "demo": "sites\/get.md", @@ -22876,7 +22894,7 @@ "x-appwrite": { "method": "update", "group": "sites", - "weight": 486, + "weight": 487, "cookies": false, "type": "", "demo": "sites\/update.md", @@ -23143,7 +23161,7 @@ "x-appwrite": { "method": "delete", "group": "sites", - "weight": 487, + "weight": 488, "cookies": false, "type": "", "demo": "sites\/delete.md", @@ -23206,7 +23224,7 @@ "x-appwrite": { "method": "updateSiteDeployment", "group": "sites", - "weight": 494, + "weight": 495, "cookies": false, "type": "", "demo": "sites\/update-site-deployment.md", @@ -23285,7 +23303,7 @@ "x-appwrite": { "method": "listDeployments", "group": "deployments", - "weight": 493, + "weight": 494, "cookies": false, "type": "", "demo": "sites\/list-deployments.md", @@ -23376,7 +23394,7 @@ "x-appwrite": { "method": "createDeployment", "group": "deployments", - "weight": 489, + "weight": 490, "cookies": false, "type": "upload", "demo": "sites\/create-deployment.md", @@ -23478,7 +23496,7 @@ "x-appwrite": { "method": "createDuplicateDeployment", "group": "deployments", - "weight": 497, + "weight": 498, "cookies": false, "type": "", "demo": "sites\/create-duplicate-deployment.md", @@ -23559,7 +23577,7 @@ "x-appwrite": { "method": "createTemplateDeployment", "group": "deployments", - "weight": 490, + "weight": 491, "cookies": false, "type": "", "demo": "sites\/create-template-deployment.md", @@ -23681,7 +23699,7 @@ "x-appwrite": { "method": "createVcsDeployment", "group": "deployments", - "weight": 491, + "weight": 492, "cookies": false, "type": "", "demo": "sites\/create-vcs-deployment.md", @@ -23780,7 +23798,7 @@ "x-appwrite": { "method": "getDeployment", "group": "deployments", - "weight": 492, + "weight": 493, "cookies": false, "type": "", "demo": "sites\/get-deployment.md", @@ -23844,7 +23862,7 @@ "x-appwrite": { "method": "deleteDeployment", "group": "deployments", - "weight": 495, + "weight": 496, "cookies": false, "type": "", "demo": "sites\/delete-deployment.md", @@ -23913,7 +23931,7 @@ "x-appwrite": { "method": "getDeploymentDownload", "group": "deployments", - "weight": 496, + "weight": 497, "cookies": false, "type": "location", "demo": "sites\/get-deployment-download.md", @@ -24000,7 +24018,7 @@ "x-appwrite": { "method": "updateDeploymentStatus", "group": "deployments", - "weight": 498, + "weight": 499, "cookies": false, "type": "", "demo": "sites\/update-deployment-status.md", @@ -24069,7 +24087,7 @@ "x-appwrite": { "method": "listLogs", "group": "logs", - "weight": 500, + "weight": 501, "cookies": false, "type": "", "demo": "sites\/list-logs.md", @@ -24151,7 +24169,7 @@ "x-appwrite": { "method": "getLog", "group": "logs", - "weight": 499, + "weight": 500, "cookies": false, "type": "", "demo": "sites\/get-log.md", @@ -24217,7 +24235,7 @@ "x-appwrite": { "method": "deleteLog", "group": "logs", - "weight": 501, + "weight": 502, "cookies": false, "type": "", "demo": "sites\/delete-log.md", @@ -24286,7 +24304,7 @@ "x-appwrite": { "method": "listVariables", "group": "variables", - "weight": 504, + "weight": 505, "cookies": false, "type": "", "demo": "sites\/list-variables.md", @@ -24347,7 +24365,7 @@ "x-appwrite": { "method": "createVariable", "group": "variables", - "weight": 502, + "weight": 503, "cookies": false, "type": "", "demo": "sites\/create-variable.md", @@ -24439,7 +24457,7 @@ "x-appwrite": { "method": "getVariable", "group": "variables", - "weight": 503, + "weight": 504, "cookies": false, "type": "", "demo": "sites\/get-variable.md", @@ -24508,7 +24526,7 @@ "x-appwrite": { "method": "updateVariable", "group": "variables", - "weight": 505, + "weight": 506, "cookies": false, "type": "", "demo": "sites\/update-variable.md", @@ -24604,7 +24622,7 @@ "x-appwrite": { "method": "deleteVariable", "group": "variables", - "weight": 506, + "weight": 507, "cookies": false, "type": "", "demo": "sites\/delete-variable.md", @@ -25973,7 +25991,7 @@ "x-appwrite": { "method": "list", "group": "tablesdb", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "demo": "tablesdb\/list.md", @@ -26057,7 +26075,7 @@ "x-appwrite": { "method": "create", "group": "tablesdb", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "demo": "tablesdb\/create.md", @@ -26142,7 +26160,7 @@ "x-appwrite": { "method": "listTransactions", "group": "transactions", - "weight": 445, + "weight": 446, "cookies": false, "type": "", "demo": "tablesdb\/list-transactions.md", @@ -26214,7 +26232,7 @@ "x-appwrite": { "method": "createTransaction", "group": "transactions", - "weight": 441, + "weight": 442, "cookies": false, "type": "", "demo": "tablesdb\/create-transaction.md", @@ -26289,7 +26307,7 @@ "x-appwrite": { "method": "getTransaction", "group": "transactions", - "weight": 442, + "weight": 443, "cookies": false, "type": "", "demo": "tablesdb\/get-transaction.md", @@ -26357,7 +26375,7 @@ "x-appwrite": { "method": "updateTransaction", "group": "transactions", - "weight": 443, + "weight": 444, "cookies": false, "type": "", "demo": "tablesdb\/update-transaction.md", @@ -26441,7 +26459,7 @@ "x-appwrite": { "method": "deleteTransaction", "group": "transactions", - "weight": 444, + "weight": 445, "cookies": false, "type": "", "demo": "tablesdb\/delete-transaction.md", @@ -26511,7 +26529,7 @@ "x-appwrite": { "method": "createOperations", "group": "transactions", - "weight": 446, + "weight": 447, "cookies": false, "type": "", "demo": "tablesdb\/create-operations.md", @@ -26597,7 +26615,7 @@ "x-appwrite": { "method": "get", "group": "tablesdb", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "demo": "tablesdb\/get.md", @@ -26659,7 +26677,7 @@ "x-appwrite": { "method": "update", "group": "tablesdb", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "demo": "tablesdb\/update.md", @@ -26740,7 +26758,7 @@ "x-appwrite": { "method": "delete", "group": "tablesdb", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "demo": "tablesdb\/delete.md", @@ -26802,7 +26820,7 @@ "x-appwrite": { "method": "listTables", "group": "tables", - "weight": 393, + "weight": 394, "cookies": false, "type": "", "demo": "tablesdb\/list-tables.md", @@ -26897,7 +26915,7 @@ "x-appwrite": { "method": "createTable", "group": "tables", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "demo": "tablesdb\/create-table.md", @@ -27027,7 +27045,7 @@ "x-appwrite": { "method": "getTable", "group": "tables", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "demo": "tablesdb\/get-table.md", @@ -27100,7 +27118,7 @@ "x-appwrite": { "method": "updateTable", "group": "tables", - "weight": 391, + "weight": 392, "cookies": false, "type": "", "demo": "tablesdb\/update-table.md", @@ -27208,7 +27226,7 @@ "x-appwrite": { "method": "deleteTable", "group": "tables", - "weight": 392, + "weight": 393, "cookies": false, "type": "", "demo": "tablesdb\/delete-table.md", @@ -27281,7 +27299,7 @@ "x-appwrite": { "method": "listColumns", "group": "columns", - "weight": 398, + "weight": 399, "cookies": false, "type": "", "demo": "tablesdb\/list-columns.md", @@ -27377,7 +27395,7 @@ "x-appwrite": { "method": "createBooleanColumn", "group": "columns", - "weight": 399, + "weight": 400, "cookies": false, "type": "", "demo": "tablesdb\/create-boolean-column.md", @@ -27490,7 +27508,7 @@ "x-appwrite": { "method": "updateBooleanColumn", "group": "columns", - "weight": 400, + "weight": 401, "cookies": false, "type": "", "demo": "tablesdb\/update-boolean-column.md", @@ -27605,7 +27623,7 @@ "x-appwrite": { "method": "createDatetimeColumn", "group": "columns", - "weight": 401, + "weight": 402, "cookies": false, "type": "", "demo": "tablesdb\/create-datetime-column.md", @@ -27718,7 +27736,7 @@ "x-appwrite": { "method": "updateDatetimeColumn", "group": "columns", - "weight": 402, + "weight": 403, "cookies": false, "type": "", "demo": "tablesdb\/update-datetime-column.md", @@ -27833,7 +27851,7 @@ "x-appwrite": { "method": "createEmailColumn", "group": "columns", - "weight": 403, + "weight": 404, "cookies": false, "type": "", "demo": "tablesdb\/create-email-column.md", @@ -27946,7 +27964,7 @@ "x-appwrite": { "method": "updateEmailColumn", "group": "columns", - "weight": 404, + "weight": 405, "cookies": false, "type": "", "demo": "tablesdb\/update-email-column.md", @@ -28061,7 +28079,7 @@ "x-appwrite": { "method": "createEnumColumn", "group": "columns", - "weight": 405, + "weight": 406, "cookies": false, "type": "", "demo": "tablesdb\/create-enum-column.md", @@ -28184,7 +28202,7 @@ "x-appwrite": { "method": "updateEnumColumn", "group": "columns", - "weight": 406, + "weight": 407, "cookies": false, "type": "", "demo": "tablesdb\/update-enum-column.md", @@ -28309,7 +28327,7 @@ "x-appwrite": { "method": "createFloatColumn", "group": "columns", - "weight": 407, + "weight": 408, "cookies": false, "type": "", "demo": "tablesdb\/create-float-column.md", @@ -28436,7 +28454,7 @@ "x-appwrite": { "method": "updateFloatColumn", "group": "columns", - "weight": 408, + "weight": 409, "cookies": false, "type": "", "demo": "tablesdb\/update-float-column.md", @@ -28565,7 +28583,7 @@ "x-appwrite": { "method": "createIntegerColumn", "group": "columns", - "weight": 409, + "weight": 410, "cookies": false, "type": "", "demo": "tablesdb\/create-integer-column.md", @@ -28692,7 +28710,7 @@ "x-appwrite": { "method": "updateIntegerColumn", "group": "columns", - "weight": 410, + "weight": 411, "cookies": false, "type": "", "demo": "tablesdb\/update-integer-column.md", @@ -28821,7 +28839,7 @@ "x-appwrite": { "method": "createIpColumn", "group": "columns", - "weight": 411, + "weight": 412, "cookies": false, "type": "", "demo": "tablesdb\/create-ip-column.md", @@ -28934,7 +28952,7 @@ "x-appwrite": { "method": "updateIpColumn", "group": "columns", - "weight": 412, + "weight": 413, "cookies": false, "type": "", "demo": "tablesdb\/update-ip-column.md", @@ -29049,7 +29067,7 @@ "x-appwrite": { "method": "createLineColumn", "group": "columns", - "weight": 413, + "weight": 414, "cookies": false, "type": "", "demo": "tablesdb\/create-line-column.md", @@ -29156,7 +29174,7 @@ "x-appwrite": { "method": "updateLineColumn", "group": "columns", - "weight": 414, + "weight": 415, "cookies": false, "type": "", "demo": "tablesdb\/update-line-column.md", @@ -29270,7 +29288,7 @@ "x-appwrite": { "method": "createPointColumn", "group": "columns", - "weight": 415, + "weight": 416, "cookies": false, "type": "", "demo": "tablesdb\/create-point-column.md", @@ -29377,7 +29395,7 @@ "x-appwrite": { "method": "updatePointColumn", "group": "columns", - "weight": 416, + "weight": 417, "cookies": false, "type": "", "demo": "tablesdb\/update-point-column.md", @@ -29491,7 +29509,7 @@ "x-appwrite": { "method": "createPolygonColumn", "group": "columns", - "weight": 417, + "weight": 418, "cookies": false, "type": "", "demo": "tablesdb\/create-polygon-column.md", @@ -29598,7 +29616,7 @@ "x-appwrite": { "method": "updatePolygonColumn", "group": "columns", - "weight": 418, + "weight": 419, "cookies": false, "type": "", "demo": "tablesdb\/update-polygon-column.md", @@ -29712,7 +29730,7 @@ "x-appwrite": { "method": "createRelationshipColumn", "group": "columns", - "weight": 419, + "weight": 420, "cookies": false, "type": "", "demo": "tablesdb\/create-relationship-column.md", @@ -29853,7 +29871,7 @@ "x-appwrite": { "method": "createStringColumn", "group": "columns", - "weight": 421, + "weight": 422, "cookies": false, "type": "", "demo": "tablesdb\/create-string-column.md", @@ -29979,7 +29997,7 @@ "x-appwrite": { "method": "updateStringColumn", "group": "columns", - "weight": 422, + "weight": 423, "cookies": false, "type": "", "demo": "tablesdb\/update-string-column.md", @@ -30101,7 +30119,7 @@ "x-appwrite": { "method": "createUrlColumn", "group": "columns", - "weight": 423, + "weight": 424, "cookies": false, "type": "", "demo": "tablesdb\/create-url-column.md", @@ -30214,7 +30232,7 @@ "x-appwrite": { "method": "updateUrlColumn", "group": "columns", - "weight": 424, + "weight": 425, "cookies": false, "type": "", "demo": "tablesdb\/update-url-column.md", @@ -30358,7 +30376,7 @@ "x-appwrite": { "method": "getColumn", "group": "columns", - "weight": 396, + "weight": 397, "cookies": false, "type": "", "demo": "tablesdb\/get-column.md", @@ -30433,7 +30451,7 @@ "x-appwrite": { "method": "deleteColumn", "group": "columns", - "weight": 397, + "weight": 398, "cookies": false, "type": "", "demo": "tablesdb\/delete-column.md", @@ -30515,7 +30533,7 @@ "x-appwrite": { "method": "updateRelationshipColumn", "group": "columns", - "weight": 420, + "weight": 421, "cookies": false, "type": "", "demo": "tablesdb\/update-relationship-column.md", @@ -30625,7 +30643,7 @@ "x-appwrite": { "method": "listIndexes", "group": "indexes", - "weight": 428, + "weight": 429, "cookies": false, "type": "", "demo": "tablesdb\/list-indexes.md", @@ -30719,7 +30737,7 @@ "x-appwrite": { "method": "createIndex", "group": "indexes", - "weight": 425, + "weight": 426, "cookies": false, "type": "", "demo": "tablesdb\/create-index.md", @@ -30859,7 +30877,7 @@ "x-appwrite": { "method": "getIndex", "group": "indexes", - "weight": 426, + "weight": 427, "cookies": false, "type": "", "demo": "tablesdb\/get-index.md", @@ -30934,7 +30952,7 @@ "x-appwrite": { "method": "deleteIndex", "group": "indexes", - "weight": 427, + "weight": 428, "cookies": false, "type": "", "demo": "tablesdb\/delete-index.md", @@ -31014,7 +31032,7 @@ "x-appwrite": { "method": "listRows", "group": "rows", - "weight": 437, + "weight": 438, "cookies": false, "type": "", "demo": "tablesdb\/list-rows.md", @@ -31119,7 +31137,7 @@ "x-appwrite": { "method": "createRow", "group": "rows", - "weight": 429, + "weight": 430, "cookies": false, "type": "", "demo": "tablesdb\/create-row.md", @@ -31305,7 +31323,7 @@ "x-appwrite": { "method": "upsertRows", "group": "rows", - "weight": 434, + "weight": 435, "cookies": false, "type": "", "demo": "tablesdb\/upsert-rows.md", @@ -31437,7 +31455,7 @@ "x-appwrite": { "method": "updateRows", "group": "rows", - "weight": 432, + "weight": 433, "cookies": false, "type": "", "demo": "tablesdb\/update-rows.md", @@ -31541,7 +31559,7 @@ "x-appwrite": { "method": "deleteRows", "group": "rows", - "weight": 436, + "weight": 437, "cookies": false, "type": "", "demo": "tablesdb\/delete-rows.md", @@ -31639,7 +31657,7 @@ "x-appwrite": { "method": "getRow", "group": "rows", - "weight": 430, + "weight": 431, "cookies": false, "type": "", "demo": "tablesdb\/get-row.md", @@ -31743,7 +31761,7 @@ "x-appwrite": { "method": "upsertRow", "group": "rows", - "weight": 433, + "weight": 434, "cookies": false, "type": "", "demo": "tablesdb\/upsert-row.md", @@ -31892,7 +31910,7 @@ "x-appwrite": { "method": "updateRow", "group": "rows", - "weight": 431, + "weight": 432, "cookies": false, "type": "", "demo": "tablesdb\/update-row.md", @@ -32003,7 +32021,7 @@ "x-appwrite": { "method": "deleteRow", "group": "rows", - "weight": 435, + "weight": 436, "cookies": false, "type": "", "demo": "tablesdb\/delete-row.md", @@ -32105,7 +32123,7 @@ "x-appwrite": { "method": "decrementRowColumn", "group": "rows", - "weight": 440, + "weight": 441, "cookies": false, "type": "", "demo": "tablesdb\/decrement-row-column.md", @@ -32227,7 +32245,7 @@ "x-appwrite": { "method": "incrementRowColumn", "group": "rows", - "weight": 439, + "weight": 440, "cookies": false, "type": "", "demo": "tablesdb\/increment-row-column.md", @@ -33440,7 +33458,7 @@ "x-appwrite": { "method": "list", "group": "files", - "weight": 523, + "weight": 524, "cookies": false, "type": "", "demo": "tokens\/list.md", @@ -33530,7 +33548,7 @@ "x-appwrite": { "method": "createFileToken", "group": "files", - "weight": 521, + "weight": 522, "cookies": false, "type": "", "demo": "tokens\/create-file-token.md", @@ -33615,7 +33633,7 @@ "x-appwrite": { "method": "get", "group": "tokens", - "weight": 522, + "weight": 523, "cookies": false, "type": "", "demo": "tokens\/get.md", @@ -33676,7 +33694,7 @@ "x-appwrite": { "method": "update", "group": "tokens", - "weight": 524, + "weight": 525, "cookies": false, "type": "", "demo": "tokens\/update.md", @@ -33748,7 +33766,7 @@ "x-appwrite": { "method": "delete", "group": "tokens", - "weight": 525, + "weight": 526, "cookies": false, "type": "", "demo": "tokens\/delete.md", diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 7ff3a981d2..b28ff4602d 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -68,6 +68,7 @@ use Utopia\Validator; use Utopia\Validator\ArrayList; use Utopia\Validator\Assoc; use Utopia\Validator\Boolean; +use Utopia\Validator\Range; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; @@ -1634,9 +1635,6 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') $failureRedirect(Exception::USER_UNAUTHORIZED, 'OAuth provider failed to return email.'); } - /** - * Is verified is not used yet, since we don't know after an account is created anymore if it was verified or not. - */ $isVerified = $oauth2->isEmailVerified($accessToken); $identity = $dbForProject->findOne('identities', [ @@ -1648,16 +1646,32 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') $user = $dbForProject->getDocument('users', $identity->getAttribute('userId')); } - // If user is not found, check if there is an identity with the same provider user ID + // If user is not found, check if there is a user with the same email if ($user === false || $user->isEmpty()) { $userWithEmail = $dbForProject->findOne('users', [ Query::equal('email', [$email]), ]); if (!$userWithEmail->isEmpty()) { + if (!$isVerified) { + $failureRedirect(Exception::GENERAL_BAD_REQUEST); + } $user->setAttributes($userWithEmail->getArrayCopy()); } } + // If user is not found, check if there is an identity with the same email + if ($user === false || $user->isEmpty()) { + $identityWithMatchingEmail = $dbForProject->findOne('identities', [ + Query::equal('providerEmail', [$email]), + ]); + if (!$identityWithMatchingEmail->isEmpty()) { + if (!$isVerified) { + $failureRedirect(Exception::GENERAL_BAD_REQUEST); + } + $user->setAttributes($dbForProject->getDocument('users', $identityWithMatchingEmail->getAttribute('userId'))->getArrayCopy()); + } + } + if ($user === false || $user->isEmpty()) { // Last option -> create the user $limit = $project->getAttribute('auths', [])['limit'] ?? 0; @@ -1669,14 +1683,6 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') } } - // Makes sure this email is not already used in another identity - $identityWithMatchingEmail = $dbForProject->findOne('identities', [ - Query::equal('providerEmail', [$email]), - ]); - if (!$identityWithMatchingEmail->isEmpty()) { - $failureRedirect(Exception::GENERAL_BAD_REQUEST); /** Return a generic bad request to prevent exposing existing accounts */ - } - try { $emailCanonical = new Email($email); } catch (Throwable) { @@ -1730,7 +1736,6 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') 'providerType' => MESSAGE_TYPE_EMAIL, 'identifier' => $email, ])); - } catch (Duplicate) { $failureRedirect(Exception::USER_ALREADY_EXISTS); } @@ -2949,20 +2954,21 @@ App::post('/v1/account/jwts') ], contentType: ContentType::JSON, )) + ->param('duration', 900, new Range(0, 3600), 'Time in seconds before JWT expires. Default duration is 900 seconds, and maximum is 3600 seconds.', true) ->label('abuse-limit', 100) ->label('abuse-key', 'url:{url},userId:{userId}') ->inject('response') ->inject('user') ->inject('store') ->inject('proofForToken') - ->action(function (Response $response, User $user, Store $store, ProofsToken $proofForToken) { + ->action(function (int $duration, Response $response, User $user, Store $store, ProofsToken $proofForToken) { $sessionId = $user->sessionVerify($store->getProperty('secret', ''), $proofForToken); if (!$sessionId) { throw new Exception(Exception::USER_SESSION_NOT_FOUND); } - $jwt = new JWT(System::getEnv('_APP_OPENSSL_KEY_V1'), 'HS256', 900, 0); + $jwt = new JWT(System::getEnv('_APP_OPENSSL_KEY_V1'), 'HS256', $duration, 0); $response ->setStatusCode(Response::STATUS_CODE_CREATED) diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 37f7fdbc8b..c4d703d744 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -294,7 +294,7 @@ App::post('/v1/projects') // Hook allowing instant project mirroring during migration // Outside of migration, hook is not registered and has no effect - $hooks->trigger('afterProjectCreation', [ $project, $pools, $cache ]); + $hooks->trigger('afterProjectCreation', [$project, $pools, $cache]); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -2079,6 +2079,7 @@ App::patch('/v1/projects/:projectId/smtp') if ($enabled) { $mail = new PHPMailer(true); $mail->isSMTP(); + $mail->SMTPAuth = (!empty($username) && !empty($password)); $mail->Username = $username; $mail->Password = $password; $mail->Host = $host; @@ -2094,7 +2095,7 @@ App::patch('/v1/projects/:projectId/smtp') throw new Exception('Connection is not valid.'); } } catch (Throwable $error) { - throw new Exception(Exception::PROJECT_SMTP_CONFIG_INVALID, 'Could not connect to SMTP server: ' . $error->getMessage()); + throw new Exception(Exception::PROJECT_SMTP_CONFIG_INVALID, $error->getMessage()); } } @@ -2665,7 +2666,7 @@ App::patch('/v1/projects/:projectId/auth/session-invalidation') $auths = $project->getAttribute('auths', []); $auths['invalidateSessions'] = $enabled; $dbForPlatform->updateDocument('projects', $project->getId(), $project - ->setAttribute('auths', $auths)); + ->setAttribute('auths', $auths)); $response->dynamic($project, Response::MODEL_PROJECT); }); diff --git a/app/controllers/mock.php b/app/controllers/mock.php index d78bb61481..6f092a5d19 100644 --- a/app/controllers/mock.php +++ b/app/controllers/mock.php @@ -117,6 +117,28 @@ App::get('/v1/mock/tests/general/oauth2/user') 'id' => 1, 'name' => 'User Name', 'email' => 'useroauth@localhost.test', + 'verified' => true, + ]); + }); + +App::get('/v1/mock/tests/general/oauth2/user-unverified') + ->desc('OAuth2 User Unverified') + ->groups(['mock']) + ->label('scope', 'public') + ->label('docs', false) + ->param('token', '', new Text(100), 'OAuth2 Access Token.') + ->inject('response') + ->action(function (string $token, Response $response) { + + if ($token != '123456') { + throw new Exception(Exception::GENERAL_MOCK, 'Invalid token'); + } + + $response->json([ + 'id' => 2, + 'name' => 'User Name Unverified', + 'email' => 'useroauthunverified@localhost.test', + 'verified' => false, ]); }); diff --git a/app/init/resources.php b/app/init/resources.php index 672fcd8b4e..30717141f6 100644 --- a/app/init/resources.php +++ b/app/init/resources.php @@ -275,6 +275,7 @@ App::setResource('cors', fn (array $allowedHostnames) => new Cors( 'X-Appwrite-ID', 'X-Appwrite-Timestamp', 'X-Appwrite-Session', + 'X-Appwrite-Platform', // for `$platform` injection and SDK generator // SDK generator 'X-SDK-Version', 'X-SDK-Name', diff --git a/docker-compose.yml b/docker-compose.yml index 70650b0e57..4adbd096ab 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1171,6 +1171,9 @@ services: - "traefik.http.routers.appwrite_maildev_https.rule=Host(`mail.localhost`)" - "traefik.http.routers.appwrite_maildev_https.service=appwrite_maildev" - "traefik.http.routers.appwrite_maildev_https.tls=true" + environment: + - MAILDEV_INCOMING_USER=${_APP_SMTP_USERNAME} + - MAILDEV_INCOMING_PASS=${_APP_SMTP_PASSWORD} request-catcher-webhook: # used mainly for dev tests (mock HTTP webhook) image: appwrite/requestcatcher:1.0.0 diff --git a/docs/sdks/dart/CHANGELOG.md b/docs/sdks/dart/CHANGELOG.md index 49d45becaf..b370394c8b 100644 --- a/docs/sdks/dart/CHANGELOG.md +++ b/docs/sdks/dart/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 20.1.0 + +* Added ability to create columns and indexes synchronously while creating a table + ## 20.0.0 * Rename `VCSDeploymentType` enum to `VCSReferenceType` diff --git a/docs/sdks/dotnet/CHANGELOG.md b/docs/sdks/dotnet/CHANGELOG.md index eabf40dac0..092bfc1ec3 100644 --- a/docs/sdks/dotnet/CHANGELOG.md +++ b/docs/sdks/dotnet/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 0.24.0 + +* Added ability to create columns and indexes synchronously while creating a table + ## 0.23.0 * Rename `VCSDeploymentType` enum to `VCSReferenceType` diff --git a/docs/sdks/go/CHANGELOG.md b/docs/sdks/go/CHANGELOG.md index c93c431eb7..f177f1f9ac 100644 --- a/docs/sdks/go/CHANGELOG.md +++ b/docs/sdks/go/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## v0.16.0 + +* Added ability to create columns and indexes synchronously while creating a table + ## v0.15.0 * Rename `VCSDeploymentType` enum to `VCSReferenceType` diff --git a/docs/sdks/kotlin/CHANGELOG.md b/docs/sdks/kotlin/CHANGELOG.md index 07e9d9647f..a850801431 100644 --- a/docs/sdks/kotlin/CHANGELOG.md +++ b/docs/sdks/kotlin/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 13.1.0 + +* Added ability to create columns and indexes synchronously while creating a table + ## 13.0.0 * Rename `VCSDeploymentType` enum to `VCSReferenceType` diff --git a/docs/sdks/nodejs/CHANGELOG.md b/docs/sdks/nodejs/CHANGELOG.md index 2811a060f4..da425adfc5 100644 --- a/docs/sdks/nodejs/CHANGELOG.md +++ b/docs/sdks/nodejs/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 21.1.0 + +* Added ability to create columns and indexes synchronously while creating a table + ## 21.0.0 * Rename `VCSDeploymentType` enum to `VCSReferenceType` diff --git a/docs/sdks/php/CHANGELOG.md b/docs/sdks/php/CHANGELOG.md index 1ffcff2a6e..b94ebcc753 100644 --- a/docs/sdks/php/CHANGELOG.md +++ b/docs/sdks/php/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 19.1.0 + +* Added ability to create columns and indexes synchronously while creating a table + ## 19.0.0 * Rename `VCSDeploymentType` enum to `VCSReferenceType` diff --git a/docs/sdks/python/CHANGELOG.md b/docs/sdks/python/CHANGELOG.md index ff2ac85322..160d5aa86c 100644 --- a/docs/sdks/python/CHANGELOG.md +++ b/docs/sdks/python/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 14.1.0 + +* Added ability to create columns and indexes synchronously while creating a table + ## 14.0.0 * Rename `VCSDeploymentType` enum to `VCSReferenceType` diff --git a/docs/sdks/ruby/CHANGELOG.md b/docs/sdks/ruby/CHANGELOG.md index 272f9b6631..61856a150b 100644 --- a/docs/sdks/ruby/CHANGELOG.md +++ b/docs/sdks/ruby/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 20.1.0 + +* Added ability to create columns and indexes synchronously while creating a table + ## 20.0.0 * Rename `VCSDeploymentType` enum to `VCSReferenceType` diff --git a/docs/sdks/swift/CHANGELOG.md b/docs/sdks/swift/CHANGELOG.md index 22ae4719a3..4be643592d 100644 --- a/docs/sdks/swift/CHANGELOG.md +++ b/docs/sdks/swift/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 14.1.0 + +* Added ability to create columns and indexes synchronously while creating a table + ## 14.0.0 * Rename `VCSDeploymentType` enum to `VCSReferenceType` diff --git a/src/Appwrite/Auth/OAuth2/Mock.php b/src/Appwrite/Auth/OAuth2/Mock.php index 61ce41d1b7..8bbf3647a1 100644 --- a/src/Appwrite/Auth/OAuth2/Mock.php +++ b/src/Appwrite/Auth/OAuth2/Mock.php @@ -130,7 +130,9 @@ class Mock extends OAuth2 */ public function isEmailVerified(string $accessToken): bool { - return true; + $user = $this->getUser($accessToken); + + return $user['verified'] ?? true; } /** diff --git a/src/Appwrite/Auth/OAuth2/MockUnverified.php b/src/Appwrite/Auth/OAuth2/MockUnverified.php new file mode 100644 index 0000000000..93bea02416 --- /dev/null +++ b/src/Appwrite/Auth/OAuth2/MockUnverified.php @@ -0,0 +1,30 @@ +user)) { + $user = $this->request('GET', 'http://localhost/' . $this->version . '/mock/tests/general/oauth2/user-unverified?token=' . \urlencode($accessToken)); + + $this->user = \json_decode($user, true); + } + + return $this->user; + } +} diff --git a/src/Appwrite/Platform/Action.php b/src/Appwrite/Platform/Action.php index 5699a67ff2..3db0c74d45 100644 --- a/src/Appwrite/Platform/Action.php +++ b/src/Appwrite/Platform/Action.php @@ -107,9 +107,11 @@ class Action extends UtopiaAction } } - public function disableSubqueries() + public function disableSubqueries(array $filters = []): void { - $filters = $this->filters; + if (empty($filters)) { + $filters = $this->filters; + } foreach ($filters as $filter) { Database::addFilter( @@ -189,6 +191,11 @@ class Action extends UtopiaAction } } + // found a wildcard, return! + if (\in_array('*', $attributes)) { + return; + } + $responseModel = $response->getModel($model); foreach ($responseModel->getRules() as $ruleName => $rule) { if (\str_starts_with($ruleName, '$')) { diff --git a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php index d93b0d29c3..724f40f00e 100644 --- a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php +++ b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php @@ -80,7 +80,7 @@ class Create extends Action ->param('permissions', null, new Nullable(new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE)), 'An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).', true) ->param('documentSecurity', false, new Boolean(true), '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).', true) ->param('enabled', true, new Boolean(), '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.', true) - ->param('attributes', [], new ArrayList(new JSON(), APP_LIMIT_ARRAY_PARAMS_SIZE), '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.', true) + ->param('attributes', [], new ArrayList(new JSON(), APP_LIMIT_ARRAY_PARAMS_SIZE), '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.', true) ->param('indexes', [], new ArrayList(new JSON(), APP_LIMIT_ARRAY_PARAMS_SIZE), '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).', true) ->inject('response') ->inject('dbForProject') diff --git a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Create.php b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Create.php index 9332453eea..92bc329b16 100644 --- a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Create.php +++ b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Create.php @@ -34,7 +34,7 @@ class Create extends Action ->setHttpPath('/v1/projects/:projectId/dev-keys') ->desc('Create dev key') ->groups(['api', 'projects']) - ->label('scope', 'projects.write') + ->label('scope', 'devKeys.write') ->label('sdk', new Method( namespace: 'projects', group: 'devKeys', diff --git a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Delete.php b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Delete.php index 2bfea6c55b..58ca0759e6 100644 --- a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Delete.php +++ b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Delete.php @@ -28,7 +28,7 @@ class Delete extends Action ->setHttpPath('/v1/projects/:projectId/dev-keys/:keyId') ->desc('Delete dev key') ->groups(['api', 'projects']) - ->label('scope', 'projects.write') + ->label('scope', 'devKeys.write') ->label('sdk', new Method( namespace: 'projects', group: 'devKeys', diff --git a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Get.php b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Get.php index 29cda90f66..6245b5b2dc 100644 --- a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Get.php +++ b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Get.php @@ -28,7 +28,7 @@ class Get extends Action ->setHttpPath('/v1/projects/:projectId/dev-keys/:keyId') ->desc('Get dev key') ->groups(['api', 'projects']) - ->label('scope', 'projects.read') + ->label('scope', 'devKeys.read') ->label('sdk', new Method( namespace: 'projects', group: 'devKeys', diff --git a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Update.php b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Update.php index b13bc535dd..fbd35d0995 100644 --- a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Update.php +++ b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Update.php @@ -29,7 +29,7 @@ class Update extends Action ->setHttpPath('/v1/projects/:projectId/dev-keys/:keyId') ->desc('Update dev key') ->groups(['api', 'projects']) - ->label('scope', 'projects.write') + ->label('scope', 'devKeys.write') ->label('sdk', new Method( namespace: 'projects', group: 'devKeys', diff --git a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/XList.php b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/XList.php index 209387018b..0229fd845d 100644 --- a/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/XList.php +++ b/src/Appwrite/Platform/Modules/Projects/Http/DevKeys/XList.php @@ -32,7 +32,7 @@ class XList extends Action ->setHttpPath('/v1/projects/:projectId/dev-keys') ->desc('List dev keys') ->groups(['api', 'projects']) - ->label('scope', 'projects.read') + ->label('scope', 'devKeys.read') ->label('sdk', new Method( namespace: 'projects', group: 'devKeys', diff --git a/src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php b/src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php index 692b467282..32318dd189 100644 --- a/src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php +++ b/src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php @@ -3,19 +3,21 @@ namespace Appwrite\Platform\Modules\Projects\Http\Projects; use Appwrite\Extend\Exception; +use Appwrite\Platform\Action; use Appwrite\SDK\AuthType; use Appwrite\SDK\ContentType; use Appwrite\SDK\Method; use Appwrite\SDK\Response as SDKResponse; use Appwrite\Utopia\Database\Validator\Queries\Projects; +use Appwrite\Utopia\Request; use Appwrite\Utopia\Response; +use Utopia\Config\Config; use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\Exception\Order; use Utopia\Database\Exception\Query as QueryException; use Utopia\Database\Query; use Utopia\Database\Validator\Query\Cursor; -use Utopia\Platform\Action; use Utopia\Platform\Scope\HTTP; use Utopia\Validator; use Utopia\Validator\Boolean; @@ -24,6 +26,10 @@ use Utopia\Validator\Text; class XList extends Action { use HTTP; + + // cached mapping of columns to their subQuery filters + private static ?array $attributeToSubQueryFilters = null; + public static function getName() { return 'listProjects'; @@ -61,12 +67,13 @@ class XList extends Action ->param('queries', [], $this->getQueriesValidator(), 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' queries are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long. You may filter on the following attributes: ' . implode(', ', Projects::ALLOWED_ATTRIBUTES), true) ->param('search', '', new Text(256), 'Search term to filter your list results. Max length: 256 chars.', true) ->param('total', true, new Boolean(true), 'When set to false, the total count returned will be 0 and will not be calculated.', true) + ->inject('request') ->inject('response') ->inject('dbForPlatform') ->callback($this->action(...)); } - public function action(array $queries, string $search, bool $includeTotal, Response $response, Database $dbForPlatform) + public function action(array $queries, string $search, bool $includeTotal, Request $request, Response $response, Database $dbForPlatform) { try { $queries = Query::parseQueries($queries); @@ -103,16 +110,89 @@ class XList extends Action $cursor->setValue($cursorDocument); } - $filterQueries = Query::groupByType($queries)['filters']; try { - $projects = $dbForPlatform->find('projects', $queries); + $selectQueries = Query::groupByType($queries)['selections'] ?? []; + $filterQueries = Query::groupByType($queries)['filters']; + + $projects = $this->find($dbForPlatform, $queries, $selectQueries); $total = $includeTotal ? $dbForPlatform->count('projects', $filterQueries, APP_LIMIT_COUNT) : 0; } catch (Order $e) { throw new Exception(Exception::DATABASE_QUERY_ORDER_NULL, "The order attribute '{$e->getAttribute()}' had a null value. Cursor pagination requires all documents order attribute values are non-null."); } + + $this->applySelectQueries($request, $response, Response::MODEL_PROJECT); $response->dynamic(new Document([ 'projects' => $projects, 'total' => $total, ]), Response::MODEL_PROJECT_LIST); } + + // Build mapping of columns to their subQuery filters + private static function getAttributeToSubQueryFilters(): array + { + if (self::$attributeToSubQueryFilters !== null) { + return self::$attributeToSubQueryFilters; + } + + self::$attributeToSubQueryFilters = []; + + $collections = Config::getParam('collections', []); + $projectAttributes = $collections['platform']['projects']['attributes'] ?? []; + + foreach ($projectAttributes as $attribute) { + $attributeId = $attribute['$id'] ?? null; + $filters = $attribute['filters'] ?? []; + + if ($attributeId === null || empty($filters)) { + continue; + } + + // extract only subQuery filters + $subQueryFilters = \array_filter($filters, function ($filter) { + return \str_starts_with($filter, 'subQuery'); + }); + + if (!empty($subQueryFilters)) { + self::$attributeToSubQueryFilters[$attributeId] = \array_values($subQueryFilters); + } + } + + return self::$attributeToSubQueryFilters; + } + + private function find(Database $dbForPlatform, array $queries, array $selectQueries): array + { + if (empty($selectQueries)) { + return $dbForPlatform->find('projects', $queries); + } + + $selectedAttributes = []; + foreach ($selectQueries as $query) { + foreach ($query->getValues() as $value) { + $selectedAttributes[] = $value; + } + } + + if (\in_array('*', $selectedAttributes)) { + return $dbForPlatform->find('projects', $queries); + } + + $filtersToSkipMap = []; + $selectedAttributesMap = \array_flip($selectedAttributes); + $attributeToSubQueryFilters = self::getAttributeToSubQueryFilters(); + + foreach ($attributeToSubQueryFilters as $attributeName => $subQueryFilters) { + if (!isset($selectedAttributesMap[$attributeName])) { + foreach ($subQueryFilters as $filter) { + $filtersToSkipMap[$filter] = true; + } + } + } + + $filtersToSkip = \array_keys($filtersToSkipMap); + + return empty($filtersToSkip) + ? $dbForPlatform->find('projects', $queries) + : $dbForPlatform->skipFilters(fn () => $dbForPlatform->find('projects', $queries), $filtersToSkip); + } } diff --git a/src/Appwrite/Platform/Tasks/SDKs.php b/src/Appwrite/Platform/Tasks/SDKs.php index 70def20328..798f40ebe7 100644 --- a/src/Appwrite/Platform/Tasks/SDKs.php +++ b/src/Appwrite/Platform/Tasks/SDKs.php @@ -55,7 +55,7 @@ class SDKs extends Action public function action(?string $selectedPlatform, ?string $selectedSDK, ?string $version, ?string $git, ?string $production, ?string $message, ?string $release, ?string $commit, ?string $sdks): void { if (!$sdks) { - $selectedPlatform ??= Console::confirm('Choose Platform ("' . APP_SDK_PLATFORM_CLIENT . '", "' . APP_SDK_PLATFORM_SERVER . '", "' . APP_SDK_PLATFORM_CONSOLE . '" or "*" for all):'); + $selectedPlatform ??= Console::confirm('Choose Platform ("' . implode('", "', Specs::getPlatforms()) . '" or "*" for all):'); $selectedSDK ??= \strtolower(Console::confirm('Choose SDK ("*" for all):')); } else { $sdks = explode(',', $sdks); diff --git a/src/Appwrite/Platform/Tasks/Specs.php b/src/Appwrite/Platform/Tasks/Specs.php index 7869c14471..96f29e08ad 100644 --- a/src/Appwrite/Platform/Tasks/Specs.php +++ b/src/Appwrite/Platform/Tasks/Specs.php @@ -66,7 +66,7 @@ class Specs extends Action * * @return array */ - protected function getPlatforms(): array + public static function getPlatforms(): array { return [ APP_SDK_PLATFORM_CLIENT, @@ -239,7 +239,7 @@ class Specs extends Action App::setResource('dbForPlatform', fn () => new Database(new MySQL(''), new Cache(new None()))); App::setResource('dbForProject', fn () => new Database(new MySQL(''), new Cache(new None()))); - $platforms = $this->getPlatforms(); + $platforms = self::getPlatforms(); $authCounts = $this->getAuthCounts(); $keys = $this->getKeys(); diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Projects.php b/src/Appwrite/Utopia/Database/Validator/Queries/Projects.php index 5a0befb739..d179703274 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries/Projects.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries/Projects.php @@ -17,4 +17,9 @@ class Projects extends Base { parent::__construct('projects', self::ALLOWED_ATTRIBUTES); } + + public function isSelectQueryAllowed(): bool + { + return true; + } } diff --git a/src/Appwrite/Utopia/Response/Model/Project.php b/src/Appwrite/Utopia/Response/Model/Project.php index 65f9f7685b..7641e96090 100644 --- a/src/Appwrite/Utopia/Response/Model/Project.php +++ b/src/Appwrite/Utopia/Response/Model/Project.php @@ -341,6 +341,20 @@ class Project extends Model */ public function filter(Document $document): Document { + $this->expandSmtpFields($document); + $this->expandServiceFields($document); + $this->expandAuthFields($document); + $this->expandOAuthProviders($document); + + return $document; + } + + private function expandSmtpFields(Document $document): void + { + if (!$document->isSet('smtp')) { + return; + } + // SMTP $smtp = $document->getAttribute('smtp', []); $document->setAttribute('smtpEnabled', $smtp['enabled'] ?? false); @@ -352,8 +366,14 @@ class Project extends Model $document->setAttribute('smtpUsername', $smtp['username'] ?? ''); $document->setAttribute('smtpPassword', $smtp['password'] ?? ''); $document->setAttribute('smtpSecure', $smtp['secure'] ?? ''); + } + + private function expandServiceFields(Document $document): void + { + if (!$document->isSet('services')) { + return; + } - // Services $values = $document->getAttribute('services', []); $services = Config::getParam('services', []); @@ -365,8 +385,14 @@ class Project extends Model $value = $values[$key] ?? true; $document->setAttribute('serviceStatusFor' . ucfirst($key), $value); } + } + + private function expandAuthFields(Document $document): void + { + if (!$document->isSet('auths')) { + return; + } - // Auth $authValues = $document->getAttribute('auths', []); $auth = Config::getParam('auth', []); @@ -383,13 +409,19 @@ class Project extends Model $document->setAttribute('authMembershipsMfa', $authValues['membershipsMfa'] ?? true); $document->setAttribute('authInvalidateSessions', $authValues['invalidateSessions'] ?? false); - foreach ($auth as $index => $method) { + foreach ($auth as $method) { $key = $method['key']; $value = $authValues[$key] ?? true; $document->setAttribute('auth' . ucfirst($key), $value); } + } + + private function expandOAuthProviders(Document $document): void + { + if (!$document->isSet('oAuthProviders')) { + return; + } - // OAuth Providers $providers = Config::getParam('oAuthProviders', []); $providerValues = $document->getAttribute('oAuthProviders', []); $projectProviders = []; @@ -410,7 +442,5 @@ class Project extends Model } $document->setAttribute('oAuthProviders', $projectProviders); - - return $document; } } diff --git a/tests/e2e/General/HTTPTest.php b/tests/e2e/General/HTTPTest.php index 6323500136..4012745682 100644 --- a/tests/e2e/General/HTTPTest.php +++ b/tests/e2e/General/HTTPTest.php @@ -31,7 +31,7 @@ class HTTPTest extends Scope $this->assertEquals(204, $response['headers']['status-code']); $this->assertEquals('Appwrite', $response['headers']['server']); $this->assertEquals('GET, POST, PUT, PATCH, DELETE', $response['headers']['access-control-allow-methods']); - $this->assertEquals('Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent', $response['headers']['access-control-allow-headers']); + $this->assertEquals('Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-Appwrite-Platform, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent', $response['headers']['access-control-allow-headers']); $this->assertEquals('X-Appwrite-Session, X-Fallback-Cookies', $response['headers']['access-control-expose-headers']); $this->assertEquals('http://localhost', $response['headers']['access-control-allow-origin']); $this->assertEquals('true', $response['headers']['access-control-allow-credentials']); diff --git a/tests/e2e/Scopes/ProjectCustom.php b/tests/e2e/Scopes/ProjectCustom.php index c2b4896814..52c53016d6 100644 --- a/tests/e2e/Scopes/ProjectCustom.php +++ b/tests/e2e/Scopes/ProjectCustom.php @@ -161,9 +161,9 @@ trait ProjectCustom 'senderEmail' => 'mailer@appwrite.io', 'senderName' => 'Mailer', 'host' => 'maildev', - 'port' => 1025, - 'username' => '', - 'password' => '', + 'port' => intval(System::getEnv('_APP_SMTP_PORT', "1025")), + 'username' => System::getEnv('_APP_SMTP_USERNAME', 'user'), + 'password' => System::getEnv('_APP_SMTP_PASSWORD', 'password'), ]); $project = [ diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index 457799f991..d80ab47b9d 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -1887,6 +1887,57 @@ class AccountCustomClientTest extends Scope $this->assertEquals(401, $response['headers']['status-code']); + // Test JWT with custom duration + $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ]), [ + 'email' => $email, + 'password' => $password, + ]); + + $this->assertEquals(201, $response['headers']['status-code']); + + $session = $response['cookies']['a_session_' . $this->getProject()['$id']]; + + $response = $this->client->call(Client::METHOD_POST, '/account/jwt', array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'cookie' => 'a_session_' . $this->getProject()['$id'] . '=' . $session, + ]), [ + 'duration' => 5 + ]); + + $this->assertEquals(201, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']['jwt']); + + $jwt = $response['body']['jwt']; + + // Ensure JWT works before expiration + $response = $this->client->call(Client::METHOD_GET, '/account', array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-jwt' => $jwt, + ])); + + $this->assertEquals(200, $response['headers']['status-code']); + + // Wait for JWT to expire + \sleep(6); + + // Ensure JWT no longer works after expiration + $response = $this->client->call(Client::METHOD_GET, '/account', array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-jwt' => $jwt, + ])); + + $this->assertEquals(401, $response['headers']['status-code']); + return []; } @@ -2183,6 +2234,157 @@ class AccountCustomClientTest extends Scope $this->assertEquals('tuvwxyz', $response['body']['providerRefreshToken']); $this->assertNotEquals($initialExpiry, $response['body']['providerAccessTokenExpiry']); + // Clean up - delete the user + $response = $this->client->call(Client::METHOD_DELETE, '/users/' . $userId, array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ])); + + $this->assertEquals(204, $response['headers']['status-code']); + + return []; + } + + public function testOAuthUnverifiedEmailCannotLinkToExistingAccount() + { + $provider = 'mock-unverified'; + $appId = '1'; + $secret = '123456'; + + // First, create a user with the same email that the unverified OAuth will try to use + $email = 'useroauthunverified@localhost.test'; + $password = 'password'; + + $response = $this->client->call(Client::METHOD_POST, '/account', [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], [ + 'userId' => ID::unique(), + 'email' => $email, + 'password' => $password, + ]); + + $this->assertEquals(201, $response['headers']['status-code']); + $existingUserId = $response['body']['$id']; + + // Enable the mock-unverified provider + $response = $this->client->call(Client::METHOD_PATCH, '/projects/' . $this->getProject()['$id'] . '/oauth2', array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => 'console', + 'cookie' => 'a_session_console=' . $this->getRoot()['session'], + ]), [ + 'provider' => $provider, + 'appId' => $appId, + 'secret' => $secret, + 'enabled' => true, + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + + // Attempt OAuth login with unverified email - should fail because existing user has same email + $response = $this->client->call(Client::METHOD_GET, '/account/sessions/oauth2/' . $provider, array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ]), [ + 'success' => 'http://localhost/v1/mock/tests/general/oauth2/success', + 'failure' => 'http://localhost/v1/mock/tests/general/oauth2/failure', + ]); + + $this->assertEquals(400, $response['headers']['status-code']); + $this->assertEquals('failure', $response['body']['result']); + + // Clean up - delete the user + $response = $this->client->call(Client::METHOD_DELETE, '/users/' . $existingUserId, array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ])); + + $this->assertEquals(204, $response['headers']['status-code']); + + return []; + } + + public function testOAuthVerifiedEmailCanLinkToExistingAccount() + { + $provider = 'mock'; + $appId = '1'; + $secret = '123456'; + $email = 'useroauth@localhost.test'; + + // Create a user with the same email that the verified OAuth will try to use + $response = $this->client->call(Client::METHOD_POST, '/account', [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], [ + 'userId' => ID::unique(), + 'email' => $email, + 'password' => 'password', + ]); + + $this->assertEquals(201, $response['headers']['status-code']); + $existingUserId = $response['body']['$id']; + + // Enable the mock provider + $response = $this->client->call(Client::METHOD_PATCH, '/projects/' . $this->getProject()['$id'] . '/oauth2', array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => 'console', + 'cookie' => 'a_session_console=' . $this->getRoot()['session'], + ]), [ + 'provider' => $provider, + 'appId' => $appId, + 'secret' => $secret, + 'enabled' => true, + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + + // Attempt OAuth login with verified email - should succeed and link to existing account + $response = $this->client->call(Client::METHOD_GET, '/account/sessions/oauth2/' . $provider, array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ]), [ + 'success' => 'http://localhost/v1/mock/tests/general/oauth2/success', + 'failure' => 'http://localhost/v1/mock/tests/general/oauth2/failure', + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals('success', $response['body']['result']); + + // Verify the OAuth identity was linked to the existing user + $sessionCookieKey = 'a_session_' . $this->getProject()['$id']; + $session = $response['cookies'][$sessionCookieKey]; + + $response = $this->client->call(Client::METHOD_GET, '/account', array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'cookie' => 'a_session_' . $this->getProject()['$id'] . '=' . $session, + ])); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals($existingUserId, $response['body']['$id']); + $this->assertEquals($email, $response['body']['email']); + + // Clean up - delete the user + $response = $this->client->call(Client::METHOD_DELETE, '/users/' . $existingUserId, array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ])); + + $this->assertEquals(204, $response['headers']['status-code']); + return []; } diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index 9526c5a4da..769d3a4c85 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -23,9 +23,9 @@ class ProjectsConsoleClientTest extends Scope use Async; /** - * @group devKeys * @group smtpAndTemplates - * @group projectsCRUD */ + * @group projectsCRUD + */ public function testCreateProject(): array { /** @@ -257,11 +257,11 @@ class ProjectsConsoleClientTest extends Scope 'search' => $id ])); - $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals($response['body']['total'], 3); + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(4, $response['body']['total']); $this->assertIsArray($response['body']['projects']); - $this->assertCount(3, $response['body']['projects']); - $this->assertEquals($response['body']['projects'][0]['name'], 'Project Test'); + $this->assertCount(4, $response['body']['projects']); + $this->assertEquals('Project Test', $response['body']['projects'][0]['name']); $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ 'content-type' => 'application/json', @@ -271,9 +271,9 @@ class ProjectsConsoleClientTest extends Scope ])); $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals(3, $response['body']['total']); + $this->assertEquals(4, $response['body']['total']); $this->assertIsArray($response['body']['projects']); - $this->assertCount(3, $response['body']['projects']); + $this->assertCount(4, $response['body']['projects']); $this->assertEquals($response['body']['projects'][0]['$id'], $data['projectId']); /** @@ -348,8 +348,8 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']); - $this->assertCount(1, $response['body']['projects']); - $this->assertEquals('Project Test 2', $response['body']['projects'][0]['name']); + $this->assertCount(2, $response['body']['projects']); + $this->assertEquals('Team 1 Project', $response['body']['projects'][0]['name']); $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ 'content-type' => 'application/json', @@ -376,7 +376,7 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']); - $this->assertCount(4, $response['body']['projects']); + $this->assertCount(5, $response['body']['projects']); $this->assertEquals('Project Test 2', $response['body']['projects'][0]['name']); $this->assertEquals('Team 1 Project', $response['body']['projects'][1]['name']); @@ -387,9 +387,9 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']); - $this->assertCount(4, $response['body']['projects']); + $this->assertCount(5, $response['body']['projects']); $this->assertEquals('Project Test', $response['body']['projects'][0]['name']); - $this->assertEquals('Team 1 Project', $response['body']['projects'][2]['name']); + $this->assertEquals('Original Project', $response['body']['projects'][2]['name']); $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ 'content-type' => 'application/json', @@ -402,8 +402,8 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']); - $this->assertCount(3, $response['body']['projects']); - $this->assertEquals('Team 1 Project', $response['body']['projects'][1]['name']); + $this->assertCount(4, $response['body']['projects']); + $this->assertEquals('Original Project', $response['body']['projects'][1]['name']); $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ 'content-type' => 'application/json', @@ -436,6 +436,267 @@ class ProjectsConsoleClientTest extends Scope return $data; } + /** + * @group projectsCRUD + */ + public function testListProjectsQuerySelect(): void + { + $team = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'teamId' => ID::unique(), + 'name' => 'Query Select Test Team', + ]); + + $this->assertEquals(201, $team['headers']['status-code']); + $teamId = $team['body']['$id']; + + $project = $this->client->call(Client::METHOD_POST, '/projects', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'projectId' => ID::unique(), + 'name' => 'Query Select Test Project', + 'teamId' => $teamId, + 'region' => System::getEnv('_APP_REGION', 'default') + ]); + + $this->assertEquals(201, $project['headers']['status-code']); + $projectId = $project['body']['$id']; + + /** + * Test Query.select - basic fields + */ + $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::select(['$id', 'name'])->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']); + $this->assertGreaterThan(0, count($response['body']['projects'])); + + $project = $response['body']['projects'][0]; + $this->assertArrayHasKey('$id', $project); + $this->assertArrayHasKey('name', $project); + $this->assertArrayNotHasKey('platforms', $project); + $this->assertArrayNotHasKey('webhooks', $project); + $this->assertArrayNotHasKey('keys', $project); + $this->assertArrayNotHasKey('devKeys', $project); + $this->assertArrayNotHasKey('oAuthProviders', $project); + $this->assertArrayNotHasKey('smtpEnabled', $project); + $this->assertArrayNotHasKey('smtpHost', $project); + $this->assertArrayNotHasKey('authLimit', $project); + $this->assertArrayNotHasKey('authDuration', $project); + + /** + * Test Query.select - multiple fields + */ + $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::select(['$id', 'name', 'teamId', 'description', '$createdAt', '$updatedAt'])->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']); + $this->assertGreaterThan(0, count($response['body']['projects'])); + + $project = $response['body']['projects'][0]; + $this->assertArrayHasKey('$id', $project); + $this->assertArrayHasKey('name', $project); + $this->assertArrayHasKey('teamId', $project); + $this->assertArrayHasKey('description', $project); + $this->assertArrayHasKey('$createdAt', $project); + $this->assertArrayHasKey('$updatedAt', $project); + $this->assertArrayNotHasKey('platforms', $project); + $this->assertArrayNotHasKey('webhooks', $project); + $this->assertArrayNotHasKey('keys', $project); + $this->assertArrayNotHasKey('devKeys', $project); + $this->assertArrayNotHasKey('oAuthProviders', $project); + $this->assertArrayNotHasKey('smtpEnabled', $project); + $this->assertArrayNotHasKey('authLimit', $project); + + /** + * Test Query.select combined with filters + */ + $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::select(['$id', 'name', 'teamId'])->toString(), + Query::equal('name', ['Query Select Test Project'])->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']); + $this->assertCount(1, $response['body']['projects']); + + $project = $response['body']['projects'][0]; + $this->assertArrayHasKey('$id', $project); + $this->assertArrayHasKey('name', $project); + $this->assertArrayHasKey('teamId', $project); + $this->assertEquals('Query Select Test Project', $project['name']); + $this->assertEquals($teamId, $project['teamId']); + $this->assertArrayNotHasKey('platforms', $project); + $this->assertArrayNotHasKey('webhooks', $project); + $this->assertArrayNotHasKey('keys', $project); + $this->assertArrayNotHasKey('devKeys', $project); + $this->assertArrayNotHasKey('oAuthProviders', $project); + $this->assertArrayNotHasKey('smtpEnabled', $project); + $this->assertArrayNotHasKey('authLimit', $project); + + /** + * Test Query.select combined with limit + */ + $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::select(['$id', 'name'])->toString(), + Query::limit(2)->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']); + $this->assertLessThanOrEqual(2, count($response['body']['projects'])); + + foreach ($response['body']['projects'] as $p) { + $this->assertArrayHasKey('$id', $p); + $this->assertArrayHasKey('name', $p); + $this->assertArrayNotHasKey('platforms', $p); + $this->assertArrayNotHasKey('webhooks', $p); + $this->assertArrayNotHasKey('keys', $p); + $this->assertArrayNotHasKey('devKeys', $p); + $this->assertArrayNotHasKey('oAuthProviders', $p); + $this->assertArrayNotHasKey('smtpEnabled', $p); + $this->assertArrayNotHasKey('authLimit', $p); + } + + /** + * Test Query.select with subquery attributes (platforms, webhooks, etc.) + * When explicitly selected, subqueries should still run + */ + $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::select(['$id', 'name', 'platforms'])->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']); + $this->assertGreaterThan(0, count($response['body']['projects'])); + + $project = $response['body']['projects'][0]; + $this->assertArrayHasKey('$id', $project); + $this->assertArrayHasKey('name', $project); + $this->assertArrayHasKey('platforms', $project); + $this->assertIsArray($project['platforms']); + $this->assertArrayNotHasKey('webhooks', $project); + $this->assertArrayNotHasKey('keys', $project); + $this->assertArrayNotHasKey('devKeys', $project); + $this->assertArrayNotHasKey('oAuthProviders', $project); + $this->assertArrayNotHasKey('smtpEnabled', $project); + $this->assertArrayNotHasKey('authLimit', $project); + + /** + * Test Query.select with expanded attributes + * webhooks and keys should load their subquery data when selected + */ + $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::select(['$id', 'name', 'webhooks', 'keys'])->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']); + $this->assertGreaterThan(0, count($response['body']['projects'])); + + $project = $response['body']['projects'][0]; + $this->assertArrayHasKey('$id', $project); + $this->assertArrayHasKey('name', $project); + $this->assertArrayHasKey('webhooks', $project); + $this->assertArrayHasKey('keys', $project); + $this->assertIsArray($project['webhooks']); + $this->assertIsArray($project['keys']); + $this->assertArrayNotHasKey('platforms', $project); + $this->assertArrayNotHasKey('devKeys', $project); + $this->assertArrayNotHasKey('smtpEnabled', $project); + $this->assertArrayNotHasKey('authLimit', $project); + + /** + * Test Query.select with wildcard '*' + * Should return all fields like no select query + */ + $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::select(['*'])->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']); + $this->assertGreaterThan(0, count($response['body']['projects'])); + + $project = $response['body']['projects'][0]; + $this->assertArrayHasKey('$id', $project); + $this->assertArrayHasKey('name', $project); + $this->assertArrayHasKey('teamId', $project); + $this->assertArrayHasKey('platforms', $project); + $this->assertArrayHasKey('webhooks', $project); + $this->assertArrayHasKey('keys', $project); + $this->assertArrayHasKey('devKeys', $project); + $this->assertArrayHasKey('oAuthProviders', $project); + $this->assertArrayHasKey('smtpEnabled', $project); + $this->assertArrayHasKey('smtpHost', $project); + $this->assertArrayHasKey('authLimit', $project); + $this->assertArrayHasKey('authDuration', $project); + + /** + * Test Query.select with invalid attribute + */ + $response = $this->client->call(Client::METHOD_GET, '/projects', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::select(['$id', 'invalidAttribute'])->toString(), + ], + ]); + + $this->assertEquals(400, $response['headers']['status-code']); + $this->assertEquals('Invalid `queries` param: Invalid query: Attribute not found in schema: invalidAttribute', $response['body']['message']); + + $response = $this->client->call(Client::METHOD_DELETE, '/projects/' . $projectId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertEquals(204, $response['headers']['status-code']); + } + public function testGetProject(): void { // Create a team @@ -618,6 +879,14 @@ class ProjectsConsoleClientTest extends Scope public function testUpdateProjectSMTP($data): array { $id = $data['projectId']; + $smtpHost = System::getEnv('_APP_SMTP_HOST', "maildev"); + $smtpPort = intval(System::getEnv('_APP_SMTP_PORT', "1025")); + $smtpUsername = System::getEnv('_APP_SMTP_USERNAME', 'user'); + $smtpPassword = System::getEnv('_APP_SMTP_PASSWORD', 'password'); + + /** + * Test for SUCCESS: Valid Credentials + */ $response = $this->client->call(Client::METHOD_PATCH, '/projects/' . $id . '/smtp', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], @@ -625,23 +894,23 @@ class ProjectsConsoleClientTest extends Scope 'enabled' => true, 'senderEmail' => 'mailer@appwrite.io', 'senderName' => 'Mailer', - 'host' => 'maildev', - 'port' => 1025, - 'username' => 'user', - 'password' => 'password', + 'host' => $smtpHost, + 'port' => $smtpPort, + 'username' => $smtpUsername, + 'password' => $smtpPassword, ]); $this->assertEquals(200, $response['headers']['status-code']); $this->assertTrue($response['body']['smtpEnabled']); $this->assertEquals('mailer@appwrite.io', $response['body']['smtpSenderEmail']); $this->assertEquals('Mailer', $response['body']['smtpSenderName']); - $this->assertEquals('maildev', $response['body']['smtpHost']); - $this->assertEquals(1025, $response['body']['smtpPort']); - $this->assertEquals('user', $response['body']['smtpUsername']); - $this->assertEquals('password', $response['body']['smtpPassword']); + $this->assertEquals($smtpHost, $response['body']['smtpHost']); + $this->assertEquals($smtpPort, $response['body']['smtpPort']); + $this->assertEquals($smtpUsername, $response['body']['smtpUsername']); + $this->assertEquals($smtpPassword, $response['body']['smtpPassword']); $this->assertEquals('', $response['body']['smtpSecure']); - /** Test Reading Project */ + // Check the project $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id, array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], @@ -651,12 +920,32 @@ class ProjectsConsoleClientTest extends Scope $this->assertTrue($response['body']['smtpEnabled']); $this->assertEquals('mailer@appwrite.io', $response['body']['smtpSenderEmail']); $this->assertEquals('Mailer', $response['body']['smtpSenderName']); - $this->assertEquals('maildev', $response['body']['smtpHost']); - $this->assertEquals(1025, $response['body']['smtpPort']); - $this->assertEquals('user', $response['body']['smtpUsername']); - $this->assertEquals('password', $response['body']['smtpPassword']); + $this->assertEquals($smtpHost, $response['body']['smtpHost']); + $this->assertEquals($smtpPort, $response['body']['smtpPort']); + $this->assertEquals($smtpUsername, $response['body']['smtpUsername']); + $this->assertEquals($smtpPassword, $response['body']['smtpPassword']); $this->assertEquals('', $response['body']['smtpSecure']); + /** + * Test for FAILURE: Invalid Credentials + */ + $response = $this->client->call(Client::METHOD_PATCH, '/projects/' . $id . '/smtp', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'enabled' => true, + 'senderEmail' => 'fail@appwrite.io', + 'senderName' => 'Failing Mailer', + 'host' => $smtpHost, + 'port' => $smtpPort, + 'username' => 'invalid-user', + 'password' => 'bad-password', + ]); + + $this->assertEquals(400, $response['headers']['status-code']); + $this->assertEquals(Exception::PROJECT_SMTP_CONFIG_INVALID, $response['body']['type']); + $this->assertStringContainsStringIgnoringCase('Could not authenticate', $response['body']['message']); + return $data; } @@ -665,6 +954,11 @@ class ProjectsConsoleClientTest extends Scope */ public function testCreateProjectSMTPTests(): void { + $smtpHost = System::getEnv('_APP_SMTP_HOST', "maildev"); + $smtpPort = intval(System::getEnv('_APP_SMTP_PORT', "1025")); + $smtpUsername = System::getEnv('_APP_SMTP_USERNAME', 'user'); + $smtpPassword = System::getEnv('_APP_SMTP_PASSWORD', 'password'); + // Create a team $team = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ 'content-type' => 'application/json', @@ -699,10 +993,10 @@ class ProjectsConsoleClientTest extends Scope 'senderEmail' => 'custommailer@appwrite.io', 'senderName' => 'Custom Mailer', 'replyTo' => 'reply@appwrite.io', - 'host' => 'maildev', - 'port' => 1025, - 'username' => '', - 'password' => '', + 'host' => $smtpHost, + 'port' => $smtpPort, + 'username' => $smtpUsername, + 'password' => $smtpPassword, ]); $this->assertEquals(204, $response['headers']['status-code']); @@ -736,10 +1030,10 @@ class ProjectsConsoleClientTest extends Scope 'senderEmail' => 'custommailer@appwrite.io', 'senderName' => 'Custom Mailer', 'replyTo' => 'reply@appwrite.io', - 'host' => 'maildev', - 'port' => 1025, - 'username' => '', - 'password' => '', + 'host' => $smtpHost, + 'port' => $smtpPort, + 'username' => $smtpUsername, + 'password' => $smtpPassword, ]); $this->assertEquals(204, $response['headers']['status-code']); @@ -752,10 +1046,10 @@ class ProjectsConsoleClientTest extends Scope 'senderEmail' => 'custommailer@appwrite.io', 'senderName' => 'Custom Mailer', 'replyTo' => 'reply@appwrite.io', - 'host' => 'maildev', - 'port' => 1025, - 'username' => '', - 'password' => '', + 'host' => $smtpHost, + 'port' => $smtpPort, + 'username' => $smtpUsername, + 'password' => $smtpPassword, ]); $this->assertEquals(400, $response['headers']['status-code']); @@ -776,7 +1070,7 @@ class ProjectsConsoleClientTest extends Scope ], $this->getHeaders())); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals('Account Verification', $response['body']['subject']); + $this->assertEquals('Account Verification for {{project}}', $response['body']['subject']); $this->assertEquals('', $response['body']['senderEmail']); $this->assertEquals('verification', $response['body']['type']); $this->assertEquals('en-us', $response['body']['locale']); @@ -879,7 +1173,7 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals('Project Test 2', $response['body']['name']); + $this->assertEquals('Project Test', $response['body']['name']); $this->assertArrayHasKey('platforms', $response['body']); $this->assertArrayHasKey('webhooks', $response['body']); $this->assertArrayHasKey('keys', $response['body']); @@ -959,39 +1253,6 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals(15, $response['body']['authDuration']); - // Create session - $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $projectId, - ]), [ - 'email' => $userEmail, - 'password' => 'password', - ]); - - $this->assertEquals(201, $response['headers']['status-code']); - - $sessionCookie = $response['headers']['set-cookie']; - - // Wait 10 seconds, ensure valid session, extend session - \sleep(10); - - $response = $this->client->call(Client::METHOD_GET, '/account', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $projectId, - 'Cookie' => $sessionCookie, - ])); - - $this->assertEquals(200, $response['headers']['status-code']); - - $response = $this->client->call(Client::METHOD_PATCH, '/account/sessions/current', array_merge([ - 'origin' => 'http://localhost', - 'content-type' => 'application/json', - 'x-appwrite-project' => $projectId, - 'cookie' => $sessionCookie, - ])); - - $this->assertEquals(200, $response['headers']['status-code']); - // Wait 20 seconds, ensure non-valid session \sleep(20); @@ -3132,7 +3393,7 @@ class ProjectsConsoleClientTest extends Scope $this->assertContains('users.write', $response['body']['scopes']); $this->assertContains('collections.read', $response['body']['scopes']); $this->assertContains('tables.read', $response['body']['scopes']); - $this->assertCount(3, $response['body']['scopes']); + $this->assertCount(4, $response['body']['scopes']); $this->assertArrayHasKey('sdks', $response['body']); $this->assertEmpty($response['body']['sdks']); $this->assertArrayHasKey('accessedAt', $response['body']); @@ -3151,7 +3412,7 @@ class ProjectsConsoleClientTest extends Scope $this->assertContains('users.write', $response['body']['scopes']); $this->assertContains('collections.read', $response['body']['scopes']); $this->assertContains('tables.read', $response['body']['scopes']); - $this->assertCount(3, $response['body']['scopes']); + $this->assertCount(4, $response['body']['scopes']); $this->assertArrayHasKey('sdks', $response['body']); $this->assertEmpty($response['body']['sdks']); $this->assertArrayHasKey('accessedAt', $response['body']); @@ -5086,8 +5347,8 @@ class ProjectsConsoleClientTest extends Scope $this->assertEmpty($response['body']); /** - * Get rate limit trying to use the deleted key - */ + * Get rate limit trying to use the deleted key + */ $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', [ 'content-type' => 'application/json', 'x-appwrite-project' => $projectId,